这在使用 Python 3.10 的 Windows 上运行得非常好。输入的数据有一个分隔符,一次传递一条消息,生活很美好……直到我在 Linux 上进行测试。特别是 Ubuntu 18.04.
在 Linux 上,它成功地接收到一些消息,然后它得到垃圾,非 ascii 值。奇怪的是,它经常在定界符之后立即变成垃圾,这似乎是一个提示,但我不确定是如何提示的。我尝试将解码更改为“utf-8”、“utf-16”和各种其他内容,但观察到相同的行为。
import serial, time
incoming= ''
delim = 'xyz'
ser = serial.Serial(port=port, baudrate=baud, timeout=timeout)
while True:
while ser.in_waiting > 0:
incoming += ser.read(ser.in_waiting).decode('ascii')
while delim in incoming:
deliver, incoming = incoming.split(delim, 1)
if deliver:
print(deliver)
time.sleep(0.1)
对问题可能是什么有什么建议吗?
stty -F /dev/ttyUSBx
这显示了串行设置,它确定了某些东西正在改变波特率。当我打印
ser.baudrate
时,Python 表示没有变化,但上面的命令显示了硬件的实际状态,问题是。
现在我需要想办法让 BAUD 不改变......