私はすでに同様の質問を投稿しましたが、まだ完了していません。私のつまずくブロックをより明確に述べる。モデムにATコマンドを送信するADBシェルスクリプト - シェルに制御を戻せず、出力をキャプチャすることはできません
私は基本的にAndroidの携帯電話のadbシェルにあり、ATコマンドを送信してGPRSモデムと通信しています。 私はモデムを表すデバイスファイルにコマンドでリダイレクトすることでそれを行うことができます。バックグラウンドで実行されているcatユーティリティーを使用して応答を返すことができます(先に開始しました)。私はスクリプトで実装しました これは、1つのATコマンドを送信し、応答を読み取ることができます。たとえば、次のスクリプトは 宛に+ copsに送信されますか?モバイルが上キャンプされるオペレータの名前を取得するために、次のように
#SendATCommand script
cat /dev/pts/7 &
echo -e at+cops?\\r > /dev/pts/7
を出力になります。
- 私は:今ここ
# ./sendATCommand ./sendATCommand # +COPS: 0,0,"AT&T",6 OK /dev/pts/7: invalid length
は私が解決できない二つの問題がありますまだadbシェルプロンプト "#"を取得するために手動でENTERボタンを押す必要があります。プログラムで "#"プロンプトに を返す方法はありますか?再び、私はadbシェルです。
- 表示された応答は変数でもファイルでもキャプチャできません((#/ sendATCommand> output.txt)Output.txtファイルは空になりますさまざまなリダイレクトを試みましたが、まだ取得できませんでしたそれは動作します。
は、誰も私が(今までに可能な場合)、これら二つの問題を解決する助けてくださいことはできますか?最終的に私はこの小さなスクリプトは、PC上で実行されている「スーパー」のスクリプト(例えばPerlやPowerShellの)から呼び出さ になりたいです私のAndroid搭載端末は に接続されていますが、2つの問題が解決されるまでは実行できません。
なぜあなたは '\\ r'を持っていますか? '\ r'だけでなく、' \ n'を試してください。あるいはもっと一般的に '\ r'が関わっているときは' \ r \ n'です。なぜあなたは「無効な長さ」のメッセージを受け取っていると思いますか?アンドロイドの人ではないので、これは私が提供しなければならないすべてのものです。がんばろう。 – shellter
あなたの提案を試してみました。うまくいきません。二重バックスラッシュ(\\ r)でのみ動作します。まだ未解決です。 –
ATコマンドラインは、(おそらくエスケープされた) '\ r'のみで終了する必要があります。http://stackoverflow.com/a/21503919/23118'\ n'を使わないでください。 – hlovdal