Android串口开发

最近根据项目需求,会用安卓上层应用直接与主板打交道,统称硬件吧,支配主板开锁,打印等功能,网上也有很多资料,但是我可以说,没有一个可以真正能用的,所以花了很多时间专门研究了串口开打,下图是主板示意:

Android串口开发入门,来一场与硬件的亲密接触

安卓工业主板

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。不管是windows、linux、或是android操作系统,串口编程无非是以下几步:

  1. 打开串口

  2. 串口配置

  3. 串口操作(读写)

  4. 关闭串口

这个项目基于谷歌的开源项目android-serialport-api,是Android使用jni直接进行串口设备的读写的一个开源库,所以你不必担心NDK的门槛,项目就不过多介绍了,今天主要来介绍一下如何使用这个开源项目进行串口操作。

一、android-serialport-api简单介绍

android-serialport-api下载:https://github.com/cepr/android-serialport-api

android-serialport-api下有两个主要的类以及jni类和.so文件:

Android串口开发入门,来一场与硬件的亲密接触

二、引入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目录,分别拷贝相关源码到相应的目录下,直接给图:

Android串口开发入门,来一场与硬件的亲密接触

记得重新编译一下项目Bulid/Make Project,到这里,开源库基本上引入就结束了。

三、串口操作

(1)、串口的硬件地址以及波特率这两个参数是必须的,我新建了一个SerialPortUtil类,采用的单例模式,下图为开串口

Android串口开发入门,来一场与硬件的亲密接触

(2)、发送数据给串口

Android串口开发入门,来一场与硬件的亲密接触

(3)、接受串口返回数据

Android串口开发入门,来一场与硬件的亲密接触

注意:

mInputStream.read(buffer)

这一句会阻塞主线程,假如没有数据返回,程序就会直接崩掉,我为了演示没有写线程操作,真正的应该是开启一个子线程来循环读取数据。

(4)、串口的关闭

Android串口开发入门,来一场与硬件的亲密接触

好了,基本上流程就是这些了,至于如何处理以及优化,就看具体的需求了。

猜你喜欢

转载自blog.csdn.net/tectrol/article/details/82319670