我一直坚持这一段时间了。我需要发送一个串行命令到python的设备。下面是格式的示例:十六进制格式在Python中
ser = serial.Serial('/dev/ttyO1',baudrate=115200)
ser.write('\xAA\x04\x05\x00\x00\x00')
我可以,如果我通信使用的格式.WRITE沟通就好了(〜十六进制字节〜)
然而,当我需要接受更大的块数据,设备的通信协议将事情分成数据包,我必须确认接收每个数据包。为了避免在为每个数据包输入单独的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
...帮助?
哇。你是天才,今天我是n00b。谢谢乔纳森! – LapTux 2012-08-03 18:57:51