ESP8266连接WIFI

ESP8266 WIFI事件处理

之前用ESP8266判读wifi状态使用定时器回调调用wifi_station_get_connect_status()获取。这种不方便及时处理某些事情,比如WIFI断开。

现在使用
wifi_set_event_handler_cb(wifi_handle_event_cb);
注册wifi事件处理函数,这里面进行WIFI状态改变的一些操作。
比如在EVENT_STAMODE_GOT_IP里进行MQTT连接。
在EVENT_STAMODE_DISCONNECTED里进行切换WIFI。

void wifi_handle_event_cb(System_Event_t *evt)
{
	//os_printf("event %x\n", evt->event);
	switch (evt->event) {
	case EVENT_STAMODE_CONNECTED:
			os_printf("connect to ssid %s, channel %d\n",
			evt->event_info.connected.ssid,
			evt->event_info.connected.channel);
			break;
	case EVENT_STAMODE_DISCONNECTED:
			os_printf("disconnect from ssid %s, reason %d\n",
			evt->event_info.disconnected.ssid,
			evt->event_info.disconnected.reason);
			break;
	case EVENT_STAMODE_AUTHMODE_CHANGE:
			os_printf("mode: %d -> %d\n",
			evt->event_info.auth_change.old_mode,
			evt->event_info.auth_change.new_mode);
			break;
	case EVENT_STAMODE_GOT_IP:						//WIFI连接成功,
			os_printf("ip:" IPSTR ",mask:" IPSTR ",gw:" IPSTR,
			IP2STR(&evt->event_info.got_ip.ip),
			IP2STR(&evt->event_info.got_ip.mask),
			IP2STR(&evt->event_info.got_ip.gw));
			INFO("MQTT:start connect mqtt...\r\n");
			update_verify();	//WiFi连接成功更新证书
			MQTT_Connect(&mqttClient);
			creat_web_servser(); //建立TCP侦听
			creat_root_server(); //创建设备服务端,一个店里的设备全部连到这里,通过无线通讯控制店内设备
			os_printf("\n");
			break;
	case EVENT_SOFTAPMODE_STACONNECTED:
			os_printf("station: " MACSTR "join, AID = %d\n",
			MAC2STR(evt->event_info.sta_connected.mac),
			evt->event_info.sta_connected.aid);
			break;
	case EVENT_SOFTAPMODE_STADISCONNECTED:
			os_printf("station: " MACSTR "leave, AID = %d\n",
			MAC2STR(evt->event_info.sta_disconnected.mac),
			evt->event_info.sta_disconnected.aid);
			break;
	default:
			break;
	}
}

附上原来处理WIFI状态的方法:

/*连接WiFi*/
void ICACHE_FLASH_ATTR
wifi_connect()
{
	os_timer_disarm(&wifi_connect_timer);
	wifi_state =  wifi_station_get_connect_status();
	INFO("wifi_state = %d \r\n",wifi_state);
	if(wifi_state == STATION_GOT_IP)
	{
		INFO("WIFI CONNECTED!\r\n");
		update_verify();	//WiFi连接成功更新证书
		MQTT_Connect(&mqttClient);
		creat_web_servser(); //建立TCP侦听
		creat_root_server(); //创建设备服务端,一个店里的设备全部连到这里,通过无线通讯控制店内设备
		return;
	}
	os_timer_arm(&wifi_connect_timer,2000,0);
}
void ICACHE_FLASH_ATTR
WIFI_CONNECT()
{
	wifi_set_opmode(STATIONAP_MODE); //设置模式
	wifi_station_set(NORMAL); //配置wifi,station和softap信息
	wifi_station_connect();
	os_timer_setfn(&wifi_connect_timer,wifi_connect,NULL); //开始连接wifi
	os_timer_arm(&wifi_connect_timer,1000,0);
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值