PySerial 读取问题
Posted
技术标签:
【中文标题】PySerial 读取问题【英文标题】:Trouble with PySerial read 【发布时间】:2021-01-04 22:10:59 【问题描述】:我正在尝试从 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
我不知道可能出了什么问题。有没有人有什么建议?感谢您的宝贵时间!
【问题讨论】:
Arduino发送串口到底是什么?您发布的代码中没有显示任何内容。 @jasonharper 抱歉,我不小心漏掉了一行。它现在应该已修复,但错误仍在出现。 【参考方案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")
祝你好运!
【讨论】:
以上是关于PySerial 读取问题的主要内容,如果未能解决你的问题,请参考以下文章
仅当终端应用程序在后台打开时,使用 pyserial 从串行端口读取才有效
Jetson Xavier NX 无法读取 pyserial (usb)