web-dev-qa-db-ja.com

ミニコムスクリプトをループする

ATコマンドをモデム(Huawei e171)にループで送信する必要があります。次のスクリプト(ファイルscript.txt)を試してみます。

start:
  send AT+CSQ
  sleep 2
  goto start

minicom -S script.txtを介して実行しましたが、何も表示されませんでした。空のミニコム画面が開きました。 enter image description here ただし、単一のコマンドを使用したスクリプトは適切に機能します。

start:
  send AT+CSQ

期待される出力を提供します: enter image description here

私が間違っているのは何ですか?

PS:私はこのスクリプトを試します:

start:
  send AT+CSQ

  send AT+CSQ

  send AT+CSQ

しかし、モデムからの回答は3つではなく1つだけです。

1
igor_rb

コマンドの後に必要な期待される結果を持つソリューションexpectキーワードが見つかりました:

start:
  send AT+CSQ
  expect "OK"
  sleep 2
  goto start
1
igor_rb

「expect」は回避策であり、完全ではありませんが、期待値を確認した後にのみシリアルポート出力を出力できるため、expectedキーワードが表示されない場合は、シリアルポート出力に関係なく何も出力されないことに同意します。

以下の例では、「help」を2秒ごとに送信し、20秒続きます。「help」コマンドへの応答で「kann>」を予期し、「help」の前に「kann>」を含めてすべての文字を出力します。

debian@bbb:~$ cat minicomscript.txt
verbose on
timeout 20
loop:
  send help
  expect "kann>"
  sleep 2
  goto loop
debian@bbb:~$ minicom -S minicomscript.txt
1
jasper