- 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-心知天氣獲取