簡體   English   中英

Python串行寫入不起作用第一次運行

[英]Python serial write doesn't work FIRST run

我有 2 個程序來測試串行通信,一個簡單的 arduino 程序,它回顯串行端口上的任何內容,以及一個寫入串行端口並打印回復的 python 程序。

我有一個問題,每當我上傳 arduino 程序並在我上傳后第一次嘗試運行 python 時,它會卡在print ser.readline() ,我假設這意味着由於某種原因 python 沒有寫到串口。 我必須退出 python 程序並再次運行它才能得到 arduino 的回復。 該程序將繼續工作,直到我重新上傳 arduino 然后再次 python 在第一次運行時無法工作。 此外,如果我在運行 python 程序之前打開和關閉串行監視器,它將在第一次運行時工作。 有誰知道是什么問題? 這是在 Ubuntu 上。

阿杜伊諾

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

  }
}

蟒蛇

import serial


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

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

該問題可能與許多 Arduino 在建立新的串行連接時重置有關。

解決方案是在創建串行連接和發送第一個數據之間的 python 程序中添加延遲(大約 2 秒),或者修改硬件以防止串行連接重置。

默認情況下,python Serial 可能會在默認情況下阻塞,請嘗試刪除超時:

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

另外看看文檔中的serial.threaded

我加了

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

打開串口后問題就解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM