问题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'
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()
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
}
在较高的数据传输速度下,数据有效性会受到影响,因为硬件无法读取按正确顺序发送的数据。试着把波特率降低到57600。在
相关问题 更多 >
编程相关推荐