2013-02-22 30 views
1

我想向设备发送两行ASCII文本,但设备读取这两行作为一行附加。是延迟还是错误的结束字符?我似乎看不出问题。使用pySerial发送的ASCII文本变成附加在终端设备

import serial 
ser = serial.Serial('/dev/cu.usbserial-FTVFV0X7', 19200, timeout=10) 
ser.write("x0") 
ser.flush() 
ser.write("11") 
ser.flush() 

端设备接收此作为x011代替x011

当从普通的终端程序进行测试时,单独接收两条线路是没有问题的。

+0

它还会收到什么? 0x0 + 11 = 0x011。 – 2013-02-22 18:53:24

+0

@肯,请不要误会。我正在谈论ASCII字符而不是HEX。 – JavaCake 2013-02-22 18:54:14

+0

@bernie,实际上是做了一个新行,但问题是第二行是作为'\ n11'接收的。新的char char将会搞乱一切。 – JavaCake 2013-02-22 18:56:30

回答

0

许多硬件串行设备使用回车来表示行或指令的结束。不知道你想传达问心无愧(或预计协议)是什么设备,我可能会建议尝试

ser.write("x0\r") 
ser.flush() 
ser.write("11\r") 

正如documentation表示,pySerial不支持EOL参数readline()不再所以,如果设备正在向您回复(并且正在使用\r已终止的行),那么您应该按照建议进行操作,并使用io.TextIOWrapper以及适当的超时值来解析传入数据。

相关问题