上一篇提到,最近在用PC通过串口从蓝牙模块读取Android端发来的数据
又遇到一个问题
先上代码
while True:
return_str = self.ser.readline()
if return_str:
if return_str == b'connected':
print("设备已经连接")
elif return_str == b'disconnected':
print('设备主动断开连接')
else:
var = str(binascii.b2a_hex(return_str))[2:-1].upper()
print('接收到数据:%s' % var)
遇到的问题呢
手机端发送过来的是 AA0002000A00BB
结果这边读取了两行数据
接收到数据:AA0002000A
接收到数据:00BB
这就尴尬了,我需要用AABB识别指令,分两行肯定有问题
后来想起来 0A 0D 一个回车一个换行,这两个遇到了肯定会换行
我使用的readline局限性就来了,
后来经过查询应该使用
while True:
count = self.ser.inWaiting()
if count > 0:
return_str = self.ser.read(count)
if return_str == b'connected':
在使用Python进行串口通信时,遇到Android蓝牙模块发送的0A0D(回车换行)数据导致读取错误。尝试使用readline()和read()结合方式仍无法解决问题。最终通过结合inWaiting()和time.sleep()成功避免了数据分包,解决了换行问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



