我是 Python 新手,正在研究传感器。
我正在逐行构建代码,但在字节到字符串的编码/解码部分遇到问题。同样的代码,有时有效,有时无效。
这是代码:
import serial
import time
import os
port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=1, bytesize=8)
f_w = open('/home/myname/python_serial_output.txt','r+')
port.send_break()
while True:
op = port.read(2)
op_str = op.decode('utf-8')
f_w.write(op_str)
print(op_str)
第一次没成功,但第二次就成功了。为什么?
这是我得到的错误:
myname@Toshiba:~$ python3 serial_test.py
Traceback (most recent call last):
File "serial_test.py", line 13, in <module>
op_str = op.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
myname@Toshiba:~$ python3 serial_test.py
Ex
pl
or
er
如何消除其成功运行的歧义?
发生这种情况可能是因为您的字符串包含非 ASCII 字符。当您再次运行代码时,字符串中没有非 ASCII 字符,因此它运行成功。
您可以使用encode()函数对非ascii字符进行编码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)