2011-02-09 3 views
4

私はbashの初心者です。私はそれをまとめて苦労しています。私がやろうとしています何bashをttyUSB0から読み込んでURLに送信

は次のとおりです。

1)設定されたポート(sttyの)
2)リードDEV/ttyUSB0から - データが000118110000101(猫やgawkはのようになります。)
3)を設定し、読み取り?データを変数DATAに挿入してURLを作成します。例:http://domain.com/get_data.php?data= $ DATA
4)wgetでURLをロードしますか?
5)ttyUSB0(ポーリングまたはループからより多くのデータを待ち?)

私は仕事を行いますが、それは/何らかの理由で起動、停止するので信頼できないPHPのDIOの拡張子を試してみました。

の任意の提案をいただければ幸い誰もが私が助言する最初のステップでは、この

おかげ

ブレント

答えて

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 readを説明する。ブロッキングの読み込みは、読み込みが終了するまで(潜在的に永遠にデータのストリームではない場合)、プログラムを停止します。ノンブロッキングの読み込みは読み込みを開始し、UIを更新するなどの他の作業を開始します。あなたが行っている読み取りがブロッキング読み取りである場合は、一度に少量のデータ以上でアプリがハングアップしているように見えることに気づく必要があります。 – Basic

0

を行うための最善の方法をアドバイスすることができれば、私は非常に素晴らしいフルになりますファイルに読み込んだあと、標準のawkがNULに対応していないので、odを使って8進数(私が見ることができる限りバイナリはありません)を取得します(私もgawkと思います)。バイトを取得したら、sedスクリプトを使って8進数をバイナリに変更し、$()(またはアポストロフィ)の出力を取得してURLを作成し、wgetに送ります。

私が見ることができる唯一の問題は、USBからのブロック/非ブロック読み取りです。ある場合は報告してください。

+0

ご回答ありがとうございます。申し訳ありませんが、シリアル/ USBデバイスからの読書の経験は限られています。ブロックされた/ブロックされていない読み込みが何であるか説明してください。 – afro360

+0

@ afro360:今すぐチェックする機会はありませんが、 'cat tmpfile'を実行すれば、永遠に詰まるでしょう。もう1つのオプションは 'dd'を使用して多くのバイトを要求することができるため、より少ない量で返されます。最初に/ dev/ttyUSB0から信頼できる方法でデータを取得する方法を試してみてください。 –

+0

あなた自身の問題を解決するために依然として苦労している – afro360

関連する問題