【发布时间】:2017-04-30 09:43:52
【问题描述】:
问题 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。
当我改变这个时:
print(data)
对此:
print(int(data))
我明白了:
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
}
【问题讨论】:
标签: python arduino serial-port converter pyserial