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
在前几节中,您以交互方式使用mysql输入语句并查看结果。您也可以运行mysql批量模式。为此,请将要运行的语句放在文件中,然后告诉mysql从文件中读取其输入: $> mysql < batch-file 如果您在Windows下运行mysql,…...
17_Redis管道技术
Redis管道(Pipeline)技术是一种在 Redis 客户端与服务器之间进行高效数据交互的技术。 1.Redis管道技术介绍 1.1 传统请求响应模式 在传统的请求-响应模式下,客户端每发送一个命令后会等待服务器返回结果,然后再发送下一个命令。这种方式在网络延迟较高的情况下会导致性…...
【LC】3270. 求出数字答案
题目描述: 给你三个 正 整数 num1 ,num2 和 num3 。 数字 num1 ,num2 和 num3 的数字答案 key 是一个四位数,定义如下: 一开始,如果有数字 少于 四位数,给它补 前导 0 。答案 key 的第 i 个数…...
【redis】ubuntu18安装redis7
在Ubuntu 18下安装Redis7可以通过以下两种方法实现:手动编译安装和使用APT进行安装。 Ubuntu 18系统的环境和版本: $ 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 文件的版本导致的。通常情况下,这是因为你尝试使用的 dex2jar 版本不支持 Android 较新的 DEX 文件格式(例如 DEX 格式 038 或更新版本)。 解决方法 以下是一些解决此问题的步骤&#x…...
智慧城市应急指挥中心系统平台建设方案
建设背景与目标 智慧城市应急指挥中心系统平台的建设,源于对城市管理精细化、智能化的迫切需求。平台旨在通过整合各方资源,实现应急事件的快速响应与高效处置,提升城市安全管理水平。 前端设计与信息采集 前端设计注重立体化、全方位信息…...
QT鼠标、键盘事件
一、鼠标 鼠标点击 mousePressEvent 鼠标释放 mouseReleaseEvent 鼠标移动 mouseMoveEvent 鼠标双击 mouseDoubleClickEvent 鼠标滚轮 QWheelEvent 二、键盘 键盘按下 keyPressEvent 键盘松开keyReleaseEvent 一、鼠标 #include <QMouseEvent> 鼠标点击 mouse…...
Ceph分布式存储集群,不仅仅是一个简单的对象存储解决方案
Ceph 作为 OpenStack 的存储后端 块存储(Cinder 后端) Ceph 的 RBD(RADOS Block Device)模块作为 OpenStack Cinder 服务的后端,为虚拟机提供块级别的存储资源。RBD 支持快照、克隆和恢复等功能,能够满足虚…...
DSP+Simulink——点亮LED灯(TMSDSP28379D)超详细
实现功能:DSP28379D-LED灯闪烁 :matlab为2019a :环境建立见之前文章 Matlab2019a安装C2000 Processors超详细过程 matlab官网链接: 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 需要安装一系列依赖库。以下是详细的步骤说明,并附上每个依赖库的作用解释。 1. 环境准备 操作系统 推荐使用 Ubuntu 20.04/22.04 或其他基于 Debian 的 Linux 发行版。 编译器 GCC 9 或更高版本(默认已安装&a…...
phpenc加密程序源码
免费扩展加密程序,类似于sg11加密,支持单个PHP(免费)文件以及批量PHP文件(ZIP压缩包格式)源码加密的保护平台,加密后的源码文件保持原有代码结构,可以跨平台运行,可以运行…...
学英语学Elasticsearch:04 Elastic integrations 工具箱实现对第三方数据源的采集、存储、可视化,开箱即用
📢📢📢: 先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 ingestion 摄取 /ɪnˈdʒɛstʃən/ observability 可观察性 …...
2024.10.12 校招 实习 内推 面经
🛰️ :neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 中车电动2025届校园招聘正式启动 校招 | 中车电动2025届校园招聘正式启动 2、校招 | 莱斯信息2025届校园招聘 校招 | 莱斯信息2025届校园招聘 3、招聘 | 中电熊猫2025…...
ios越狱脚本巨魔商店安装教程
使用爱思助手安装 安装爱思助手:在电脑上安装 iTunes 和爱思助手,并使用 Apple ID 登录2。 IPA 签名:打开爱思助手,选择工具箱中的 IPA 签名。点击添加 IPA 文件,选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...
浅谈容灾技术方案详解
一、什么是容灾? 容灾指的是,在异地搭建一套或多套和主生产系统一样的IT系统,用于应对在系统因发生意外(自然灾害、人为灾害、设备系统故障等)造成业务影响的情况,达到尽量让生产业务损失最小的目的。 二…...
Proteus 8实战:手把手教你搭建ATmega16流水灯仿真,并联动真实代码调试
Proteus 8实战:从零构建ATmega16流水灯仿真系统 在嵌入式开发的学习路径上,仿真工具的价值常常被低估。许多开发者习惯直接上手物理硬件,却在遇到问题时陷入漫长的调试循环。Proteus 8提供的虚拟实验室环境,恰好填补了从理论到实践…...
别让电源拖后腿!手把手教你搞定Xilinx 7系列FPGA(以XC7K325T为例)的供电设计
别让电源拖后腿!手把手教你搞定Xilinx 7系列FPGA(以XC7K325T为例)的供电设计 第一次翻开Xilinx 7系列FPGA的硬件手册时,相信不少工程师都会被密密麻麻的电源轨搞得头晕目眩。VCCINT、VCCBRAM、VCCO、VMGTAVCC...这些看似简单的电压…...
新手福音:基于预置镜像,在快马平台零配置开启Python Web开发之旅
作为一个刚接触Python Web开发的新手,我最近在InsCode(快马)平台上体验了一把零配置搭建个人博客的过程。不得不说,这种基于预置镜像的开发方式,简直是为我们这些初学者量身定制的福音。下面我就来分享一下这次的学习心得。 为什么选择预置镜…...
大厂AI团队配置揭秘:揭秘“预训练→后训练→推理部署→多模态扩展“的技术链路拆分逻辑!
大模型AI技术链路包含预训练、后训练、推理部署、多模态扩展四个不可逆环节,对技术能力和GPU资源需求各异。大厂将AI部门拆分为独立团队,以适配链路原理、提升研发效率。预训练团队负责构建通用基座模型,后训练团队进行能力校准,推…...
基于Ascend 950的Cube编程
直播回放链接:基于下一代硬件的Cube编程_哔哩哔哩_bilibili...
Gemini 3.1镜像实战:用三层思考架构与多模态引擎解决视频内容生产
谷歌2026年初发布的Gemini 3.1 Pro,凭借可配置的三层思考架构(低/中/高推理深度)和集成Veo视频引擎、Lyria 3音频引擎的多模态能力,为实际业务问题提供了全新的解决范式。国内开发者和内容创作者可通过聚合平台RskAi(w…...
HiveWE:革新性地图编辑引擎助力魔兽争霸III创作者实现效率飞跃
HiveWE:革新性地图编辑引擎助力魔兽争霸III创作者实现效率飞跃 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 在魔兽争霸III地图开发领域,创作者长期面临着传统编辑器性能瓶颈与操作…...
PyCharm中如何快速取消pytest测试模式?5步搞定直接运行Python脚本
PyCharm中如何快速取消pytest测试模式?5步搞定直接运行Python脚本 作为Python开发者,我们经常需要在PyCharm中切换不同的运行模式。有时候,你可能只是想快速运行一个Python脚本,却发现PyCharm固执地以pytest模式执行,…...
【Python MCP服务器开发终极模板】:20年架构师亲授源码级解析与高并发优化实战
第一章:Python MCP服务器开发模板概览与核心设计哲学Python MCP(Model-Controller-Protocol)服务器开发模板是一套面向协议驱动、可插拔架构的轻量级服务框架,专为构建高内聚、低耦合的模型交互后端而设计。其核心不依赖于特定Web…...
【Java Web学习 | 第九篇】JavaScript(3) 数组+函数
【Java Web学习 | 第九篇】JavaScript(3) - 数组与函数进阶(2026最新版) 本篇对数组和函数进行更深入、实用的讲解,这是 Java Web 开发中处理后端返回数据(JSON 数组/对象列表)和封装业务逻辑的核心技能。 由于你特别…...
