串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。不管是windows、linux、或是android操作系统,串口编程无非是以下几步:打开串口串口配置串口操作(读写)关闭串口
这个项目基于谷歌的开源项目android-serialport-api,是Android使用jni直接进行串口设备的读写的一个开源库,所以你不必担心NDK的门槛,项目就不过多介绍了,今天主要来介绍一下如何使用这个开源项目进行串口操作。
一、android-serialport-api简单介绍android-serialport-apiandroid-serialport-api下有两个主要的类以及jni类和.so文件:
二、引入android-serialport-api以androidStudio为例,用eclipse的朋友直接导入即可,源码就是eclipse版的(1)、新建android项目,建包android-serialport-api,将调用c语言写成的动态链接库的java类,也就是第一步中介绍的两个类放入到src文件夹下的android_serialport_api包下,这里一定要将包名命名成这个,因为对JNI有一定了解的人就会知道,在写c语言链接库时候,函数的命名是和调用它的类所在的包名相关的,一旦包名与链接库中函数的命名不相符,就不能调用链接库的函数。jin(2)、在src/main下新建jni、jinLibs目录,分别拷贝相关源码到相应的目录下,直接给图:
得重新编译一下项目Bulid/Make Project,到这里,开源库基本上引入就结束了。
三、串口操作(1)、串口的硬件地址以及波特率这两个参数是必须的,我新建了一个SerialPortUtil类,采用的单例模式,下图为开串口
(2)、发送数据给串口
(3)、接受串口返回数据
注意:mInputStream.read(buffer)这一句会阻塞主线程,假如没有数据返回,程序就会直接崩掉,我为了演示没有写线程操作,真正的应该是开启一个子线程来循环读取数据。
(4)、串口的关闭
好了,基本上流程就是这些了,至于如何处理以及优化,就看具体的需求了。END
接受各位的意见建议,欢迎评论,也希望能对需要的人有点帮助。