android 平板(应用层)通过串口与MCU通讯

993 阅读2分钟

引言:

应用层APP的开发者当遇到MCU通信任务时,相信大家当时的心情应该都是一样的,那就是充满了 “兴奋”与“喜悦”同时还夹杂着那么一丝丝“担忧”。

开始查找相关文件

通过查找线上文档知道Google公司在2011年开源的Google官方源代码可以帮助应用层通过串口通信的方式接受和下发指令到MCU,而且其中文档中对so包的导入、jni文件的引用 、串口查找与连接的方式都有很详细的介绍,心想用这官方Demo就可以成功50%了。可当我第一次打开这个github地址的时候,心里开始放嘀咕了因为这个项目是10年以前的,我列个天,同时我又给自己心想安慰道:“硬件技术本身更新的慢,串口通信10年间应该也没有变多少”,不管怎样先试试。结果是项目在AS上都没有正常跑起来(这点确实是自己没有原因,没有再多花时间去排除原因)

sx.jpg

不过到这里为止还是有很大的收获的

  • 谷歌有提供串口通信技术
  • Android串口连接是通过本地串口地址+波特率来连接的
  • android机器必须要先root
  • 串口是通过流来读写指令数据

找到合适的串口通信第三方

终于不断尝试几个方法后找到了Fork自Google开源的Android串口通信这个lib,通过自己测试后可以成功的连接上串口地址(这个地址需要与你对接方告诉你或者自己找到地址列表一个个试,反正波特率一般都是9600)同时还可以设置 数据位、无校验位、停止位 。

src=http___qqpublic.qpic.cn_qq_public_0_0-2869290013-74E1453B141CF63FE963FEA84EF4C282_0_fmt=jpg&size=13&h=400&w=400&ppv=1.jpg&refer=http___qqpublic.qpic.jpg

到这里为止的收获:

  • 串口通信方式可以如此简单

通信协议的敲定

这里因各个涉及到公司产品信息不做过多记录 这里为止还是有很大的收获的:

  • 以一个byte作为一帧数据
  • 一个字节最大的数字为255
  • 单片机的缓存区太小所以它们数据必须立马写出。
  • CRC校验 其实是一组字节一个个字节重复一套公式计算后的值,再和CRC比较

实现与串口连接只是与MCU通讯的读写基础,在应用层对串口数据流的提取、校验、拆解、拼装、高低位的解读才是高潮环节

参考:

Android串口通信:抱歉,学会它真的可以为所欲为

licheedev/Android-SerialPort-API