我在这件事上已经有一段时间了。我需要用python向设备发送一个串行命令。下面是一个格式示例:
ser = serial.Serial('/dev/ttyO1',baudrate=115200)
ser.write('\xAA\x04\x05\x00\x00\x00')
如果我使用格式进行通信,我可以很好地进行通信。write(~hex bytes~)
然而,当我需要接收更大的数据块时,设备的通信协议将数据分成多个数据包,我必须确认接收到每个数据包。避免在打印个人信息时出现腕管综合征ser.写入()命令为每个包我想写一个循环,为我做包计数/确认。以下是我所拥有的:
^{pr2}$但是,双斜杠('\x'..)给了我两个斜杠:
'\xaa\x0e\x00\x00\\x05\x00'
当我定义变量x时,一个斜杠('\x'…)返回一个问题:
ValueError: invalid \x escape
…帮忙?在
\xij
只是扩展到字符chr(int(ij, 16))
既然你是在发送字节,我想在循环中说,发送你的第一个块。不要添加任何内容,然后通过chr(int(n),16)
发送分隔符,然后发送下一个块。这应该能解决你的问题。在如果不是将
x
定义为'\\x'"%0.2x"%(n)
,而是x = chr(n)
,那么一切都应该正常。在相关问题 更多 >
编程相关推荐