7

Linux では、たとえば のシリアル ポートに一連の AT コマンドを送信する必要があります。これは、次のコマンドが送信される前に応答/dev/ttyS0を待機する必要があります。OK私は次のようなことを想像することができました

echo 'AT' > /dev/ttyS0
echo 'ATS0=0' > dev/ttyS0
...

ただし、これはそのポートのデバイスからの応答を評価しません。

これを bash スクリプト内で自動化する非常に簡単な方法はありますか。おそらく、最も単純な Linux システムでは見つからないツールを使用して、および/またはツールを使用しません。socatmicrocom

4

5 に答える 5

12

PPP パッケージをインストールするchatと、付属のプログラムを使用できます。または、 を使用できますkermit。または、cuuucp に付属のプログラム。しかし、純粋なシェルでそれを行うのはよりトリッキーです。stdio をポートにリダイレクトして、read 関数と printf 関数を使用できる場合があります。

いくつかのスニペット:

stty -F /dev/ttyS0 38400 raw
chat -f script.txt < /dev/ttyS0 > /dev/ttyS0

始める必要があります。

于 2013-02-14T15:57:44.747 に答える
3

これを bash スクリプト内で自動化する非常に簡単な方法を次に示します。

$ (echo AT; echo ATS0=0) | atinout - /dev/ttyS0 -
AT
OK
ATS0=0
OK
$

この機能を唯一の目的として特別に作成されたatinoutプログラムを使用します。上記の出力は、次を想定していATE1ます。エコーなしでは、モデムからの応答は になります"\r\n\r\nOK\r\n\r\nOK\r\n"

上記の例では、atinout は最初のコマンドを送信しAT(コマンド ラインを で適切に終了します\r)、最終結果コード (例: ) を受信するまで待機しOK、最初に次のコマンドの処理を続行します。

最初--. 必要に応じて、グループ化された echo コマンドの代わりに here doc を使用できます。

于 2015-06-15T22:04:22.717 に答える
1

メッセージを表示するには:

echo -e "ATHO\r" > /dev/ttyACM0

または、その他のモデム コマンドを入力whoして端末番号を検索し、次を実行します。

cat /dev/ttyACM0 >& /dev/pts/8 &

次に、AT コマンドからのメッセージが端末に表示されます。

于 2016-11-12T03:08:52.927 に答える
0

エラーがあります:

cat 'AT'

存在しないATファイルを表示するという意味だと思います。

代わりに、次のことを試してください。

cat<<EOF>/dev/ttyS0
AT
ATS0=0

EOF

ヒアドキュメントを使用します

于 2013-02-14T15:52:32.047 に答える