我已经坚持了一段时间了。我需要向 python 中的设备发送串行命令。以下是格式示例:
ser = serial.Serial('/dev/ttyO1',baudrate=115200)
ser.write('\xAA\x04\x05\x00\x00\x00')
如果我使用 .write(~hex bytes~) 格式进行交流,我就可以正常交流
但是,当我需要接收更大的数据块时,设备的通信协议会将内容拆分为数据包,我必须确认接收到每个数据包。为了避免在为每个数据包输入单独的 ser.write() 命令时出现腕管综合症,我想编写一个循环来为我进行数据包计数/确认。这就是我所拥有的:
for n in range(0,num_packets,1):
x = '\\x'"%0.2x"%(n)
print('Picture Ready Host Ack')
ser.write('\xAA\x0E\x00\x00' + x + '\x00')
time.sleep(.1)
response = ser.read(ser.inWaiting())
image_write(response,base_path, filename)
但是,双斜杠 ('\x'..) 给了我两个斜杠:
'\xaa\x0e\x00\x00\\x05\x00'
当我定义变量 x 时,单个斜杠 ('\x'...) 会返回问题:
ValueError: invalid \x escape
...帮助?