F407+ESP8266+MQTT+AliIoT(六)——cJSON移植
簡介
在F407接收到阿里雲下發的Publish Message之後,需要解碼,解碼要用到cJSON.c和cJSON.h文件,這兩個文件可以在github上下載。在這裏只給出了一個示例,具體怎麼用看自己的。
如果不行可以修改文件startup_stm32f407xx.s,增加空間
Stack_Size EQU 0x00000400
Heap_Size EQU 0x00000200
修改爲
Stack_Size EQU 0x00001000
Heap_Size EQU 0x00001000
相關程序源碼
CSJON數據解包示例代碼
const char *line = "{\"method\":\"thing.service.property.set\",\"id\":\"1047683414\", \
\"params\":{\"temperature\":23,\"humidity\":23},\"version\":\"1.0.0\"}";
cJSON *json;
printf(line);
json = cJSON_Parse(line);
if(json ==NULL)
printf("json fmt error:%s\n.", cJSON_GetErrorPtr());
else {
cJSON *obj_id = cJSON_GetObjectItem(json, "id");
cJSON *obj_params = cJSON_GetObjectItem(json, "params");
cJSON *obj_temp = cJSON_GetObjectItem(obj_params, "temperature");
cJSON *obj_humi = cJSON_GetObjectItem(obj_params, "humidity");
printf("\r\n");
printf("temperature: %.1f\r\n", obj_temp->valuedouble);
printf("humidity: %.1f\r\n", obj_humi->valuedouble);
cJSON_Delete(json);
}