[英]Strange behavior with arduino-PC communication using pySerial
問題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(數據)”,但很明顯它沒有用。 當然是因為問題1。
當我改變這個:
print(data)
對此:
print(int(data))
我明白了:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.