我正在尝试向设备发送两行ASCII文本,但设备将这两行读作一行附加。这是延迟还是错误的结束问题?我似乎无法看到问题。
import serial
ser = serial.Serial('/dev/cu.usbserial-FTVFV0X7', 19200, timeout=10)
ser.write("x0")
ser.flush()
ser.write("11")
ser.flush()
最终设备会收到x011
而不是x0
和11
。
从普通终端程序测试时,单独接收两条线路没有问题。
答案 0 :(得分:0)
许多硬件串行设备使用回车来指示线路或指令的结束。如果不知道你试图传达什么设备(或它所期望的协议),我可能会建议尝试
ser.write("x0\r")
ser.flush()
ser.write("11\r")
如documentation所示,pySerial不再支持readline()
的EOL参数,因此如果设备正在向您发送回复(并且正在使用\r
终止的行)然后你应该按照建议做,并使用io.TextIOWrapper
和适当的超时来解析传入的数据。