AT命令中的转义字符是啥?

Posted

技术标签:

【中文标题】AT命令中的转义字符是啥?【英文标题】:What's the escape character in AT-commands?AT命令中的转义字符是什么? 【发布时间】:2020-06-24 19:38:21 【问题描述】:

我正在使用 BG96 调制解调器通过 MQTT 连接到 AWS iot。

我正在尝试使用以下 AT 命令设置我的 MQTT 最后遗嘱和遗嘱:

+QMTCFG:"will",(0-5),(0,1),(0-2),(0,1),"willtopic","willmessage"

效果很好。 但是现在我正在尝试将 JSON 格式的字符串添加到 "willmessage",所以我需要在其中添加 ""(双引号),这意味着我需要在我的命令中转义它们。但我不知道是否可以转义它们或转义字符是什么。

我试过的东西:\"(反斜杠)和""(双双引号)

我查看了所有 BG96 数据表,但我没有看到任何地方提到它。

【问题讨论】:

你试过 "'key':'value'" ??? 请原谅我的基本问题,但是如果您只是添加内部双引号而不转义它们会发生什么? @ΦXocę웃Пepeúpaツ 单引号有效,但不是有效的 JSON,因此另一端的 AWS 无法识别。 @000 输入中断。例如,+QMTCFG:"will",0,0,0,0,"test\topic",""key":"value"" 将在另一侧生成一条带有单个 的消息。 好的,我明白了。这是非常依赖于实现的东西。据我所知,其他设备有不同的行为。或者至少为二进制数据设计了一个_online_interface(包括像"这样的特殊字符)。最后一次尝试:您可以尝试使用 \x22 转义十六进制 ASCII 值吗? 【参考方案1】:

我在 SIMCOM SIM800c 上使用 MQTT 命令时遇到了同样的问题,我注意到当通过 USB 到 TTL 直接与 GSM 单元通信时,常规反斜杠 (\) 会转义引号(就像在 c 中一样)转换器。为了在软件中实现这一点,我将以下字符串打印到连接到 GSM 调制解调器的 UART:

AT+SMPUB=\"testTopicPost\",0,1,\"\x5c\x22Key\x5c\x22 : \x5c\x22Value\x5c\x22\"

这基本上是将原始 \ 和 " 字符发送到 GSM 单元。希望此解决方案也适用于您。

【讨论】:

感谢您的建议,但 BG96 似乎并非如此

以上是关于AT命令中的转义字符是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java 中的空格的转义字符是啥

c语言中不按转义字符处理是啥意思

【转载】mybatis中的转义字符表

java Json 串中的转义字符

转义字符有都哪些?

任意定界符/转义字符处理的最佳算法是啥?