我遇到了一个奇怪的情况,从串行端口阅读似乎会损坏对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第一次打印第一个'〉'而不是read
的r
是怎么回事?!
如果我只用一个字符串来替换串行调用,就不会再看到这种行为。
1条答案
按热度按时间b5buobof1#
一个大胆的猜测是你从串行端口得到了一个“回车”字符(ASCII 13)--这会导致终端跳回到最左边的位置,尝试在f-string的
{}
块的末尾添加一个!r
,这样它就打印出了字符串的repr(或者省略.decode(...)
,这样就打印出了未解码的字节数组);如果有什么不能打印的就很明显了。