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 回答