Python 串行读取损坏的打印语句

问题描述 投票:0回答:1

我有这种奇怪的情况,从串行端口读取似乎损坏了对

print
的调用。此代码:

        ser = serial.Serial('COM13', 115200, timeout=5)
        ser.reset_input_buffer()
        ser.reset_output_buffer()

        ser.write("stat\n".encode('utf-8'))
        ser.flush()

        for i in range(10):
            print(f"read: <{self.ser.read(10).decode('utf-8')}>")

输出

>ead: <s
read: <
>
read: <>
read: <>
read: <>
...

第一个'>'怎么能由python第一次打印而不是

r
read
?!

如果我只用一个字符串替换串行调用,行为就不会再出现了。

python pyserial
1个回答
0
投票

一个疯狂的猜测是你从串口得到一个“回车”字符(ASCII 13);这将导致终端跳回到最左边的位置。尝试将 !r 添加到 f 字符串中 {} 块的末尾,以便它打印字符串的 repr(或者只是省略 .decode(...) 以便打印未解码的字节数组);如果那里有任何不可打印的东西,那应该很明显。

© www.soinside.com 2019 - 2024. All rights reserved.