Python中的十六进制格式

2024-10-01 13:44:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这件事上已经有一段时间了。我需要用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

…帮忙?在


Tags: 数据dev命令示例格式serial数据包ser
2条回答

\xij只是扩展到字符chr(int(ij, 16)) 既然你是在发送字节,我想在循环中说,发送你的第一个块。不要添加任何内容,然后通过chr(int(n),16)发送分隔符,然后发送下一个块。这应该能解决你的问题。在

如果不是将x定义为'\\x'"%0.2x"%(n),而是x = chr(n),那么一切都应该正常。在

相关问题 更多 >