使用pySerial发送的ASCII文本将附加在终端设备上

时间:2013-02-22 18:47:40

标签: python serial-port pyserial plc

我正在尝试向设备发送两行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

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

1 个答案:

答案 0 :(得分:0)

许多硬件串行设备使用回车来指示线路或指令的结束。如果不知道你试图传达什么设备(或它所期望的协议),我可能会建议尝试

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

documentation所示,pySerial不再支持readline()的EOL参数,因此如果设备正在向您发送回复(并且正在使用\r终止的行)然后你应该按照建议做,并使用io.TextIOWrapper和适当的超时来解析传入的数据。