当前位置: 首页 > news >正文

ESP32作为Wi-Fi AP模式的测试

一、AP模式的流程

初始化阶段 (Init Phase):

  • 1.1: Main task(主任务)初始化LwIP(轻量级TCP/IP协议栈)。

     ESP_ERROR_CHECK(esp_netif_init());

  • 1.2: 创建和初始化Event  task(事件任务)。

     ESP_ERROR_CHECK(esp_event_loop_create_default());

  • 1.3: 创建和初始化Wi-Fi任务。

wifi_init_softap();

  • 1.4: 创建并初始化应用任务。

      xTaskCreate(tcp_client_task, "tcp_client_task", 4096, NULL, 5, NULL);

配置阶段 (Configure Phase):

  • 2.1: 配置Wifi,确保接入点的参数设置正确。

       wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();

       ESP_ERROR_CHECK(esp_wifi_init(&cfg));

  • 2.2: 注册Wifi事件处理器

ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, NULL, NULL));

启动阶段 (Start Phase):

  • 3.1: 启动Wi-Fi。ESP_ERROR_CHECK(esp_wifi_start());
  • 3.2:WIFI_EVENT_AP_START 事件触发,表示Wi-Fi接入点启动完成。

esp_event_handler_instance_register处理事件触发

  • 3.3:应用任务或事件任务处理接入点启动后的逻辑。

连接阶段 (Connect Phase):

  • 4.1: WIFI_EVENT_AP_STA_CONNECTED 事件触发,表示有设备连接到接入点。esp_event_handler_instance_register处理事件触发
  • 4.2: 应用任务或事件任务处理连接设备后的逻辑。

断开连接阶段 (Disconnect Phase):

  • 5.1: WIFI_EVENT_STA_DISCONNECTED 事件触发,表示连接的设备断开。
  • 5.2: 应用任务处理断开设备后的逻辑。
  • 5.3: 处理断开连接的具体细节,例如清理资源或重启连接。

去初始化阶段 (Deinit Phase):

  • 6.1: 断开Wi-Fi连接。
  • 6.2: 停止Wi-Fi服务。
  • 6.3: 去初始化Wi-Fi,清理所有Wi-Fi相关的资源。

二、代码流程

ESP32作为TCP Server—— IP地址: 192.168.10.1 端口号:8080

网络调试助手作为TCP Client——IP地址: 默认分配为192.168.10.x

主函数初始化 AP 模式:wifi_init_softap()

  • 1.初始化NVS
  • 2.初始化 TCP/IP 协议栈
  • 3.初始化esp事件循环
  • 4.创建 Wi-Fi 接口,包括IP地址、子网掩码和网关
  • 5.配置 Wi-Fi 事件处理器(函数指针指向函数wifi_event_handler)
  • 6.设置 Wi-Fi 模式为 AP 模式,配置 AP 模式参数
  • 7.启动Wi-Fi

Wi-Fi 事件处理器wifi_event_handler

  • 1.处理客户端连接事件
  • 2.处理客户端断开连接事件

注意:事件处理器并不是独立的线程,而是被event_loop_task这个后台任务调度并调用的回调函数

esp_event_loop_create_default() 会创建一个默认的事件循环,并在后台启动一个专门处理事件的任务,这个任务负责处理所有注册的事件和相应的事件处理器。当注册的Wi-Fi事件发生时,事件循环任务会调用相应的事件处理器,例如你注册的wifi_event_handler

TCP 服务器任务tcp_server_task

  • 1.创建TCP套接字
  • 2.将创建的套接字绑定到指定的 IP 地址和端口号。
  • 3.启动监听
  • 4.等待客户端连接,阻塞等待客户端连接,成功接受连接后,返回新的套接字
  • 5.处理客户端连接,接收数据,写回数据。
  • 6.若客户端断开连接或发生错误,关闭与客户端的套接字,并重新开始等待下一个连接。

三、实现效果

通过网络调试助手作为TCP Client与ESP32建立TCP连接,发送和接收数据。

相关文章:

ESP32作为Wi-Fi AP模式的测试

一、AP模式的流程 初始化阶段 (Init Phase): 1.1: Main task(主任务)初始化LwIP(轻量级TCP/IP协议栈)。 ESP_ERROR_CHECK(esp_netif_init()); 1.2: 创建和初始化Event task(事件任务)。 ESP_ERROR_CHECK…...

【爬虫】单个网站链接爬取文献数据:标题、摘要、作者等信息

源码链接: https://github.com/Niceeggplant/Single—Site-Crawler.git 一、项目概述 从指定网页中提取文章关键信息的工具。通过输入文章的 URL,程序将自动抓取网页内容 二、技术选型与原理 requests 库:这是 Python 中用于发送 HTTP 请求…...

Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)

在Android面试时,懂得越多越深android framework的知识,越为自己加分。 目录 第一章:RIL 概述 1.1 RIL 的定义与作用 1.2 RIL 的发展历程 1.3 RIL 与 Android 系统的关系 第二章:RIL 的架构与工作原理 2.1 RIL 的架构组成 2.2 RIL 的工作原理 2.3 RIL 的接口与协议…...

leetcode_2816. 翻倍以链表形式表示的数字

2816. 翻倍以链表形式表示的数字 - 力扣(LeetCode) 搜先看到这个题目 链表的节点那么多 已经远超longlong能够表示的范围 那么暴力解题 肯定是不可以的了 我们可以想到 乘法运算中 就是从低位到高位进行计算 刚开始 我想先反转链表 然后在计算 然后在进…...

【论文阅读】MAMBA系列学习

Mamba code:state-spaces/mamba: Mamba SSM architecture paper:https://arxiv.org/abs/2312.00752 背景 研究问题:如何在保持线性时间复杂度的同时,提升序列建模的性能,特别是在处理长序列和密集数据(如…...

