Esp8266 从WiFi连接讲解其中的必备函数
来源:互联网 发布:数据分析师修炼 编辑:程序博客网 时间:2024/05/16 16:57
对于关注物联网的同志们,这款芯片并不陌生!然而,对于比较系统的讲解还是较少。对于这款芯片的关注者及测试者,决定对这款芯片做一些系统的讲解。 首先,我希望通过下面简短的程序来做一些说明,这段程序的函数几乎是每个Esp8266程序编写需要用到的,并且对于里面的一些参数进行解释。
#include "driver/uart.h"#include "user_main.h"void ICACHE_FLASH_ATTR wifi_conned(void *arg){ uint8 status; static uint8 count=0; os_timer_disarm(&connect_timer); count++; status=wifi_station_get_connect_status(); if(status==STATION_GOT_IP){ os_printf("wifi connect success!!"); return; }else{ if(count>=7){ os_printf("wifi connect fail!!"); return; } } os_timer_arm(&connect_timer,2000,NULL);}void ICACHE_FLASH_ATTR scan_done(void *arg,STATUS status){ uint8 ssid[33]; struct station_config config; if(status==OK) { struct bss_info *bss=(struct bss_info *)arg; bss=bss->next.stqe_next; while(bss!=NULL) { os_memset(ssid,0,33); if(os_strlen(bss->ssid)<=32) { os_memcpy(ssid,bss->ssid,os_strlen(bss->ssid)); }else{ os_memcpy(ssid,bss->ssid,32); } os_printf("+CWLAP:(%d,\"%s\",%d,\""MACSTR"\",%d)\r\n", bss->authmode, ssid, bss->rssi, MAC2STR(bss->bssid),bss->channel); bss = bss->next.stqe_next; } os_memcpy(&config.ssid,"PLK-UL00",32); os_memcpy(&config.password,"",64); wifi_station_set_config_current(&config); wifi_station_connect(); os_timer_setfn(&connect_timer,wifi_conned,NULL); os_timer_arm(&connect_timer,2000,NULL); }else{ }}void to_scan(void) { wifi_station_scan(NULL,scan_done); }void user_init(){ uart_init(115200,115200); uint8 opmode; opmode=wifi_get_opmode(); os_printf("当前模式为:%d",opmode); opmode=wifi_set_opmode(0x01); os_printf("当前模式为:%d",opmode); system_init_done_cb(to_scan);}void user_rf_pre_init(){}
*1. 初始化*
对于初始化函数,初学者也都会知道在user_main.c中有两个必备初始化函数,user_init()和user_rf_pre_init()函数。其中,user_init()是将近乎一切需要初始化的东西放入其中,除此外,就是设置这款芯片的工作模式。对于最后的 system_init_done_cb(init_done_cb_t cb)函数,在 user_init 中调用,注册系统初始化完成的回调函数。即对初始化之后该干什么有个交代,通常为WiFi扫描函数。
初始化完成回调函数
system_init_done_cb(init_done_cb_t cb)函数中的init_done_cb_t cb回调函数此处to_scan函数,为系统初始化完成后注册的wifi扫描函数。
2. WiFi扫描
在to_scan中,对WiFi扫描,利用的是乐鑫提供的wifi_station_scan函数,其中注册扫描完成的callback。
3. 扫描完成回调
扫描完成回调函数即在wifi_station_scan注册的scan_done函数,该函数的作用就是判断扫描状态以及station的参数struct station_config进行配置,是十分关键的一步。
* 定时器函数*
配置之后,就要连接了,那么连接只连接一次吗?不是的,如果连接一次不成功就要时时刻刻的重复连接,那么对于这种,我们都要放在定时器来完成。对于定时器函数,os_timer_setfn 必须在 timer 未使能的情况下调用,在 os_timer_arm 或 os_timer_arm_us 之前或者os_timer_disarm 之后,并在os_timer_setfn注册回调函数,即需要利用定时器完成的方法或动作,此处注册的是wifi_conned。
4. WiFi连接
wifi_conned即判断是否连接成功,连接如果不成功,由定时器完成反复连接。
小结:
其实就是初始化,扫描,参数配置,连接。几个工作用以不同函数连接,用回调函数显现。这几个绝对是ESP8266必备的函数,可以直接入库,根据不同需要来变化使用。如果有任何疑问或者技术交流可以加我qq1279915333,告诉我来自CSDN,欢迎指教!
- Esp8266 从WiFi连接讲解其中的必备函数
- ESP8266的WIFI连接
- arduino与ESP8266 WIFI模块的连接测试
- arduino与ESP8266 WIFI模块的连接测试
- ESP8266学习笔记6:ESP8266规范wifi连接操作
- ESP8266学习笔记6:ESP8266规范wifi连接操作
- esp8266 wifi模块的使用
- WiFi模块 ESP8266的用法
- 51单片机连接ESP8266串口WiFi模块
- WiFi-ESP8266入门开发(二)-连接WiFi网络
- ESP8266-从字符串中提取数值的函数
- 通过串口给ESP8266发送AT指令连接wifi的注意事项
- wifi模块:ESP8266-ESP-01的使用
- WIFI模块--ESP8266的学习记录
- ESP8266--学习笔记(二)扫描、连接WiFi
- 小e开发板(esp8266)连接Arduino实现WiFi扫描
- ESP8266 SDK开发篇(二)——连接wifi
- 【esp8266】小黑板ESP8266无线wifi SoC方案连接机智云最详细图文教程
- Java 用构造器确保初始化
- 友盟消息推送u-push
- butterknife源码分析:谈一谈Java的注解
- java 向上转型向下转型
- 免费的论文查重网站
- Esp8266 从WiFi连接讲解其中的必备函数
- C# 实现真正的透明控件(Windows桌面程序)
- AsyncTask异步任务 android
- iOS之ProtocolBuffer搭建和示例demo
- 如何在同一台电脑上使用两个Git账户
- CJOJ P2298 【NOI2016】区间
- android的Binder框架
- Using scatter plots for multivariate data —— python data science cookbook
- 区间合并