Android串口开发总结

在嵌入式的开发中,经常会用到串口通信,用来和不同的硬件模块通信。比如最近我在开发行车记录仪,就用到了串口通信,串口就像一个桥梁,连接起了核心板(imax6)和行车记录仪(DVR)之前的数据通路。
使用串口,分为以下几个步骤:
1、导入Google的开源串口项目,此项目通过jni的方式提供了打开和操作串口的方法,同时也提供了java层代码的示范使用。代码地址:https://github.com/jzt-Tesla/android-serialport-api。 当然,我们完全可以自己建立一个jni工程,然后实现串口的底层操作。

2、设置串口设备节点和比特率。这是很重要的一步,设备节点必须要和通信的设备节点一致,同时比特率也要设置一致,这样才能正常通讯上。

3、打开串口,并获取到关联串口的输入流和输出流,InputStream和OutputStream。启动一个子线程并while循环,不停地从输入流InputStream读取数据,并把读到的有效数据传递给应用。同时,可以通过输出流OutputStream写入数据到串口中,然后把数据给到设备。

4、使用串口后,关闭子线程,关闭输入输出流通道,关闭串口。

开发中需要注意以下几点:
1、串口通讯的数据是bit流的形式传递,串口相当于一个转接的缓冲池,一个设备往里面丢数据,另一个设备就不停往外面取数据,如果没有数据就阻塞。串口数据都是一帧一帧的发送,而且都是有数据协议格式的,一般分为协议头、数据段、校验三个部分组成。
2、串口数据的读取,有时候并不能一次性读取完整,需要通过缓存拼接的方式,获取到完整的一帧数据。比如DVR设置发送了一个 aa 4d 44 07 21 f1 54,但是第一次从输入流读到的数据只有一个aa,这个时候肯定校验不过,但是也不能把数据丢掉,而是拷贝到一个byte[]数组换粗起来,第二次读到 4d 44 07 21 f1 54,再把数据拼接到aa 后面,这个时候再校验就可以通过,变成了有效的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值