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命令中的转义字符是啥?的主要内容,如果未能解决你的问题,请参考以下文章