通過pySerial正確接收數據有點問題:它通常不會讀取完整的數據或太多的數據。有時並且有時候更常見的是,還有額外的字符或某些字符/部分的發送數據丟失。看來,PC和數據的發射器沒有正確同步。PySerial沒有正確接收數據
在我使用的Arduino當前示例中,發送的「Hello World」我的電腦的串口(操作系統是Ubuntu的14.04),用下面的簡單代碼:
void setup(){
Serial.begin(9600);
Serial.print("Programme initiated\n");
}
我用下面的python3代碼接收數據:
import serial
import time
arduino = serial.Serial(port, baudrate=9600, timeout=2)
print(arduino.isOpen)
print(arduino)
time.sleep(1)
while True:
print(arduino.readline())
這是非常簡單的教程例子,這裏是我收到(除了那些正確的東西):
b'PrProgramme initiated\n'
或
b'PProgramme initiated\n'
或
b'ProgProgramme initiated\n'
或
b'ogramme initiated\n'
我提出與我的代碼更復雜的問題,但我仍然沒有解決這個問題。當從arduino(標準hello world代碼)的循環中發送消息時,通常需要時間來穩定(雖然它再次只顯示數據的中間片段),然後運行非常穩定,但即使如此它有時會打破單行。
我在與萬用表設備通信時遇到同樣的困難。在那裏,它通常不會讀取第一個字符或與之前的數據混合在一起。
有沒有人遇到過這個問題?我認爲這是一個同步問題,但我不知道如何解決它。而令我感到困惑的是,我真的只使用了教程,並且它似乎不能正常工作。或者它是我的電腦的配置問題?
感謝您的解釋。總的來說,在通信開始之前是否有辦法清除緩衝區(解決第3點)? – kire
嘗試使用 arduino.flushInput() 剛剛打開 – Lesto