120 lines
2.8 KiB
C
120 lines
2.8 KiB
C
|
|
#include "sys.h"
|
|||
|
|
#include "systick.h"
|
|||
|
|
|
|||
|
|
#include "key.h"
|
|||
|
|
|
|||
|
|
#include "GameEngine.h"
|
|||
|
|
#include "WLAN.h"
|
|||
|
|
|
|||
|
|
#include "APP_Weather.h"
|
|||
|
|
|
|||
|
|
/**************************************** ˽<>ж<EFBFBD><D0B6><EFBFBD> ****************************************/
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
uint8_t city[20];
|
|||
|
|
uint8_t weather[20];
|
|||
|
|
uint8_t temp[20];
|
|||
|
|
uint8_t wind_dir[20];
|
|||
|
|
uint8_t wind_force[20];
|
|||
|
|
uint8_t humidity[20];
|
|||
|
|
uint8_t quality[20];
|
|||
|
|
} Weather;
|
|||
|
|
|
|||
|
|
/*****************************************************************************************/
|
|||
|
|
|
|||
|
|
/**************************************** ȫ<>ֱ<EFBFBD><D6B1><EFBFBD> ****************************************/
|
|||
|
|
|
|||
|
|
Weather weather;
|
|||
|
|
uint8_t city_str[30];
|
|||
|
|
|
|||
|
|
/*****************************************************************************************/
|
|||
|
|
|
|||
|
|
/**************************************** ˽<>к<EFBFBD><D0BA><EFBFBD> ****************************************/
|
|||
|
|
|
|||
|
|
void APP_Weather_SetCity(uint8_t *str);
|
|||
|
|
uint8_t APP_Weather_Sync(void);
|
|||
|
|
|
|||
|
|
/*****************************************************************************************/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void APP_Weather_Launcher(void)
|
|||
|
|
{
|
|||
|
|
APP_Weather_SetCity("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
|
|||
|
|
GE_Draw_ClrAll(WHITE);
|
|||
|
|
|
|||
|
|
if (APP_Weather_Sync())
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %s %s %s %s %s %s %s\n",
|
|||
|
|
weather.city,
|
|||
|
|
weather.weather,
|
|||
|
|
weather.temp,
|
|||
|
|
weather.wind_dir,
|
|||
|
|
weather.wind_force,
|
|||
|
|
weather.humidity,
|
|||
|
|
weather.quality);
|
|||
|
|
|
|||
|
|
uint8_t temp_str[200];
|
|||
|
|
sprintf(temp_str,
|
|||
|
|
"<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD>¶ȣ<EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\nʪ<EFBFBD>ȣ<EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n",
|
|||
|
|
weather.city,
|
|||
|
|
weather.weather,
|
|||
|
|
weather.temp,
|
|||
|
|
weather.wind_dir,
|
|||
|
|
weather.wind_force,
|
|||
|
|
weather.humidity,
|
|||
|
|
weather.quality);
|
|||
|
|
GE_GUI_MsgBox(5, 5, 310, 230, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", temp_str, NULL);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n");
|
|||
|
|
|
|||
|
|
GE_GUI_MsgBox(5, 5, 310, 230, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>", NULL);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
KEY_WaitKey(JOY_L);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param str: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void APP_Weather_SetCity(uint8_t *str)
|
|||
|
|
{
|
|||
|
|
strcpy(city_str, str);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @retval <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD> 0
|
|||
|
|
*/
|
|||
|
|
uint8_t APP_Weather_Sync(void)
|
|||
|
|
{
|
|||
|
|
uint8_t weather_str[50];
|
|||
|
|
if (WLAN_GetWeather(weather_str, city_str) != 1)
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
uint8_t *p;
|
|||
|
|
|
|||
|
|
strtok(weather_str, "&");
|
|||
|
|
strcpy(weather.city, weather_str);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.weather, p);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.temp, p);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.wind_dir, p);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.wind_force, p);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.humidity, p);
|
|||
|
|
p = strtok(NULL, "&");
|
|||
|
|
strcpy(weather.quality, p);
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|