MySQL教程之:批量使用mysql

在前几节中&#xff0c;您以交互方式使用mysql输入语句并查看结果。您也可以运行mysql批量模式。为此&#xff0c;请将要运行的语句放在文件中&#xff0c;然后告诉mysql从文件中读取其输入&#xff1a; $> mysql < batch-file 如果您在Windows下运行mysql&#xff0c;…...

17_Redis管道技术

Redis管道(Pipeline)技术是一种在 Redis 客户端与服务器之间进行高效数据交互的技术。 1.Redis管道技术介绍 1.1 传统请求响应模式 在传统的请求-响应模式下,客户端每发送一个命令后会等待服务器返回结果,然后再发送下一个命令。这种方式在网络延迟较高的情况下会导致性…...

【LC】3270. 求出数字答案

题目描述&#xff1a; 给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数…...

【redis】ubuntu18安装redis7

在Ubuntu 18下安装Redis7可以通过以下两种方法实现&#xff1a;手动编译安装和使用APT进行安装。 Ubuntu 18系统的环境和版本&#xff1a; $ cat /proc/version Linux version 4.15.0-213-generic (builddlcy02-amd64-079) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)…...

d2j-dex2jar classes.dex 执行报错:not support version 问题解决

这个错误是由于 dex2jar 工具不支持你的 classes.dex 文件的版本导致的。通常情况下&#xff0c;这是因为你尝试使用的 dex2jar 版本不支持 Android 较新的 DEX 文件格式&#xff08;例如 DEX 格式 038 或更新版本&#xff09;。 解决方法 以下是一些解决此问题的步骤&#x…...

智慧城市应急指挥中心系统平台建设方案

建设背景与目标 智慧城市应急指挥中心系统平台的建设&#xff0c;源于对城市管理精细化、智能化的迫切需求。平台旨在通过整合各方资源&#xff0c;实现应急事件的快速响应与高效处置&#xff0c;提升城市安全管理水平。 前端设计与信息采集 前端设计注重立体化、全方位信息…...

QT鼠标、键盘事件

一、鼠标 鼠标点击 mousePressEvent 鼠标释放 mouseReleaseEvent 鼠标移动 mouseMoveEvent 鼠标双击 mouseDoubleClickEvent 鼠标滚轮 QWheelEvent 二、键盘 键盘按下 keyPressEvent 键盘松开keyReleaseEvent 一、鼠标 #include <QMouseEvent> 鼠标点击 mouse…...

Ceph分布式存储集群,不仅仅是一个简单的对象存储解决方案

Ceph 作为 OpenStack 的存储后端 块存储&#xff08;Cinder 后端&#xff09; Ceph 的 RBD&#xff08;RADOS Block Device&#xff09;模块作为 OpenStack Cinder 服务的后端&#xff0c;为虚拟机提供块级别的存储资源。RBD 支持快照、克隆和恢复等功能&#xff0c;能够满足虚…...

DSP+Simulink——点亮LED灯(TMSDSP28379D)超详细

实现功能&#xff1a;DSP28379D-LED灯闪烁 :matlab为2019a :环境建立见之前文章 Matlab2019a安装C2000 Processors超详细过程 matlab官网链接&#xff1a; Getting Started with Embedded Coder Support Package for Texas Instruments C2000 Processors Overview of Creat…...

Linux 环境下编译安装 OpenCV 4.8.x

在 Linux 环境下编译安装 OpenCV 4.8.x 需要安装一系列依赖库。以下是详细的步骤说明&#xff0c;并附上每个依赖库的作用解释。 1. 环境准备 操作系统 推荐使用 Ubuntu 20.04/22.04 或其他基于 Debian 的 Linux 发行版。 编译器 GCC 9 或更高版本&#xff08;默认已安装&a…...

phpenc加密程序源码

免费扩展加密程序&#xff0c;类似于sg11加密&#xff0c;支持单个PHP&#xff08;免费&#xff09;文件以及批量PHP文件&#xff08;ZIP压缩包格式&#xff09;源码加密的保护平台&#xff0c;加密后的源码文件保持原有代码结构&#xff0c;可以跨平台运行&#xff0c;可以运行…...

学英语学Elasticsearch:04 Elastic integrations 工具箱实现对第三方数据源的采集、存储、可视化,开箱即用

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#xff1a; 先看关键单词&#xff0c;再看英文&#xff0c;最后看中文总结&#xff0c;再回头看一遍英文原文&#xff0c;效果更佳&#xff01;&#xff01; 关键词 ingestion 摄取 /ɪnˈdʒɛstʃən/ observability 可观察性 …...

2024.10.12 校招 实习 内推 面经

&#x1f6f0;️ &#xff1a;neituijunsir 交* 流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 中车电动2025届校园招聘正式启动 校招 | 中车电动2025届校园招聘正式启动 2、校招 | 莱斯信息2025届校园招聘 校招 | 莱斯信息2025届校园招聘 3、招聘 | 中电熊猫2025…...

ios越狱脚本巨魔商店安装教程

使用爱思助手安装 安装爱思助手&#xff1a;在电脑上安装 iTunes 和爱思助手&#xff0c;并使用 Apple ID 登录2。 IPA 签名&#xff1a;打开爱思助手&#xff0c;选择工具箱中的 IPA 签名。点击添加 IPA 文件&#xff0c;选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...

浅谈容灾技术方案详解

一、什么是容灾&#xff1f; 容灾指的是&#xff0c;在异地搭建一套或多套和主生产系统一样的IT系统&#xff0c;用于应对在系统因发生意外&#xff08;自然灾害、人为灾害、设备系统故障等&#xff09;造成业务影响的情况&#xff0c;达到尽量让生产业务损失最小的目的。 二…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...