从零开始的ESP8266探索(16)-扫描网络演示
文章目录
- 目的
- 使用演示
- 同步扫描
- 异步扫描
- 总结
目的
ESP8266可以通过扫描获取周围环境中的WiFi热点,所以我们也可以先扫描一下再决定连接到某个网络上,这也是一种常见的应用场景。
使用演示
同步扫描
使用下面代码进行同步扫描,同步扫描时会阻塞程序运行:
#include "ESP8266WiFi.h"void setup()
{Serial.begin(115200);Serial.println();WiFi.mode(WIFI_STA); //设置为STA模式WiFi.disconnect(); //断开当前可能的连接delay(100);Serial.println("scan start");int n = WiFi.scanNetworks(); //扫描并返回搜索到的网络数量,该方法默认会阻塞Serial.println("scan done");if (n != 0){Serial.print(n);Serial.println(" networks found");for (int i = 0; i < n; ++i){Serial.println();Serial.print(i + 1);Serial.print(": ");Serial.print(WiFi.SSID(i)); //打印网络名称Serial.print(" ");Serial.print(WiFi.RSSI(i)); //打印信号强度Serial.print(" ");Serial.print(WiFi.channel(i)); //打印网络使用通道Serial.print(" ");Serial.print((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? "未加密" : "加密"); //打印是否加密delay(10);}}
}void loop()
{
}

异步扫描
使用下面代码进行异步扫描,异步扫描不会阻塞程序运行:
#include "ESP8266WiFi.h"void setup()
{Serial.begin(115200);Serial.println();WiFi.mode(WIFI_STA); //设置为STA模式WiFi.disconnect(); //断开当前可能的连接delay(100);Serial.println("开始扫描");WiFi.scanNetworks(true); //启动异步扫描
}void loop()
{delay(1000);int n = WiFi.scanComplete(); //获取扫描状态if (n >= 0){Serial.println("扫描完成");for (int i = 0; i < n; ++i){Serial.println();Serial.print(i + 1);Serial.print(": ");Serial.print(WiFi.SSID(i)); //打印网络名称Serial.print(" ");Serial.print(WiFi.RSSI(i)); //打印信号强度Serial.print(" ");Serial.print(WiFi.channel(i)); //打印网络使用通道Serial.print(" ");Serial.print((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? "未加密" : "加密"); //打印是否加密delay(10);}WiFi.scanDelete(); //清除内存中的扫描结果}else if (n == -1){Serial.println("正在扫描");}else if (n == -2){Serial.println("未进行扫描");}
}

总结
扫描网络功能为ESP8266的使用又增加了一种应用场景,使用起来将会更加方便。
更多内容可以参考如下:
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-examples.html
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-class.html
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
