如何将AT命令的输出转换为java中的字符串?

时间:2013-11-26 11:07:02

标签: java inputstream at-command smslib java-communication-api

我正在尝试读取AT命令的结果(执行从控制台对GSM调制解调器执行各种操作的命令)。我已经看到并成功测试了使用Java OuputStream类来获取AT命令的结果作为输出流,但我需要做的是将结果不是作为输出流而是在我的类中的变量(现在为String)。 / p>

如果可以这样做

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

1 个答案:

答案 0 :(得分:1)

您必须重新构建程序中的流程,以便通过发送AT命令行启动它,然后回读并解析从调制解调器返回的每一条响应行,直到您获得最终结果结果代码。有关概述,请参阅this answer

正确解析AT命令响应并不复杂,请查看atinout的源代码示例。