上次学习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扫描模式学习相关推荐

  1. 【安卓Framework学习】Wifi框架学习之热点评分机制

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...

  2. 【安卓Framework学习】Wifi框架学习之核心类

    系列文章目录 [安卓Framework学习]Wifi框架学习之开启与关闭流程 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开 ...

  3. 【安卓Framework学习】Wifi框架学习之wifi状态机

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类. [安卓Framework学习]Wifi框架学习之开启与关闭流程. [安卓Framework学习]Wifi框架学习之连接与断开流程 ...

  4. 【安卓Framework学习】Wifi框架学习之开启与关闭流程

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...

  5. WiFi基础学习到实战(三:WiFi网络“物理层”)

    欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型,在"数据链路层"的定义进行了解,数据传送经过LLC层被封装为一个MSDU,通过MAC层封装为一个MPD ...

  6. ESP8266 WIFI模块学习之路(2)——模块与单片机连接进行远程操作

    上一个博客:ESP8266 WIFI模块学习之路(1)是关于对串口连接的,简单验证ESP8266是怎么样连接及其功能验证,下面将通过单片机连接,和手机进行远程操作. ESP8266和单片机的连接,我这 ...

  7. ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)

    ESP32 WIFI MESH学习笔记 文章目录 前言 一.服务器部分 二.ESP32部分 1.引入例子 2.修改用户名称及密码 3.初始化IOT登陆信息 4.初始化 5.侦听函数 6.主函数 7.子 ...

  8. WiFi基础学习到实战(一:802.11介绍)

    针对WLAN技术的前些课节分享,知识点比较独立,相互之间比较零散.以一个小功能或特性作为一次分享.通过一年多对WLAN技术的了解,为了彼此互相学习,在WLAN技术能有体系性的一起探讨进步.我们新起一个 ...

  9. WiFi基础学习到实战(二:WiFi网络“数据链路层”)

    欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型进行了分析,主要将OSI模型的"数据链路层"定义分为"LLC层"和"MAC ...

最新文章

  1. UVA 1376 Animal Run 最短路
  2. 软核、硬核以及固核的概念
  3. 【工程化】从0搭建VueJS移动端组件库开发框架
  4. 嵌入式linux字符设备驱动
  5. AcWing 211. 计算系数
  6. org.springframework.dao.InvalidDataAccessApiUsageException
  7. 文件上传限制文件类型
  8. GNOME界面简单使用
  9. yum安装:zabbix-web-4.2.8-1.el7.noarch: [Errno 256] No more mirrors to try
  10. 端口转发、映射、代理
  11. movielens1M数据处理
  12. “橙子”还是“橙汁”,这是一个问题
  13. 嵌入式软件工程师待遇如何?嵌入式开发越老越吃香吗?
  14. Python 练习005 ——疯狂填词程序
  15. 《让子弹飞》系列——彩蛋之“城南两大家族”
  16. c# picturebox 刷新_C# picturebox画图问题
  17. 【Unity3D应用案例系列】答题系统开发
  18. 浅谈MYSQL之级联复制(附带实验)
  19. 计算机玩游戏不能全屏,电脑游戏不能全屏怎么办 电脑游戏不能全屏的解决方法...
  20. html文件打印出白纸,打印机打出白纸怎么回事 原因及维修方法介绍

热门文章

  1. Ubuntu16.04保存/home盘下的数据重装Ubuntu系统
  2. 密码学(第二讲)---凯撒密码破译和简单替换密码
  3. CentOS 7.6 配置静态IP
  4. Chipscope调试工具使用说明
  5. 【翻译】为了3D游戏粉丝的[(超级)街头霸王4]图形讲座(前篇)
  6. 京东笔试题 小东拉票,从其他候选人抢票
  7. React Native包体积优化之图片优化
  8. Supermap iDesktop模型生成缓存参数详解
  9. 计算机视觉基础 相机模型
  10. Maui学习之路(一)--Windows窗体设置