引言:
应用层APP的开发者当遇到MCU通信任务时,相信大家当时的心情应该都是一样的,那就是充满了 “兴奋”与“喜悦”同时还夹杂着那么一丝丝“担忧”。
开始查找相关文件
通过查找线上文档知道Google公司在2011年开源的Google官方源代码可以帮助应用层通过串口通信的方式接受和下发指令到MCU,而且其中文档中对so包的导入、jni文件的引用 、串口查找与连接的方式都有很详细的介绍,心想用这官方Demo就可以成功50%了。可当我第一次打开这个github地址的时候,心里开始放嘀咕了因为这个项目是10年以前的,我列个天,同时我又给自己心想安慰道:“硬件技术本身更新的慢,串口通信10年间应该也没有变多少”,不管怎样先试试。结果是项目在AS上都没有正常跑起来(这点确实是自己没有原因,没有再多花时间去排除原因)
不过到这里为止还是有很大的收获的
- 谷歌有提供串口通信技术
- Android串口连接是通过本地串口地址+波特率来连接的
- android机器必须要先root
- 串口是通过流来读写指令数据
找到合适的串口通信第三方
终于不断尝试几个方法后找到了Fork自Google开源的Android串口通信这个lib,通过自己测试后可以成功的连接上串口地址(这个地址需要与你对接方告诉你或者自己找到地址列表一个个试,反正波特率一般都是9600)同时还可以设置 数据位、无校验位、停止位 。
到这里为止的收获:
- 串口通信方式可以如此简单
通信协议的敲定
这里因各个涉及到公司产品信息不做过多记录 这里为止还是有很大的收获的:
- 以一个byte作为一帧数据
- 一个字节最大的数字为255
- 单片机的缓存区太小所以它们数据必须立马写出。
- CRC校验 其实是一组字节一个个字节重复一套公式计算后的值,再和CRC比较