【问题标题】: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 值吗?

标签: mqtt at-command modem firmware nb-iot


【解决方案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 似乎并非如此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多