1

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

从普通终端程序测试时,分别接收这两行是没有问题的。

4

1 回答 1

0

许多硬件串行设备使用回车来表示行或指令的结束。在不知道您尝试与之通信的设备(或它期望的协议)的情况下,我可能会建议尝试

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

文档中所述,pySerial 不再支持 EOL 参数,readline()因此如果设备正在向您返回回复(并且正在使用\r终止行),那么您应该按照建议进行操作,并使用io.TextIOWrapper适当的超时来解析传入的数据.

于 2013-02-27T14:20:00.753 回答