c# - 如何正确解析从 GSM 模块收到的响应数据?

标签 c# parsing gsm at-command .net-micro-framework

我正在寻找一些如何正确解析从 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/

相关文章:

c# - 错误MSB4086:尝试对 “$(MSBuildAssemblyVersion)”进行数值比较

c++ - 是否可以在 C++ 中使用递归 vector ?

javascript - 通过jQuery从JSON的外部链接获取数据

gsm - 通过 GSM 调制解调器进行语音通话

c# - 如何在 .NET 中进行对象的深拷贝?

c# - 如何避免 .NET CF 3.5 和 CE 6 R3 中的严重错误

c# - C# 文件可以包含文件级摘要注释吗?

c++ - 将字符串解析为结构变量

python - 如何使用 Zoom 7.2m 三频 USB 调制解调器通过 AT 命令发送短信?

android - Android/其他移动平台上的底层通信