2013-05-20 119 views
1

呼應我有這個bash文件:猛砸在屏幕

#!/bin/bash 
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -   iext en -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

screen /dev/ttyACM0 9600 
echo "1" 

這基本上是一個Arduino連接到我的Ubuntu電腦,我可以完美運行所有的代碼,直到echo "1"部分。

我可以...

  1. 建立連接
  2. 看到串行連接的屏幕
  3. "1",看到我的燈泡亮起來,當我鍵入"0"燈泡關掉。

現在我遇到的問題是,我想控制代碼中的開/關(沒有我手動輸入),似乎幾乎不可能這樣做。邏輯是正確的,但是當我開始screen時,代碼就停在那裏並運行屏幕,等待我輸入一些信息。直到我插上Arduino後,echo終於出來了。有沒有辦法解決這個問題?

+0

嘗試'screen -d -m/dev/ttyACM0 9600'' screen -X echo「1」'OR 'screen/dev/ttyACM0 9600'' screen -X echo「1」' –

+0

對於第一個代碼它運行但沒有結果。對於第二個代碼,它運行但出現錯誤,如「Arduino必須連接到終端」 –

回答

4

我有過這樣的問題,這是我的解決方法:

我有更多的運氣立方米然後用stty的

啓動屏幕會話:

screen -S arduino -dmS cu -l /dev/ttyACM0 -s 9600 

現在有一個創建名爲arduino的屏幕會話

您可以通過腳本向其發送命令:

screen -S arduino -X stuff 1 

這將1發送到就像你的例子串行連接

如果你想控制這個用不同的用戶確保權利將允許這一點,並用這將是相同的用戶創建的屏幕會話發送命令到屏幕會話。

如果您有更多的問題請問我。