STM32-Player/User/APP_Weather/APP_Weather.c

120 lines
2.8 KiB
C
Raw Normal View History

2021-09-28 14:27:44 +08:00
#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>");
2021-09-28 14:27:44 +08:00
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;
}