欢迎来到天天文库
浏览记录
ID:23184542
大小:59.50 KB
页数:6页
时间:2018-11-05
《基于android平台的串口通信实现 》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Android平台的串口通信实现 摘要:串口在数据通信中应用广泛,但AndroidSDK指定使用Java作为第三方应用开发语言,这给C语言实现串口应用带来了困难。虽然GoogleAndroid已经发布了NDK(NativeDevelopmentKit,原生态开发包),支持开发者用C/C++语言开发Android程序,但目前官方提供的技术指导比较简略。通过开发一个Android下串口通信应用实例,详细介绍了AndroidNDK的开发流程,帮助开发人员快速的完成平台搭建。 关键词:Android;ND
2、K;JNI;SDK;串口 SerialmunicationBasedAndroidPlatform JINZhi-yi,ZHANGJi (VehicleCollege,TongjiUniversity,Shanghai201804,China) Abstract:Serialmunicationisunication,buttheAndroidSDKusestheJavalanguageasadesignatedthird-partyapplicationdevelopment,akesitdif
3、ficulttoachieveserialapplicationsentKit)entofserialmunicationunderanAndroidplatformasanapplicationexample,articlegivesathoroughlydescriptionoftheAndroidNDKdevelopmentprocessthatcanhelpdevelopersquicklybuildplatforms. KeyentKit的简称。它是一个工具集,集成了Android的交叉编译环
4、境,并提供了一套比较方便的Makefile,可以帮助开发者快速开发C或是C++的动态库,并自动的将so动态库和java程序打包成apk,在Android上运行。有两个理由使用NDK:一是合理的重用现有的代码;二是在程序中某些关键的部分提高执行效率。 AndroidNDK目前作为AndroidSDK的一个附加组件提供,开发者须先安装AndroidSDK方可使用NDK。在WindoD的Shell环境界面,可以使用大部分Linux软件和功能。使用它我们可以方便的在WindoacOSX(intel)、Linux
5、32/64(x86),下载后解压即可使用。文中使用Windows版本的NDK,版本为android-ndk-r5。将它解压到某个目录下,文中我们将NDK安装到D:androidandroid-ndk-r5目录中。 2.2安装Cygake1.10、binutils、gcc-core、gcc4-core、gdb、pcre、pcre-devel、GNUae/usrname)的.bash_profile文件,在文件尾部加入如下代码, NDK=/cygdrive/d/android/android-ndk-
6、r5 exportNDK 然后重新启动Cygp;iscopy); LOGD("Openingserialport%s",path_utf); 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
7、_SHARED_LIBRARY) LOCAL_PATH:=$(callmy-dir)这句用来指定编译的路径通过调用宏my-dir获取到当前工作的路径。 include$(CLEAR_VARS)CLEAR_VARS这个变量是编译系统提供的用来指明一个GNUmakefile文件添加这句主要的目的是清理所有的LOCAL_XXX,比如LOCAL_MODULE、LOCAL_SRC_FILES等。在每个新模块的开始处需要添加这句。 LOCAL_MODULE:=serial_port这句定义了模块名称,将来编译的
8、库或者可执行程序就以此命名。如果编译的是动态库或者静态库,那么库名就是libserial_port.so或者libserial_port.a。需要注意的是系统会在生成动态库或者静态库的时候自动添加lib的前缀。 LOCAL_SRC_FILES:=SerialPort.c是列出需要编译的源码文件名。这里不需要列出头文件和被包含文件,因为编译系统会自动为你添加。 include$(BUILD_SHARED_LIBRARY)这句
此文档下载收益归作者所有