void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
{
Weather_data_t_now.humidity = humidity;
- memset((void *)Weather_data_t_now.windScale, 0, 16);
- strcpy(Weather_data_t_now.windScale, windScale);
- memset((void *)Weather_data_t_now.textNight, 0, 16);
- strcpy(Weather_data_t_now.textNight, textNight);
+ memset((void *)Weather_data_t_now.windScale, 0, weather_short_len);
+ strcpy_s(Weather_data_t_now.windScale, weather_short_len,windScale);
+ memset((void *)Weather_data_t_now.textNight, 0, weather_short_len);
+ strcpy_s(Weather_data_t_now.textNight,weather_short_len, textNight);
Weather_data_t_now.uvIndex = uvIndex;
Weather_data_t_now.temp = temp;
Weather_data_t_now.iconNight = iconNight;
{
Weather_data_t_address.lat = lat;
Weather_data_t_address.lon = lon;
- memset((void *)Weather_data_t_address.atm, 0, 16);
- strcpy(Weather_data_t_address.atm, atm);
- memset((void *)Weather_data_t_address.city, 0, 32);
- strcpy(Weather_data_t_address.city, city);
- memset((void *)Weather_data_t_address.subLocality, 0, 32);
- strcpy(Weather_data_t_address.subLocality, subLocality);
+ memset((void *)Weather_data_t_address.atm, 0, weather_short_len);
+ strcpy_s(Weather_data_t_address.atm,weather_short_len, atm);
+ memset((void *)Weather_data_t_address.city, 0, weather_long_len);
+ strcpy_s(Weather_data_t_address.city, weather_long_len,city);
+ memset((void *)Weather_data_t_address.subLocality, 0, weather_long_len);
+ strcpy_s(Weather_data_t_address.subLocality, weather_long_len,subLocality);
}
/*
Weather_data_seven_data[count].tempMax = t.tempMax;
Weather_data_seven_data[count].tempMin = t.tempMin;
Weather_data_seven_data[count].fxDate = t.fxDate;
- memset((void *)Weather_data_seven_data[count].textDay, 0, 16);
- strcpy(Weather_data_seven_data[count].textDay, t.textDay);
+ memset((void *)Weather_data_seven_data[count].textDay, 0, weather_short_len);
+ strcpy_s(Weather_data_seven_data[count].textDay,weather_short_len, t.textDay);
Weather_data_seven_count++;
}
if(flag == 1)\r
{\r
first_bond = 1;\r
+ printf(" gap_ble_pair \r\n");\r
\r
if(get_ble_pair())\r
{\r
+ printf(" gap_ble_pair \r\n");\r
+\r
bd_addr_t addr={0};\r
get_phone_addr(&addr,g_ble_conn_id);\r
\r
printf("gap_ble_pair_remote_device fail %X\r\n",code);\r
}\r
}\r
+\r
\r
}else{\r
first_bond = 0;\r
}\r
return parse_jsonCheck_weather(buf,check);\r
}\r
+void parse_jsonCheck_weather_post(uint8_t *buf)//json 格式解析 天气数据\r
+{\r
+ uint8_t *json;\r
+ json = buf;\r
+ // printf("jsonCheck_weather:len: json:%f jsonlen:%d\r\n",0.011,strlen((char *)json));\r
+ cJSON* root = cJSON_Parse((const char *)json);\r
+ if (root == NULL) {\r
+ printf("天气 JSON解析错误\n");\r
+ return ;\r
+ }\r
+ printf("开始解析天气 JSON\n");\r
+ cJSON *now_cjson = cJSON_GetObjectItem(root, "now");\r
+ if(now_cjson == NULL)\r
+ {\r
+ printf("天气 JSON解析错误\n");\r
+ return ;\r
+ }\r
+ int humidity=0;\r
+ char * windScale=NULL;\r
+ char *textNight=NULL;\r
+ int uvIndex=0;\r
+ int temp=0;\r
+ int iconNight=0;\r
+\r
+ cJSON *now_data_humidity= cJSON_GetObjectItem(now_cjson, "humidity");\r
+ if(now_data_humidity)\r
+ {\r
+ humidity=now_data_humidity->valueint;\r
+ }\r
+ cJSON *now_data_windScale=cJSON_GetObjectItem(now_cjson, "windScale");\r
+ if(now_data_windScale)\r
+ {\r
+ windScale=now_data_windScale->valuestring;\r
+ }\r
+ cJSON *now_data_textNight=cJSON_GetObjectItem(now_cjson, "textNight");\r
+ if(now_data_textNight)\r
+ {\r
+ textNight=now_data_textNight->valuestring;\r
+ }\r
+ cJSON *now_data_uvIndex= cJSON_GetObjectItem(now_cjson, "uvIndex");\r
+ if(now_data_uvIndex)\r
+ {\r
+ uvIndex=now_data_uvIndex->valueint;\r
+ }\r
+ cJSON *now_data_temp= cJSON_GetObjectItem(now_cjson, "temp");\r
+ if(now_data_temp)\r
+ {\r
+ temp=now_data_temp->valueint;\r
+ }\r
+ cJSON *now_data_iconNight= cJSON_GetObjectItem(now_cjson, "iconNight");\r
+ if(now_data_iconNight)\r
+ {\r
+ iconNight=now_data_iconNight->valueint;\r
+ }\r
+ set_weather_now_data(humidity,windScale,textNight,uvIndex,temp,iconNight);\r
+\r
+\r
+ cJSON *address_cjson = cJSON_GetObjectItem(root, "address");\r
+\r
+ char*city=NULL;\r
+ char*subLocality=NULL;\r
+ char*atm=NULL;\r
+ int lat=0;\r
+ int lon=0;\r
+\r
+ cJSON *address_cjson_ = cJSON_GetObjectItem(address_cjson, "city");\r
+ if(address_cjson_)\r
+ {\r
+ city=address_cjson_->valuestring;\r
+ }\r
+ \r
+ \r
+ address_cjson_= cJSON_GetObjectItem(address_cjson, "subLocality");\r
+ if(address_cjson_)\r
+ {\r
+ subLocality=address_cjson_->valuestring;\r
+ } \r
+\r
+ address_cjson_=cJSON_GetObjectItem(address_cjson, "atm");\r
+ if(address_cjson_)\r
+ {\r
+ atm=address_cjson_->valuestring;\r
+ } \r
+ address_cjson_ = cJSON_GetObjectItem(address_cjson, "lat");\r
+ if(address_cjson_)\r
+ {\r
+ lat=address_cjson_->valueint;\r
+ } \r
+\r
+ address_cjson_ = cJSON_GetObjectItem(address_cjson, "lon");\r
+ if(address_cjson_)\r
+ {\r
+ lon=address_cjson_->valueint;\r
+ } \r
+ set_weather_address_data(lat,atm,city,subLocality,lon);\r
+ cJSON *daily = cJSON_GetObjectItem(root, "daily");\r
+ if(daily==NULL)\r
+ {\r
+ return ;\r
+ }\r
+ int count= cJSON_GetArraySize(daily);\r
+ for(int i=0;i<count;i++)\r
+ { \r
+ //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},\r
+ cJSON *data=cJSON_GetArrayItem(daily,i);\r
+\r
+ int tempMin=0;\r
+ int iconDay=0;\r
+ int fxDate=0;\r
+ char * textDay=NULL;\r
+ int tempMax=0;\r
+\r
+\r
+ cJSON *data_=cJSON_GetObjectItem(data,"tempMin");\r
+ if(data_&& cJSON_IsNumber(data_) )\r
+ {\r
+ tempMin=data_->valueint;\r
+ }\r
+ \r
+ data_=cJSON_GetObjectItem(data,"iconDay");\r
+ if(data_&& cJSON_IsNumber(data_) )\r
+ {\r
+ iconDay=data_->valueint;\r
+ }\r
+ \r
+ data_=cJSON_GetObjectItem(data,"fxDate");\r
+ if(data_&& cJSON_IsNumber(data_) )\r
+ {\r
+ fxDate=data_->valueint;\r
+ }\r
+ \r
+ data_=cJSON_GetObjectItem(data,"textDay");\r
+ if(data_&& cJSON_IsString(data_) )\r
+ {\r
+ textDay=data_->valuestring;\r
+ }\r
+ data_=cJSON_GetObjectItem(data,"tempMax");\r
+ if(data_&& cJSON_IsNumber(data_) )\r
+ {\r
+ tempMax=data_->valueint;\r
+ }\r
+ set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i);\r
+\r
+ }\r
+ ble_UpdateMainWeatherData();\r
+ cJSON_Delete(root);\r
+ return ;\r
+}\r
\r
uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气数据\r
{\r
\r
\r
cJSON *data_=cJSON_GetObjectItem(data,"tempMin");\r
- if(data_)\r
+ if(data_&& cJSON_IsNumber(data_) )\r
{\r
tempMin=data_->valueint;\r
}\r
\r
data_=cJSON_GetObjectItem(data,"iconDay");\r
- if(data_)\r
+ if(data_&& cJSON_IsNumber(data_) )\r
{\r
iconDay=data_->valueint;\r
}\r
\r
data_=cJSON_GetObjectItem(data,"fxDate");\r
- if(data_)\r
+ if(data_&& cJSON_IsNumber(data_) )\r
{\r
fxDate=data_->valueint;\r
}\r
\r
data_=cJSON_GetObjectItem(data,"textDay");\r
- if(data_)\r
+ if(data_&& cJSON_IsString(data_) )\r
{\r
textDay=data_->valuestring;\r
}\r
data_=cJSON_GetObjectItem(data,"tempMax");\r
- if(data_)\r
+ if(data_&& cJSON_IsNumber(data_) )\r
{\r
tempMax=data_->valueint;\r
}\r
fclose(fp);\r
return 0;\r
}\r
+ \r
char *str = fgets((char *)buf,size + 1,fp);\r
if(str!=NULL)\r
{\r
}\r
\r
fclose(fp);\r
- \r
- uint8_t check = 0;\r
- parse_jsonCheck_weather(buf,&check);\r
+\r
+ parse_jsonCheck_weather_post(buf);\r
+\r
free(buf);\r
\r
return 1;\r