8

Linux のコマンドには、シリアル モデムと通信するためのコマンドが存在しBusyBox ますmicrocom

BusyBox v1.13.2 (2012-05-10 17:13:08 CEST) multi-call binary

Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY

Copy bytes for stdin to TTY and from TTY to stdout

Options:    
        -d  Wait up to DELAY ms for TTY output before sending every next byte to it
        -t  Exit if both stdin and TTY are silent for TIMEOUT ms
        -s  Set serial line to SPEED
        -X  Disable special meaning of NUL and Ctrl-X from stdin

stdin を使用して AT コマンドを入力する代わりに、それらをテキスト ファイルに配置し、そのファイルの内容を上記のコマンドの stdin としてリダイレクトします。たとえば、ファイルがあります

/tmp/at.txt

AT コマンドATを使用します。これは通常、TTY でOK. stdin を使用した標準セッションは次のようになります。

microcom -t 3000 -X /dev/ttyS5                                 
at
OK

文字列atがキーボードで直接入力されたもの。ファイルの内容を使用するため/tmp/at.txt('at\n' のみを含む)。これをする、。次のバリエーションを試しました。

microcom -t 3000 -X /dev/ttyS5  < /tmp/at.txt   
microcom -t 3000 /dev/ttyS5  < /tmp/at.txt 
cat /tmp/at.txt |  microcom -t 3000 /dev/ttyS5
tail -f  /tmp/at.txt |  microcom -t 3000 /dev/ttyS5
cat /tmp/at.txt |  microcom -t 3000 /dev/ttyS5 -X
tail -f  /tmp/at.txt |  microcom -t 3000 /dev/ttyS5 -X

つまり、これらのコマンドのいずれも、画面に「OK」というテキストを返しませんでした。/tmp/at.txtしたがって、ファイルの内容をコマンドの標準入力としてリダイレクトする際に問題があると結論付けていますmicrocom。おそらく、行末がどのように解釈されるか、またはファイルの終わりに関係しているのでしょう。誰かが何か考えを持っているなら、私は助けていただければ幸いです。

ありがとう、

アレックス

4

2 に答える 2

5

SliTaz 4.0 の下で BusyBox v1.18.4 でマイクロコムを実行しています & 問題を複製して解決しました。このレベルでキーボード入力をエミュレートする場合、キーボード キーは ^M (0x0D) を送信するため、テイクファイルのすべての行の後に完全な CRLF が必要です。ほとんどの ASCII エディタで記述された Linux 標準の 0x0A では十分ではありません。

それを行うには多くの方法がありますが、すべての行の最後に余分なバイトを含むテイクファイルを作成し、ncurses-hexedit プログラムを使用してそのバイトを 0x0D にザッピングしました。上記のコマンドをテストしたところ、そのようなファイルから取得した入力で OK の応答が得られました。

お役に立てれば。

于 2012-10-06T14:02:29.437 に答える