user_2018-02-14
2018年10月15日 16時35分
Armadillo G3においてATコマンドでの下記のようにモデムと対話することができると思います。
root@armadillo:/# cu -l /dev/ttyACM3 -s 115200 Connected. ATI1 Cinterion PDS6-J REVISION 03.001 A-REVISION 00.000.35 OK ~. Disconnected.
上記をexpectで自動化するため、下記のようなスクリプト(test.sh)を作成しました。
#!/bin/bash # test.sh DEVICE_FILE="$1" expect -c " set timeout "30" spawn env LANG=C cu -l "${DEVICE_FILE}" -s 115200 expect \\"Connected.\\" send \\"ATI1\n\\" expect \\"OK\\" send \\"~.\n\\" exit 0 "
ところが、実行したところ、ATコマンドを送信したところで、下記のように処理がストップしてしまいます。
bash ./test.sh /dev/ttyACM3 spawn env LANG=C cu -l /dev/ttyACM3 -s 115200 Connected. ATI1
同じスクリプトでArmadillo-G3Lでは動作したのですが、何故かArmadillo-G3だと動作しない状態です。
原因について、ご存の方がいらっしゃましたら、ご助言をお願い申し上げます。
コメント
y.nakamura
user_2018-02-14
y.nakamura
2018年10月15日 22時22分
中村です。
> 同じスクリプトでArmadillo-G3Lでは動作したのですが、何故かArmadillo-G3だと動作しない状態です。
>
> 原因について、ご存の方がいらっしゃましたら、ご助言をお願い申し上げます。
原因ではないですが、
シェルスクリプトからexpectでspawnで外部コマンドを使って
送受信をするときの書き方についてです。
expectの書き方は人によっていろいろあるようですけど、
私はヒアドキュメントを使ってます。
scpやsftpなどが主ですが、昔Armadillo-420用に書いた
スクリプトがG3Lでも修正なしでそのまま動いています。
以下、参考になれば幸いです。
>
これを私が普段使っているやり方でヒアドキュメントで書くと、
次のようになります。
(試してませんので、これで動くかどうかはわかりません)
// expectでcuを使ったことはないので、
// eofのところがこれでいいのかはわかりません。
--
なかむら