03-ESP8226的WiFi扫描模式学习
上次学习Soft-AP模式后,今天学习WiFi的扫描
文章目录
- 03-ESP8266的WiFi扫描模式学习
- WiFi扫描的过程
- ESP8266WiFiScan.h库
- 一般配置流程:
- 扫描例程
- 异步扫描
- 同步扫描
- 串口调试数据
03-ESP8266的WiFi扫描模式学习
扫描的库主要对应的头文件ESP8266WiFiScan.h,主要的作用就是扫描得到热点的SSID信息。
WiFi扫描的过程
- 触发扫描
- 等待完成
- 提供结果
一般以上过程完成需要几百毫秒,根据实现以上两种方式的不同区分为同步扫描和异步扫描
同步扫描:需要等待扫描过程完成才能继续下面的操作
异步扫描:扫描过程可以执行其他任务
ESP8266WiFiScan.h库
根据库文件函数功能分为两类:
1.扫描操作
int8_t scanNetworks(bool async = false, bool show_hidden = false, uint8 channel = 0, uint8* ssid = NULL);void scanNetworksAsync(std::function<void(int)> onComplete, bool show_hidden = false);int8_t scanComplete();void scanDelete();
2.扫描信息
bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden);String SSID(uint8_t networkItem);uint8_t encryptionType(uint8_t networkItem);int32_t RSSI(uint8_t networkItem);uint8_t * BSSID(uint8_t networkItem);String BSSIDstr(uint8_t networkItem);int32_t channel(uint8_t networkItem);bool isHidden(uint8_t networkItem);
一般配置流程:
配置WiFi为STA模式
关闭已经连接的AP热点
选择同步或者异步扫描
扫描例程
/*
内容:这个例程是学习ESP8266的扫描模式,以下是官方例程
时间:2022.4.42
作者:bobo
邮箱:980181362@qq.com
*///头文件
#include <ESP8266WiFi.h> void setup() {Serial.begin(9600);Serial.println(F("\nESP8266 WiFi scan example"));// Set WiFi to station modeWiFi.mode(WIFI_STA);// Disconnect from an AP if it was previously connectedWiFi.disconnect();delay(100);
}void loop()
{String ssid;int32_t rssi;uint8_t encryptionType;uint8_t* bssid;int32_t channel;bool hidden;int scanResult;Serial.println(F("Starting WiFi scan..."));//异步扫描,将扫描结果返回WiFi.scanNetworks(/*Async*/true,/*scan-hide*/true);//这里延时体现了异步扫描的特点delay(3000);//实际测试3s左右//注意这里写法和下面同步扫描不一样 scanResult = WiFi.scanComplete();//同步扫描,将扫描结果返回// scanResult = WiFi.scanNetworks(/*Sync*/false,/*scan-hide*/true);//根据结果打印对应的信息if (scanResult == 0) {Serial.println(F("No networks found"));} else if (scanResult > 0) {Serial.printf(PSTR("%d networks found:\n"), scanResult);// Print unsorted scan resultsfor (int8_t i = 0; i < scanResult; i++) {WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"), i, channel, bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], rssi, (encryptionType == ENC_TYPE_NONE) ? ' ' : '*', hidden ? 'H' : 'V', ssid.c_str());yield();}} else {Serial.printf(PSTR("WiFi scan error %d"), scanResult);}// Wait a bit before scanning againdelay(5000);
}
其中同步和异步显现在函数调用后的延时上
异步扫描
WiFi.scanNetworks(/*Async*/true,/*scan-hide*/true);
//这里延时体现了异步扫描的特点
delay(3000);//实际测试3s左右
//注意这里写法和下面同步扫描不一样
scanResult = WiFi.scanComplete();//把扫描的数量赋值
如果没有delay(3000);
话会显示WiFi scan error -1,也就是扫描中
#define WIFI_SCAN_RUNNING (-1)
#define WIFI_SCAN_FAILED (-2)
同步扫描
//同步扫描,将扫描结果返回
scanResult = WiFi.scanNetworks(/*sync*/false,/*scan-hide*/true);
串口调试数据
ESP8266 WiFi scan example
Starting WiFi scan…
17 networks found:
00: [CH 01] [20:6B:E7:2A:D6:4B] -70dBm * V 灏忎竵涓?
01: [CH 01] [74:05:A5:36:9A:E4] -82dBm * V liuZH
02: [CH 01] [4C:D1:A1:14:A1:ED] -71dBm * H
03: [CH 01] [4C:D1:A1:14:A1:E9] -76dBm * H
04: [CH 04] [08:40:F3:C3:B5:01] -81dBm * V Tenda_C3B500
05: [CH 06] [A0:4C:0C:8C:4E:66] -70dBm * V 702
06: [CH 06] [A2:4C:0C:AC:4E:66] -70dBm * V 702_Wi-Fi5
07: [CH 01] [14:DE:39:32:F5:FC] -87dBm * V HONOR-051LI8
08: [CH 08] [A4:2A:71:6D:F1:40] -77dBm * V ChinaNet-rbX7
09: [CH 08] [DC:71:37:4F:EF:84] -74dBm * V CMCC-hUby
10: [CH 01] [04:4A:6C:70:EB:65] -91dBm * H
11: [CH 09] [C8:3A:35:3A:27:28] -87dBm * V 1203
12: [CH 11] [58:41:20:4F:F4:5A] -79dBm * V TP-LINK_F45A
13: [CH 11] [5A:41:20:2F:F4:5A] -79dBm * H
14: [CH 13] [62:BB:34:24:F9:1E] -42dBm * V redmi
15: [CH 13] [54:DF:24:B3:73:2D] -73dBm * V ChinaNet-wcdk
-LINK_F45A
13: [CH 11] [5A:41:20:2F:F4:5A] -79dBm * H
14: [CH 13] [62:BB:34:24:F9:1E] -42dBm * V redmi
15: [CH 13] [54:DF:24:B3:73:2D] -73dBm * V ChinaNet-wcdk
16: [CH 01] [4C:D1:A1:14:A1:E8] -72dBm * V HW-901
03-ESP8226的WiFi扫描模式学习相关推荐
- 【安卓Framework学习】Wifi框架学习之热点评分机制
系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...
- 【安卓Framework学习】Wifi框架学习之核心类
系列文章目录 [安卓Framework学习]Wifi框架学习之开启与关闭流程 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开 ...
- 【安卓Framework学习】Wifi框架学习之wifi状态机
系列文章目录 [安卓Framework学习]Wifi框架学习之核心类. [安卓Framework学习]Wifi框架学习之开启与关闭流程. [安卓Framework学习]Wifi框架学习之连接与断开流程 ...
- 【安卓Framework学习】Wifi框架学习之开启与关闭流程
系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...
- WiFi基础学习到实战(三:WiFi网络“物理层”)
欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型,在"数据链路层"的定义进行了解,数据传送经过LLC层被封装为一个MSDU,通过MAC层封装为一个MPD ...
- ESP8266 WIFI模块学习之路(2)——模块与单片机连接进行远程操作
上一个博客:ESP8266 WIFI模块学习之路(1)是关于对串口连接的,简单验证ESP8266是怎么样连接及其功能验证,下面将通过单片机连接,和手机进行远程操作. ESP8266和单片机的连接,我这 ...
- ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)
ESP32 WIFI MESH学习笔记 文章目录 前言 一.服务器部分 二.ESP32部分 1.引入例子 2.修改用户名称及密码 3.初始化IOT登陆信息 4.初始化 5.侦听函数 6.主函数 7.子 ...
- WiFi基础学习到实战(一:802.11介绍)
针对WLAN技术的前些课节分享,知识点比较独立,相互之间比较零散.以一个小功能或特性作为一次分享.通过一年多对WLAN技术的了解,为了彼此互相学习,在WLAN技术能有体系性的一起探讨进步.我们新起一个 ...
- WiFi基础学习到实战(二:WiFi网络“数据链路层”)
欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型进行了分析,主要将OSI模型的"数据链路层"定义分为"LLC层"和"MAC ...
最新文章
- UVA 1376	 Animal Run 最短路
- 软核、硬核以及固核的概念
- 【工程化】从0搭建VueJS移动端组件库开发框架
- 嵌入式linux字符设备驱动
- AcWing 211. 计算系数
- org.springframework.dao.InvalidDataAccessApiUsageException
- 文件上传限制文件类型
- GNOME界面简单使用
- yum安装:zabbix-web-4.2.8-1.el7.noarch: [Errno 256] No more mirrors to try
- 端口转发、映射、代理
- movielens1M数据处理
- “橙子”还是“橙汁”,这是一个问题
- 嵌入式软件工程师待遇如何?嵌入式开发越老越吃香吗?
- Python 练习005 ——疯狂填词程序
- 《让子弹飞》系列——彩蛋之“城南两大家族”
- c# picturebox 刷新_C# picturebox画图问题
- 【Unity3D应用案例系列】答题系统开发
- 浅谈MYSQL之级联复制(附带实验)
- 计算机玩游戏不能全屏,电脑游戏不能全屏怎么办 电脑游戏不能全屏的解决方法...
- html文件打印出白纸,打印机打出白纸怎么回事 原因及维修方法介绍