2

AT コマンド (コンソールから GSM モデムにさまざまな操作を行うために実行されるコマンド) の結果を読み取ろうとしています。Java OuputStream クラスを使用して AT コマンドの結果を出力ストリームとして取得することを確認し、テストに成功しましたが、結果を出力ストリームとしてではなく、クラスの変数 (今のところ文字列) に取得する必要があります。

のようにすることができれば

outStream.write(("Some At command").getBytes());

これはうまくいきますが、どうすればこのようなことをすることができますか

Strign resultOfCommmand=.....result of some AT command;

こんな感じで試しています

 InputStream is = new ByteArrayInputStream(("some at commamd").getBytes());

 String result = getStringFromInputStream(is);

 System.out.println("66666666666666666666-----"+result);

/////////////////////

 private static String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }

しかし、結果を取得する代わりに、次のような文字列として at コマンド自体を取得しています....出力:

66666666666666666666-----AT+CMGR=20
4

1 に答える 1

2

プログラムのフローを再構築して、AT コマンド ラインを送信することから開始し、最終的な結果コードを取得するまで、モデムから返されたすべての応答行を読み戻して解析する必要があります。一般的な概要については、この回答を参照してください。

AT コマンド応答を適切に解析することはそれほど複雑ではありません。例としてatinoutのソース コードを見てください。

于 2013-12-22T15:35:21.840 に答える