问题描述
我正在尝试通过 sim868 MQTT 发布二进制数据,但在某些二进制值的情况下面临问题。例如,当我想发布二进制数 0 (0x00) 时,如果我通过 AT 命令将 0x00 发送到 sim868,它会将其解释为 0(空字符)并将其视为字符串的结尾。所以,它将0x00之前的数据发布到MQTT,但我也被要求发布0x00。
我正在使用 sim800 系列 MQTT App Note 中提到的 AT 命令 AT+SmpuB=topic,qos,retain,message。
由于该命令中没有数据长度参数,所以不能通过AT命令发送数据长度。
例如,当我尝试在上面提到的 AT 命令中将此消息发送到 sim868 时。
msg[]={0x48,0x00,0x01,0x02,0x4F}
它只发布第一个字节,似乎将第二个字节解释为 NULL 字符(字符串的结尾)。
所以,我想知道如何通过 sim868 MQTT 发布 0x00,以便 sim868 将其解释为二进制 0,而不是 NULL 字符。
解决方法
尝试在 0x00 之前添加 \。使用 \ 应将其视为转义字符。希望有效。
AT+SMPUB="mytopic/data/pub",1,"{0x48,\0x00,0x01,0x02,0x4F}"