使用pySeri与arduinoPC通信的奇怪行为

2024-04-26 03:54:05 发布

您现在位置:Python中文网/ 问答频道 /正文

问题1: 我试着用pySerial读取arduino的串行数据。 有时代码似乎运行良好,但有时打印出奇怪的内容 东西。arduino监视器总是打印正常的数据,奇怪的 行为只发生在python代码上。在

另一件事就是这样 当我把波特率从9600提高到115200时,我真的需要这个 波特率更高。在

输出示例:

Opening COM port...
Port successfully opened
b'7\r\n'
b'133\r\n'
b'125\r\n'
b'114\r\n'
b'104\r\n'
(...) (and suddenly here comes again)
b'\xbaj\xea2\x93j\n'
b'\xa6\x13j\n'
b'&\x13j\n'
b'&\x93j\n'
b'\xa6\xd3j\n'
(...)
[Finished in 2.0s]

有时我需要取消构建,因为它卡住了 在for循环中。在

问题2: 除此之外,在读取数据后,我需要将其转换为int。 刚试过“int(data)”,但显然没用。当然是因为问题1。在

当我改变这个:

^{pr2}$

为此:

^{3}$

我明白了:

ValueError: invalid literal for int() with base 10: b'\xa1j\n'

Python代码:

import serial

print("Opening COM port...")

# open and prepare serial port
ser = serial.Serial('COM3', 115200, timeout=8,
                    parity=serial.PARITY_EVEN, rtscts=1)

print("Port successfully opened")

for i in range(50):
    data = ser.readline()
    print(data) # print(int(data))  

ser.close()

Arduino代码:

void setup() {
    Serial.begin(115200); // set baudrate
}

void loop() {
    int data = 0;
    int analogPin = 1;

    data = analogRead(analogPin); // read pin
    Serial.println(data, DEC); // print data to the serial port

}

Tags: 数据代码comfordataportserialarduino