串口开打下图是主板示意:安卓工业主板串口通信的概念

最近根据项目的需要,会使用Android上层应用直接与主板打交道,统称为硬件。它控制主板的功能,例如解锁和打印。网上也有很多资料,但是我可以说没有一个是真的可以用的,所以花了很多时间。专门研究了串口打开,下图是主板示意图:

安卓工业主板

串口通信的概念很简单,串口按位发送和接收字节。虽然比逐字节并行通信慢,但串行端口可以使用一根线发送数据,同时使用另一根线接收数据。它很简单,可以实现远距离通信。无论是windows、linux,还是android操作系统,串口编程无非就是以下几个步骤:

打开串口

串口配置

串口操作(读写)

关闭串口

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

一、android-serialport-api 简介

android-serialport-api 下载:

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

二、引入android-serialport-api

以androidStudio为例,可以直接和eclipse朋友一起导入,源码是ecl​​ipse版本

(1),新建一个android项目,建一个包android-serialport-api,把调用c语言写的动态链接库的java类用c语言实现串口通信,也就是第一步介绍的两个类,进入src文件夹下的android_serialport_api包,包名一定要命名为this用c语言实现串口通信,因为对JNI有一定了解的人会知道,在写C语言链接库的时候,函数名是跟包名相关的调用它的类,一旦包名与链接库中的函数名不匹配,就无法调用链接库的函数。

(2),在src/main下新建jni和jinLibs目录,将相关源码复制到对应目录,直接给图:

记得重新编译项目 Buid/Make Project。至此,开源库的介绍基本结束。

三、串口操作

(1),串口的硬件地址和波特率是需要的两个参数。我新建了一个SerialPortUtil类,使用的是单例模式。下图是串口打开。

(2),发送数据到串口

(3),接受串口返回的数据

注意:

mInputStream.read(buffer)

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

(4),关闭串口

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

如果您有任何问题,欢迎您与我们交流。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论