2016-06-15 71 views
0

我有2個程序來測試串行通信,一個簡單的arduino程序,可以迴應串口上的任何內容以及寫入串行端口並打印答覆的python程序。Python串行寫入不起作用第一次運行

我遇到了一個問題,無論何時我上傳arduino程序並嘗試運行python後第一次上傳後,它會卡住print ser.readline(),我假設由於某些原因python沒有寫入串口。我將不得不退出python程序並再次運行它以獲得來自arduino的回覆。該程序將繼續工作,直到我重新上傳arduino,然後再次python不會在第一次運行。另外,如果我在運行python程序之前打開並關閉串口監視器,它將運行第一次運行。有誰知道這是什麼問題?這是在Ubuntu上。

的Arduino

String str; 

void setup() {     
// Turn the Serial Protocol ON 
    Serial.begin(115200); 
} 

void loop() { 
    if (Serial.available()) { 
     str = Serial.readStringUntil('\n');  // Read the serial input 
     Serial.println(str);    // sends ascii code 

    } 
} 

的Python

import serial 


ser = serial.Serial('/dev/ttyACM1', 115200) 

for i in range(0,4): 
    str = "test string\n" 
    ser.write(str) 
    print ser.readline() 
+0

python程序「不起作用」時出現什麼錯誤? – mhopeng

+0

一般而言,在將新軟件上載到Arduino之後,在嘗試連接到Arduino之前,必須等待幾秒鐘。 –

回答

0

我加

time.sleep(1) 
ser.setDTR(level=0) 
time.sleep(1) 

打開串口後的問題是固定的。

0

默認情況下蟒系列可能會在默認情況下會阻止嘗試刪除超時:

ser = serial.Serial('/dev/ttyACM1', 115200,timeout=0) 

另外有偷看了serial.threaded in the docs

相關問題