求教Android蓝牙串口开发OutputStream发送数据失败的问题

求教Android蓝牙串口开发OutputStream发送数据失败的问题,第1张

1、首先确保你发送的数据正确的,串口接收到这个数据后他能识别,并返回你想要的数据,如果你发送的命令本身不要求返回数据,inputstream是读取不到数据的。2、其次,要确保发送数据的格式正确,比如一段16进制数据,你定义为String="01230545"类型,然后发送的时候out.write(str.getBytes())这样发送的数据是不对的,应该定义一个byte型的数组,然后发送这个数组3、以上你都确保没问题了,你可以用循环去读取数据,当读到的内容大于0时停止读取。用循环读取你要确保你已经设置读取的超时时间了,不然程序有可能阻塞。

网上有个叫SerialPort的安卓开源工程,你可以下载下来参考

http://zhidao.baidu.com/question/323825491.html?fr=qrl&cid=93&index=1

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

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

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

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

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

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


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

原文地址:https://54852.com/sjk/10835237.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存