ESP8266 WIFI 連接(指定WiFi SSID/password方式):?
入口函數(shù):user_init();
思路:1、等系統(tǒng)初始化完成,掃描附近的2.4G信道:
? ??????void ?to_scan(void) { wifi_station_scan(NULL,scan_done); } ?//調(diào)用wifi_station_scan()來掃描,在scan_done(void *arg, STATUS status)里給出掃描結果。
????????void ?user_init(void) { wifi_set_opmode(STATION_MODE); system_init_done_cb(to_scan); ?} ?//工作模式必須包含STA模式,SOFTAP模式不能說掃描。調(diào)用system_init_done_cb來初始化,初始化以后進行to_scan()。
2、使用scan_done()檢查掃描結果,要么可以列出掃描到的WiFi,要么也可以指定SSID進行連接。
static void ICACHE_FLASH_ATTR scan_done(void *arg, STATUS status) {
????if (status == OK) { ? ? //列出掃描到的WiFi,可以不用。也可以按特定SSID掃描。
????????struct bss_info *bss_link = (struct bss_info *)arg;
????????bss_link = bss_link->next.stqe_next;//ignore first
????????while (bss_link != NULL){
????????????os_memset(ssid, 0, 33);//填充
????????????if (os_strlen(bss_link->ssid) <= 32){
????????????????os_memcpy(ssid, bss_link->ssid, os_strlen(bss_link->ssid));//拷貝
? ? ? ? ? ? } else{
????????????????????os_memcpy(ssid, bss_link->ssid, 32);
? ? ? ? ? ?}
????????os_sprintf(temp,"+CWLAP:(%d,\"%s\",%d,\""MACSTR"\",%d)\r\n",
????????bss_link->authmode, ssid, bss_link->rssi,
????????MAC2STR(bss_link->bssid),bss_link->channel);
????????uart0_sendStr(temp);
????????bss_link = bss_link->next.stqe_next;
????????}
//指定SSID進行連接:
os_memcpy(&stationConf.ssid, "NATUREFUTURE-ONE", 32);
os_memcpy(&stationConf.password, "nafuture", 64);
wifi_station_set_config(&stationConf);
wifi_station_connect();
//開始連接后,過2秒查看連接結果,是否得到了IP.
os_timer_disarm(&connect_timer);
os_timer_setfn(&connect_timer, wifi_checkout, NULL);
os_timer_arm(&connect_timer, 2000, NULL);
}
3、檢查是否得到IP:
void ICACHE_FLASH_ATTR ?wifi_check(void *arg){
static uint8 count=0;
uint8 status;
os_timer_disarm(&connect_timer); //關閉定時器,專心處理結果
count++; //延時
status = wifi_station_get_connect_status(); //查詢WiFi連接結果
if(status == STATION_GOT_IP){ //得到IP地址
????os_printf("wifi connect.\r\n");
????return;
}else{
????if(count > 7){ //延時7次內(nèi)都沒有得到IP地址
????os_printf("wifi connect fail.\r\n");
????return;}
????}
os_timer_arm(&connect_timer,2000,NULL);
}
********參考官方文檔ESP8266 NONOS SDK和其他前輩的結果,作自我學習記錄之用。