2

我正在尝试从 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

我不知道可能出了什么问题。有没有人有什么建议?感谢您的时间!

4

1 回答 1

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")

祝你好运!

于 2020-09-23T08:51:14.890 回答