2011-02-09 55 views
4

我是bash新手,我很努力地將它放在一起。bash從ttyUSB0讀取併發送到URL

我所試圖做的是:

1)設置端口從開發/ ttyUSB0閱讀(stty的)
2) - 數據應該像000118110000101(貓或GAWK)
3)設置讀取數據到一個變量,例如數據並創建一個URL例如http://domain.com/get_data.php?data= $ DATA
4)用wget加載URL?
5)ttyUSB0(輪詢或循環等待更多數據?)

我已經試過了PHP DIO extention,做的工作,但因爲它停止是不可靠/開始出於某種原因。

任何建議,將不勝感激,我會非常大,全,如果還有人建議要做到這一點

感謝

布倫特

回答

7

這就是我用過的。

#Set permisions 
sudo chmod o+rwx /dev/ttyUSB0 


#!/bin/bash 

# Port setting 
stty -F /dev/ttyUSB0 cs7 cstopb -ixon raw speed 1200 

# Loop 
while [ 1 ]; 
do 
    echo 'LOADING...' 
    READ=`dd if=/dev/ttyUSB0 count=22 | sed 's/ //g'` 
    echo $READ 
    wget http://localhost/BASHtest/test.php?signal=$READ 
    echo '[PRESS Ctrl + C TO EXIT]' 
done 
+1

+1發佈解決方案,以解決您自己的問題。解釋re:non/blocking reads;阻塞讀取停止程序,直到它完成讀取(如果它是永無止境的數據流,則可能永遠存在)。非阻塞閱讀開始閱讀,然後繼續其他工作(如更新UI)。第二個線程處理數據。因此...如果您正在執行的讀取操作是阻止讀取,您需要知道,一次只有少量數據會使您的應用似乎掛起。 – Basic

0

對於第一步,我會建議最好的辦法讀到一個文件,然後使用od獲得八進制(沒有二進制就我所見)表示,因爲標準awk不適應NULs(我認爲gawk太)。因此,在獲取字節後,通過sed腳本管理它以將八進制數更改爲二進制文件,使用$()(或者apostrophs)獲取輸出並創建一個URL,然後輸入到wget

我能看到的唯一問題是從USB中讀取阻塞/非阻塞。請報告是否會有一個。

+0

感謝您的及時回覆pooh,抱歉,但我從串口/ usb設備閱讀的經驗是有限的。你能解釋一下什麼是封鎖/非封鎖閱讀? – afro360

+0

@ afro360:我現在沒有機會檢查它,但是如果你只是做'cat tmpfile',恐怕會永久卡住。另一種選擇可能是使用'dd'並請求很多字節,所以它會以較少的金額返回,並且你去了。嘗試首先嚐試如何從/ dev/ttyUSB0以可靠的方式獲取數據塊。 – 2011-02-09 08:52:27

+0

仍然在努力爲 – afro360