- Carrying my full memory, you’re far away.
载着我满满的怀念,你渐行渐远。
一、需求
实现在RT-thread的MSH命令行中,输入命令获取指定城市天气信息。
二、实现
-1、利用《何志杰 – RT-thread入门课程–16.RT-Thread Nano-CJSON-心知天气获取》的例程修改,可以得到天气实况的数据包。
- 2、然后使实现是使获取城市温度的MSH命令能够指定城市这个参数。
void weathercmd(int argc,char **argv)
{
ESP8266_Link_Server(enumTCP, (char*)WEATHER_IP, (char*)WEATHER_PORT,Single_ID_0);//TCP
ESP8266_UnvarnishSend ();//传输模式为:透传
macESP8266_Usart ( "GET https://api.seniverse.com/v3/weather/now.jsonkey=ragjskuzlv5jzerq&location=%s\r\n\r\n",argv[1]);//以福州天气为例子获取
strEsp8266_Fram_Record .InfBit .FramLength = 0; //重新开始接收新的数据包
rt_thread_mdelay(1000);
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';
printf("Receive now data:%s\r\n",strEsp8266_Fram_Record .Data_RX_BUF);
cJSON_NowWeatherParse((char*)strEsp8266_Fram_Record .Data_RX_BUF, &weather_data);
ESP8266_ExitUnvarnishSend ( );//退出透传HZJ
ESP8266_Close_Link ( );//关闭TCP或UDP连接HZJ
}
MSH_CMD_EXPORT(weathercmd, Weather Data Get.);
- 这里为了简要,输出到终端的数据只有name、timezone、temperature。结果如下。(不知道什么原因,putty的中文显示不出来,显示是乱码)
三、参考资料
- 《何志杰 – RT-thread入门课程》–16.RT-Thread Nano-CJSON-心知天气获取