使用pySerial发送的ASCII文本在末端设备中变为附加内容

1 投票
1 回答
5322 浏览
提问于 2025-04-17 16:48

我正在尝试将两行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

很多硬件串口设备使用回车符来表示一行或一条指令的结束。在不知道你想要和哪个设备通信(或者它期待什么协议)的情况下,我建议你可以试试

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

正如文档中所提到的,pySerial现在不再支持readline()的行结束符参数了。所以如果设备给你返回的回复是以\r结尾的行,你就应该按照建议,使用io.TextIOWrapper和合适的超时设置来解析接收到的数据。

撰写回答