Android 串口通信

先说我的应用场景,一块带串口的android板子跟一个外设通过串口直接通信,控制这个外设的启停。如图1(公司规定不能透露太多,只拍了一部分


图1

开发必备:

1、开源项目

现在关于android串口通信都是根据Google提供的开源项目在实现。

Google开源项目地址      

GitHub下载地址

2、了解串口通信流程。

  流程:打开串口(需要配置串口号和比特率) ---> 写串口 ---> 读串口 ---> 关闭串口

  注意:1)串口号来源:看你的串口线插在哪个串口上,以图1为例,如果接的是com1口,那么串口号我这边选择的/dev/ttys0,一次类推。/dev/ttys0是通过ADReaderInterface.GetSerialPortPath()搜索到的串口路径。

          2)比特率来源:接入设备的波特率有厂商指定。直接跟设备商要就行。

3、对jni有一定的了解

 关于Android 串口的使用google并没有向上层开源,所以会用到jni去调用C层的

jni的调用 网上已经很多博客都有讲解,自行去百度吧。

项目结构

图2

注:加入jni文件夹,libs文件和src中加入android_serialport_api文件夹(包名一定是这个,不能改)

接下来就是coding了,按流程来。

一、配置串口号和比特率,打开串口

1、我这边是 直接搜索所有的串口号地址加到spinner中,用户根据需求自己选择。

private static int baudrate = 115200; //波特率

图3

2、打开串口

android_serialport_api.SerialPort serialPortMenSuo = null;

serialPortMenSuo = new android_serialport_api.SerialPort(

new File(sn_mensuo.getSelectedItem().toString()),baudrate,0);

注:android_serialport_api.SerialPort 这个方法在上面复制进来的src下的SerialPort.java文件下。参数含义见下图

图4

二、读写数据

1、写数据(向串口设备发送命令)

图5

把字符串转成字节数组。

2、读数据(串口设备向android设备发送数据)

图6

IDateDeal是一个自定义接收数据的接口

private interface IDataDeal {

        public void onDataReceived(byte[] buffer, int size);

}

ReadThread 顾名思义这个是读取数据的线程

图7

三、关闭串口

图8

至此 所有的流程都走完了,基本功能也都实现了。祝各位一切顺利....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容