我正在尝试读取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
答案 0 :(得分:1)
您必须重新构建程序中的流程,以便通过发送AT命令行启动它,然后回读并解析从调制解调器返回的每一条响应行,直到您获得最终结果结果代码。有关概述,请参阅this answer。
正确解析AT命令响应并不复杂,请查看atinout的源代码示例。