77范文网 - 专业文章范例文档资料分享平台

浅谈基于Android平台的串口通信实现(2)

来源:网络收集 时间:2012-06-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

  Android NDK开发1般有下列步骤:
  一) JNI接口设计;
  二) 使用C/C++实现本地法子;
  三) 天生动态链接库;
  四) 将动态链接库复制到Java工程,天生.apk文件。
  首先,创立1个NDK工程,然后在这个文件夹下树立jni以及src两个目录,jni用来寄存咱们的C文件,src是调用C库的Java接口文件。接着创立jni/SerialPort.c,该文件的主要作用是完成串口的打开以及封锁。

 

JNIEXPORT jobject JNICALL Java_android_serialport_SerialPort_open(JNIEnv *env, jobject thiz, jstring path, jint baudrate) {
  ……
  /* Opening device */
  const char *path_utf = (*env)-GetStringUTFChars(env, path, &iscopy);
  LOGD("Opening serial port %s", path_utf);
  fd = open(path_utf, O_RDWR | O_DIRECT | O_SYNC);
  LOGD("open() fd = %d", fd);
  (*env)-ReleaseStringUTFChars(env, path, path_utf);
  ……
  /* Configure device */
  ……
  struct termios cfg;
  cfmakeraw(&cfg);
  cfsetispeed(&cfg, speed);
  cfsetospeed(&cfg, speed);
  }
  在文件中,函数名这样定义:
  jobject JNICALL Java_android_serialport_SerialPort_open,这个是JNI的尺度,定义需要依照以下格局:Java_packagename_classname_methodname
  接着创立文件jni/Android.mk.这个文件是咱们本地c代码的Makefile。文件内容  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  LOCAL_MODULE:= serial_port
  LOCAL_SRC_FILES := SerialPort.c
  LOCAL_LDLIBS:= -llog
  include $(BUILD_SHARED_LIBRARY)
  LOCAL_PATH:=$(callmy-dir)这句用来指定编译的路径通过调用宏my-dir获患上到当前工作的路径。
  include$(CLEAR_VARS) CLEAR_VARS这个变量是编译系统提供的用来指明1个GNU makefile文件添加这句主要的目的是清算所有的LOCAL_XXX,好比LOCAL_MODULE、LOCAL_SRC_FILES等。在每一个新模块的开始处需要添加这句。
  LOCAL_MODULE := serial_port这句定义了模块名称,将来编译的库或者者可履行程序就以此命名。假设编译的是动态库或者者静态库,那么库名就是libserial_port.so或者者libserial_port.a。需要留神的是系统会在天生动态库或者者静态库的时候自动添加lib的前缀。
  LOCAL_SRC_FILES := SerialPort.c是列出需要编译的源码文件名。这里不需要列出头文件以及被囊括文件,因为编译系统会自动为你添加。
  include$(BUILD_SHARED_LIBRARY)这句说明将来发生的库是共享库即动态链接库。
  接着,咱们便可以够在cygwin下编译天生库文件了。如图二所示,入进到工程目录下,运行ndk-build命令,天生了名为libserial_port.so的文件。
  将该文件安装到工程目录下的libs“armeabi目录中。然后在src目录下编写的serialport.java文件,该文件用于JNI接口调用。关键代码
  public class SerialPort {
  ……
  /*open the serial port*/
  mFd = open(device.getAbsolutePath(), baudrate);
  // JNI
  private native static FileDescriptor open(String path, int baudrate);
  public native void close();
  static {
  System.loadLibrary("serial_port");
  }
  }
  private native static FileDescriptor open(String path, int baudrate)这句申明,带有native关键字,说明该法子是本地法子。System.loadLibrary("serial_port")这句就是用来加载咱们的c动态库的。上面声明法子的详细实现就在咱们加载的库中。
  在完成为了上述工作后,咱们便可以够针对于详细利用来使用串口完成数据通信了。文中通过按键搜台,并显示出详细频段。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说工学类浅谈基于Android平台的串口通信实现(2)在线全文阅读。

浅谈基于Android平台的串口通信实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/lunwen/gongxue/118890.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: