1

我正在尝试通过 sim868 MQTT 发布二进制数据,但在某些二进制值的情况下会遇到问题。例如,当我想发布二进制数 0 (0x00) 时,如果我通过 AT 命令将 0x00 发送到 sim868,它会将其解释为 0(NULL 字符)并假定它是字符串的结尾。因此,它将 0x00 之前的数据发布到 MQTT,但我还需要发布 0x00。

我正在使用sim800 系列 MQTT 应用笔记中提到的AT 命令AT+SMPUB=topic,qos,retain,message 。

由于该命令中没有数据长度的参数,所以不能通过 AT 命令发送数据长度。

例如,当我尝试在上述 AT 命令中向 sim868 发送此消息时。

味精[]={0x48,0x00,0x01,0x02,0x4F}

它只发布第一个字节,似乎将第二个字节解释为 NULL 字符(字符串的结尾)。

所以,我想知道如何通过 sim868 MQTT 发布 0x00,以便 sim868 将其解释为二进制 0,而不是 NULL 字符。

4

1 回答 1

0

尝试在 0x00 之前添加 \。使用 \ 应该将其视为转义字符。希望有效。

AT+SMPUB="mytopic/data/pub",1,0,"{0x48,\0x00,0x01,0x02,0x4F}"
于 2021-06-04T14:29:28.900 回答