通过u8 MqttOnenet_Savedata(u8 *t_payload,u8 infrared,u8 ultraviolet,u8 pressure) { char json[]="{"datastreams":[{"id":"infrared","datapoints":[{"value":%d}]},{"id":"ultraviolet","datapoints":[{"value":%d}]},{"id":"pressure","datapoints":[{"value":%d}]}]}"; char t_json[600]; // int payload_len; unsigned short json_len; sprintf(t_json, json,infrared,ultraviolet,pressure); // payload_len = 1 + 2 + strlen(t_json)/sizeof(char); json_len = strlen(json); //type t_payload[0] = '\x01'; //length t_payload[1] = (json_len & 0xFF00) >> 8; t_payload[2] = json_len & 0xFF; //json memcpy(t_payload+3, t_json, json_len); return json_len+3; }
时间: 2023-07-19 10:10:44 浏览: 404
jwt-handbook.zip_JSON_JWT Handbook_jwt handbook_jwt hankbook_jw
这段代码定义了一个名为MqttOnenet_Savedata的函数,用于将红外、紫外和压力等数据通过MQTT协议上传到OneNET物联网平台。具体实现方式如下:
```u8 MqttOnenet_Savedata(u8 *t_payload,u8 infrared,u8 ultraviolet,u8 pressure) {
char json[]="{"datastreams":[{"id":"infrared","datapoints":[{"value":%d}]},{"id":"ultraviolet","datapoints":[{"value":%d}]},{"id":"pressure","datapoints":[{"value":%d}]}]}";
char t_json[600];
unsigned short json_len;
sprintf(t_json, json,infrared,ultraviolet,pressure);
json_len = strlen(json);
t_payload[0] = '\x01';
t_payload[1] = (json_len & 0xFF00) >> 8;
t_payload[2] = json_len & 0xFF;
memcpy(t_payload+3, t_json, json_len);
return json_len+3;
}```
具体来说,该函数接受四个参数,其中第一个参数为指向t_payload数组的指针,用于存储生成的JSON数据。infrared、ultraviolet和pressure分别为红外、紫外和压力等数据值。函数中定义了一个JSON格式的字符串,用于存储数据流和数据点信息。通过sprintf函数将infrared、ultraviolet和pressure填充到JSON字符串中,生成完整的JSON数据。然后计算JSON数据的长度,将长度信息和JSON数据拷贝到t_payload数组中,并返回payload的长度。
阅读全文