Android开发之串口通信:AndroidSerialPort

Android开发之串口通信:AndroidSerialPort,第1张

Android 串口通信,基于 谷歌官方android-serialport-api 编译

项目github地址: https://github.com/AIlll/AndroidSerialPort

读取数据时很可能会遇到分包的情况,即不能一次性让枯行读取正确的完整的数据

解决办法:可以在读取到数据时,让读取数据的线程sleep一段时间,等待数据全部接收完,再一次性读取出来。这样应该可以避免大部分的分包情况

只接收一条数据的情况下,以上方法可以应对数据分包,数据量多的情况下需要考虑是否会因为sleep导致接收多条数据,可以根坦哗据通败罩信协议核对包头包尾等参数。

打开串口时,会检测读写权限,当没有权限时,会尝试对其进行提权

最近有项目需要实现windows机器和Android开发版进行UART串口通信,经过3天查找尝乱哪试,特记录一下最终方案,希望之后的同行少走弯路,最后在git上回开源哗悉码我最终的方案希望大家支持。

Android 3.0.1

Gradle 4.1

ARM开发版 : RK3399

PC机器:Win10

开发机器:MAC 10.13.3

先上图

由于 android-serialport-api 项目中的so使用较old的ndk编译,所以在对于Android 6.0 以上版本兼容的时候会报错 dlopen failed: "has text relocations" 。且使用的mk进行编译,特升级为用cmake编译。

升级 android-serialport-api

项目结构:

app对应原项目中的各个Activity, androidserial 是module 对应编译之前的so,还有API的封装。可以直接引用androidserial,调用方法参考app目录下的activity。

注意 关于权限!

当接入开发板后如果发现 Error You do not have read/write permission to the serial port 需要root 权限 ,在开发者模式中开启root 权限 adb和应用

使用一下命令开启Android对串口的读写权限

setenforce 0 : 关闭防火墙,有人说关键是这,但是我的环境不用关闭,只要给权限就可以

注意 关于ttyS1 - 6 ttyS1 - 6 对应的是 UART 串口1-6 一般都是一一对应的。这个具体要看一下开发板的说明。

记录的比较糙,还请见谅,如有问题陆档请留言,我看到后肯定回复。项目主要看结构,剩下的都是复制黏贴的事。 git地址:https://github.com/braincs/AndroidSerialLibrary


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8264724.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存