资源简介

正点原子精英版,使用WIFI模块ESP8266获取网络天气,在此分享,共同学习
代码实现连接特定热点或者WIFI,通过天气接口API获取网络时间和天气并用图片显示(需要用到显示屏)

资源截图

代码片段和文件信息

#include “weather.h“
#include “wifista.h“
#include “usart.h“
#include “malloc.h“
#include “usart3.h“
#include “delay.h“
#include “text.h“
#include “parsejson.h“

//天气连接端口号:80
#define WEATHER_PORTNUM  “80“
//天气服务器IP
#define WEATHER_SERVERIP  “api.seniverse.com“

//时间端口号
#define TIME_PORTNUM “80“
//时间服务器IP
#define TIME_SERVERIP “www.beijing-time.org“



typedef struct   //结构体。
{
    vu16  year;
    vu8   month;
    vu8   date;
    vu8   hour;
    vu8   min;
    vu8   sec;  
}nt_calendar_obj;    

//定义结构体变量

 nt_calendar_obj nwt;  //定义结构体变量

//获取一次实时天气
//返回:0---获取成功,1---获取失败
u8 get_current_weather(void)
{
u8 *p;
u8 res;
// u8 ipbuf[16];  //IP缓存
p=mymalloc(SRAMIN40); //申请40字节内存
sprintf((char*)p“AT+CIPSTART=\“TCP\“\“%s\“%s“WEATHER_SERVERIPWEATHER_PORTNUM);    //配置目标TCP服务器
res = atk_8266_send_cmd(p“OK“200);//连接到目标TCP服务器
if(res==1)
{
myfree(SRAMINp);
return 1;
}
delay_ms(300);
atk_8266_send_cmd(“AT+CIPMODE=1““OK“100);      //传输模式为:透传
// atk_8266_get_wanip(ipbuf);//获取WAN IP

USART3_RX_STA=0;
atk_8266_send_cmd(“AT+CIPSEND““OK“100);         //开始透传
printf(“start trans...\r\n“);
      u3_printf(“GET https://api.seniverse.com/v3/weather/now.json?key=SchJgYiyf8da4yV7j&location=beijing&language=zh-Hans&unit=c\n\n“);
//u3_printf(“GET https://api.seniverse.com/v3/weather/now.json?key=x3owc7bndhbvi8oq&location=beijing&language=zh-Hans&unit=c\n\n“);
delay_ms(20);//延时20ms返回的是指令发送成功的状态
// atk_8266_at_response(1);
USART3_RX_STA=0; //清零串口3数据
delay_ms(1000);
// atk_8266_at_response(0);
if(USART3_RX_STA&0X8000) //此时再次接到一次数据,为天气的数据

USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加结束符

parse_now_weather();


atk_8266_quit_trans();//退出透传
atk_8266_send_cmd(“AT+CIPCLOSE““OK“50);         //关闭连接
myfree(SRAMINp);
return 0;
}

//获取3天的天气
u8 get_3days_weather(void)
{
u8 *p;
u8 res;
u8 ipbuf[16];  //IP缓存
p=mymalloc(SRAMIN40); //申请40字节内存
sprintf((char*)p“AT+CIPSTART=\“TCP\“\“%s\“%s“WEATHER_SERVERIPWEATHER_PORTNUM);    //配置目标TCP服务器
res = atk_8266_send_cmd(p“OK“200);//连接到目标TCP服务器
if(res==1)
{
myfree(SRAMINp);
return 1;
}
delay_ms(300);
atk_8266_send_cmd(“AT+CIPMODE=1““OK“100);      //传输模式为:透传
atk_8266_get_wanip(ipbuf);//获取WAN IP
sprintf((char*)p“IP地址:%s 端口:%s“ipbuf(u8*)WEATHER_PORTNUM);
// Show_Str(306520012p120); //显示IP地址和端口
USART3_RX_STA=0;
atk_8266_send_cmd(“AT+CIPSEND““OK“100);         //开始透传
printf(“start trans...\r\n“);
   u3_printf(“GET https://api.seniverse.com/v3/weather/daily.json?key=SchJgYiyf8da4yV7j&location=beijing&language=zh-Hans&unit=c&start=0&days=5\n\n“);
// u3_printf(“GET https://api.seniverse.com/v3/weather/daily.json?key=x3owc7bndhbvi8oq&location=beijing&language=zh-Hans&unit=c&start=0&days=5\n\n“);
delay_ms(20);//延时20ms返回的是指令发送成功的状态
// atk_8266_at_response(1);
USART3_RX_STA=0; //清零串口3数据
delay_ms(1000);
// atk_8266_at_response(0);
if(USART3_RX_S

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\ATK-ESP8266\
     文件        8226  2019-04-23 12:38  ESP8266获取网络天气\ATK-ESP8266\weather.c
     文件         192  2017-09-19 17:11  ESP8266获取网络天气\ATK-ESP8266\weather.h
     文件        5565  2019-04-11 13:15  ESP8266获取网络天气\ATK-ESP8266\wifista.c
     文件         682  2017-09-18 17:32  ESP8266获取网络天气\ATK-ESP8266\wifista.h
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\cJSON\
     文件       28578  2017-09-21 14:42  ESP8266获取网络天气\cJSON\cJSON.c
     文件        7526  2015-02-13 18:53  ESP8266获取网络天气\cJSON\cJSON.h
     文件        1091  2013-08-14 14:02  ESP8266获取网络天气\cJSON\LICENSE
     文件       24451  2018-07-28 13:16  ESP8266获取网络天气\cJSON\parsejson.c
     文件         142  2017-09-13 16:58  ESP8266获取网络天气\cJSON\parsejson.h
     文件        8751  2009-10-28 23:48  ESP8266获取网络天气\cJSON\README
     文件        6702  2015-02-13 19:06  ESP8266获取网络天气\cJSON\test.c
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\cJSON\tests\
     文件         583  2009-08-23 23:46  ESP8266获取网络天气\cJSON\tests\test1
     文件         242  2009-08-23 23:46  ESP8266获取网络天气\cJSON\tests\test2
     文件         605  2009-08-23 23:46  ESP8266获取网络天气\cJSON\tests\test3
     文件        3467  2009-08-23 23:47  ESP8266获取网络天气\cJSON\tests\test4
     文件         873  2009-08-23 23:47  ESP8266获取网络天气\cJSON\tests\test5
     文件      149970  2017-09-21 15:18  ESP8266获取网络天气\cJSON\utf8togbk.c
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\CORE\
     文件       17273  2010-06-07 10:25  ESP8266获取网络天气\CORE\core_cm3.c
     文件       85714  2011-02-09 14:59  ESP8266获取网络天气\CORE\core_cm3.h
     文件       15514  2018-07-28 11:02  ESP8266获取网络天气\CORE\startup_stm32f10x_hd.s
     文件       12765  2011-03-10 10:52  ESP8266获取网络天气\CORE\startup_stm32f10x_md.s
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\FATFS\
     目录           0  2020-01-02 16:41  ESP8266获取网络天气\FATFS\doc\
     文件        3425  2015-02-11 12:11  ESP8266获取网络天气\FATFS\doc\css_e.css
     文件        3840  2015-02-12 20:17  ESP8266获取网络天气\FATFS\doc\css_j.css
     文件         125  2015-02-11 12:11  ESP8266获取网络天气\FATFS\doc\css_p.css
     目录           0  2019-10-19 13:20  ESP8266获取网络天气\FATFS\doc\en\
............此处省略373个文件信息

评论

共有 条评论