我正在尝试从Arduino串行监视器读取数据,但是pyserial的readline函数遇到问题。这是显示在监视器上的简单代码:
void setup() {
Serial.begin(19200);
}
void loop() {
Serial.print("helloWorld");
delay(1); // delay in between reads for stability
}
这是我用来读取打印输出的Python代码:
import serial
arduinoSerialData = serial.Serial()
arduinoSerialData.port = "COM4"
arduinoSerialData.baudrate = 19200
arduinoSerialData.timeout = 1
arduinoSerialData.setDTR(False)
#arduinoSerialData.setRTS(False)
arduinoSerialData.open()
while(True):
b = arduinoSerialData.readline().decode('utf-8').strip().split(',')
print(b)
这是错误:
File "SerialRead.py", line 11, in <module>
str_b = b.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 7: invalid start byte
我不知道可能出什么问题了。有没有人有什么建议?谢谢您的时间!
答案 0 :(得分:1)
我有这段代码,这很完美:
import serial
Ser=serial.Serial(port='com8',baudrate='9600',timeout=1)
while True:
print(Ser.readline())
将此数据转换为字符串,并删除不必要的字符。 示例:
import serial
Ser=serial.Serial(port='com8',baudrate='9600',timeout=1)
while True:
data=Ser.readline()
data=str(data)
try:
dat1=data.replace("b","")
dat2=dat1.replace("\r\n","")
dat3=dat2[:-5]
dat4=dat3.replace("'", "")
print(dat4)
except:
print("ERROR: replace method error")
祝你好运!