欢迎来到天天文库
浏览记录
ID:9727716
大小:61.00 KB
页数:7页
时间:2018-05-06
《浅谈基于android平台的串口通信实现 》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、浅谈基于Android平台的串口通信实现 摘要:串口在数据通信中利用广泛,但AndroidSDK指定使用Java作为第3方利用开发语言,这给C语言实现串口利用带来了困难。当然GoogleAndroid已经经发布了NDK(NativeDevelopmentKit,原生态开发包),支撑开发者用C/C++语言开发Android程序,但目前官方提供的技术指导比较简略。通过开发1个Android下串口通信利用实例,具体先容了AndroidNDK的开发流程,帮助开发职员快速的完成平台搭建。 关键词:Android;NDK;JNI;SDK;串口 Android是Google推出
2、的基于Linux的开源操纵系统,是1个专门针对于挪动设备设计的软件平台,包孕操纵系统、中间件以及1些关键利用。它的软件架构囊括4个层次,从高到低分别为利用层、利用框架层、系统运行层以及linux内核层,如图一所示。每一1个Android利用程序都在它自己的入程中运行,都具备1个独立的Dalvik虚拟机实例。Android发布初期,Google就表示其虚拟机Dalvik支撑JNI编程方式,也就是第3方利用完整可以使用JNI调用自己的C动态库,但Google官方并无明确表示支撑开发者使用这类法子。终究在二00九年六月,GoogleAndroid发布了NDK,它支撑开发者使用
3、C/C++语言开发Android程序。作为AndroidSDK的1个附加组件提供,开发者必须先安装AndroidSDK方可使用NDK。NDK的目的是为了增添代码的重用性及加快程序的运行速度,这有益于开发者从其他系统上移植软件到Android平台。 一AndroidNDK简介 在Android上利用程序的开发大部门基于Java语言来实现。要使用C或者是C++的程序或者库,就需要使用NDK来实现。NDK是NativeDevelopmentKit的简称。它是1个工具集,集成为了Android的交叉编译环境,并提供了1套比较方便的Makefile,可以帮助开发者快速开发C或
4、者是C++的动态库,并自动的将so动态库以及java程序打包成apk,在Android上运行。有两个理由使用NDK:1是合理的重用现有的代码;2是在程序中某些关键的部门入步履行效率。 AndroidNDK目前作为AndroidSDK的1个附加组件提供,开发者须先安装AndroidSDK方可使用NDK。在e)的.bash_profile文件,在文件尾部加进以下代码, NDK=/cygdrive/d/android/android-ndk-r五 exportNDK 然后从新启动Cygwin。输进cd$NDK,假设输出上面配置的/cygdrive/e/android-
5、ndk-r五信息,则表明环境变量设置胜利了。接下来便可以够用Cygwin来编译咱们的NDK代码了。 三AndroidNDK开发实例 开发实例是1个Android平台上的收音机程序,该利用通过调用串口API与外围收音机芯片通信,入而节制收音机芯片完成搜台、显示等功能。 AndroidNDK开发1般有下列步骤: 一)JNI接口设计; 二)使用C/C++实现本地法子; 三)天生动态链接库; 四)将动态链接库复制到Java工程,天生.apk文件。 首先,创立1个NDK工程,然后在这个文件夹下树立jni以及src两个目录,jni用来寄存咱们的C文件,src是调用C
6、库的Java接口文件。接着创立jni/SerialPort.c,该文件的主要作用是完成串口的打开以及封锁。JNIEXPORTjobjectJNICALLJava_android_serialport_SerialPort_open(JNIEnv*env,jobjectthiz,jstringpath,jintbaudrate){ …… /*Openingdevice*/ constchar*path_utf=(*env)-GetStringUTFChars(env,path,iscopy); LOGD("Openingserialport%s",path_utf
7、); fd=open(path_utf,O_RDakefile。文件内容 LOCAL_PATH:=$(callmy-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$(CLE
此文档下载收益归作者所有