我正在寻找一些如何正确解析从 GSM 模块接收到的响应数据的指南。我正在使用 uBlox SARA-G350。文档状态:
Information responses:
<CR><LF><text><CR><LF>
Result codes:
<CR><LF><verbose code><CR><LF>
If the command line is successfully performed, the string "OK" (<CR><LF>OK<CR><LF>)
is sent, otherwise "ERROR".
它可能看起来一切都很简单。我们应该阅读 <CR><LF>
中的每个句子至 <CR><LF>
但是……
- 数据可能会变成 block 状
- 响应可能包含双倍的
<CR><LF>OK<CR><LF>
(见下面的例子)
示例 - 发送到 gsm 模块的短信:
"Hi. Is IT
OK
"
在 CMGL 模块响应后(这是返回数据序列结束的样子):
Hi. Is IT<CR><LF>
OK<CR><LF>
<CR><LF>
OK<CR><LF>
如您所见,我们将 <CR><LF>OK<CR><LF>
增加了一倍.
我怎么知道我有完整的句子并且应该停止从模块读取数据并解析接收到的数据?
AT 解析器在这种情况下应该如何表现?
我在哪里可以找到一些如何正确解析来自 gsm 模块的传入响应数据的指南?
最佳答案
我找到了。我错误的假设是短信中可以包含 CrLf。这不是真的(至少对于 uBlox SARA-G350 而言)。从模块接收到的一些文本中的所有 CrLf 都被替换为 Lf。
多亏了这一点,我才能知道句子的结尾将是下一个组合到达时:
-
<CR><LF>OK<CR><LF>
-
<CR><LF>ERROR<CR><LF>
-
<CR><LF> >
最后一个是短信发送命令提示符。
关于c# - 如何正确解析从 GSM 模块收到的响应数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20092649/