Python串行读取损坏打印语句

laawzig2  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(111)

我遇到了一个奇怪的情况,从串行端口阅读似乎会损坏对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第一次打印第一个'〉'而不是readr是怎么回事?!
如果我只用一个字符串来替换串行调用,就不会再看到这种行为。

b5buobof

b5buobof1#

一个大胆的猜测是你从串行端口得到了一个“回车”字符(ASCII 13)--这会导致终端跳回到最左边的位置,尝试在f-string的{}块的末尾添加一个!r,这样它就打印出了字符串的repr(或者省略.decode(...),这样就打印出了未解码的字节数组);如果有什么不能打印的就很明显了。

相关问题