当前位置: 首页 > 面试题库 >

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

戎鹏云
2023-03-14
问题内容

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

如果有可能喜欢

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

问题答案:

您必须重组程序中的流,以便从发送AT命令行开始,然后回读 并解析
从调制解调器返回的每个响应行,直到获得最终结果代码。有关总体概述,请参见此答案。

首先,要全面了解AT命令,请阅读V.250规范。这将使您成为AT指令专家将大有帮助。

然后对于实际的实现,我不知道codesys,因此以下是处理AT命令应具有的结构的伪代码:

the_modem = openPort();
...
// start sending ATE0
writePort(the_modem, "ATE0\r");
do {
    line = readLinePort(the_modem);
} while (! is_final_result_code(line))
// Sending of ATE0 command finished (successfully or not)
...
closePort(the_modem);

不管你做什么,永远,永远使用delay,sleep或作为等待最后的结果代码的替代品相似。你可以看一下代码为atinout针对的一个例子is_final_result_code功能(也可以比较isFinalResponseError,并isFinalResponseSuccess在ST-Ericsson的U300 RIL,但请注意,CONNECT不是最终结果代码,它是一个中间结果码,故得名isFinalResponseSuccess是并非100%正确)。

正确地解析AT命令响应并不那么复杂,以atinout的源代码为例。



 类似资料:
  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 问题内容: 我想知道有什么方法可以将字符串转换为 SOAPMessage 吗? 让我说我有一个字符串如下: 当我这样做时: 一切正常。但是我还是从服务器上得到的。可能是什么原因?我更改了<和>以转义字符。 问题答案: 将String转换为输入流,然后将其读入SOAP消息工厂。 您可以在此处阅读有关如何执行此操作的信息。

  • 问题内容: 假设我有一个包含文本数据的文件,并且想将其转换为(例如,这样我就可以将流的内容写入日志文件)。 将并将其转换为的最简单方法是什么? 问题答案: 这是我的版本

  • 问题内容: 在我的Java项目中,我将FileInputStream传递给一个函数,我需要将其转换(将类型转换FileInputStream转换为字符串),该怎么做。 问题答案: 您不能直接将其转换为字符串。您应该实现这样的东西将此代码添加到您的方法中 使用Aubin的解决方案:

  • 问题内容: 给定一个字符串: 如何将其转换为? 问题答案: 像这样: 请注意,这假设你需要一个,它是一个字节流,它表示编码为UTF-8的原始字符串。 对于小于7的Java版本,请替换为。

  • 问题内容: 如何在Java中将字符串转换为InputStreamReader? 问题答案: 也可以做到这一点: