当前位置: 首页 > 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;达到尽量让生产业务损失最小的目的。 二…...

时序数据库InfluxDB—介绍与性能测试

目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…...

Python的循环

Python的循环 Python的循环有两种&#xff0c;分别是for…in循环和while循环。 for…in 循环 假设我们要循环输出一个列表里的元素&#xff1a; names [张三,李四,王五] for name in names:print(name)执行这段代码后&#xff0c;会依次打印names的每一个元素&#xff1a;…...

【机器学习】聚类评价指标之福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)

福尔克斯–马洛斯指数&#xff08;Fowlkes–Mallows Index, FMI&#xff09;是一种用于评估聚类结果与实际标签之间一致性的指标。FMI 值可以用于衡量聚类的准确性&#xff0c;特别是在有真值标签的监督评估场景中。 计算公式 FMI 的计算基于以下公式&#xff1a; 其中&#…...

分享一次面试经历

今天不只是分享面经&#xff0c;还分享一下主人公的整个面试经历&#xff0c;看看你是否会有相同的思路或者不同的见解&#xff0c;可以在评论区讨论一下&#xff1a; 问在项目里做了什么技术贡献。实施过程中&#xff0c;遇到哪些困难&#xff0c;怎么去思考解决的&#xff0…...

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展&#xff0c;网络已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络攻击手段也日益多样化和复杂化&#xff0c;给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…...

Qt 智能指针

Qt 智能指针 文章目录 Qt 智能指针QScopedPointer1. 自动删除对象2. 转移所有权3. 管理私有数据 QSharedPointer关键特性注意事项 QWeakPointer注意事项 QPointer QScopedPointer QScopedPointer 是 Qt 提供的一个智能指针&#xff0c;主要用于简化资源管理&#xff0c;防止内…...

CODESYS MODBUS TCP通信(禾川Q1 PLC作为MODBUS TCP从站)

禾川Q1 PLC MODBUS TCP 通信(PLC作为MODBUS TCP通信主站) 禾川Q1 PLC MODBUS TCP通信(CODESYS平台完整配置+代码)-CSDN博客文章浏览阅读28次。MATLAB和S7-1200PLC水箱液位高度PID控制联合仿真(MODBUSTCP通信)_将matlab仿真导入plc-CSDN博客文章浏览阅读722次。本文详细介绍了如…...

10.STM32F407ZGT6-内部温度传感器

参考&#xff1a; 1.正点原子 前言&#xff1a; 本笔记的主要目的和意义就是&#xff0c;再次练习ADC的使用。 32.1 内部温度传感器简介 STM32F407 有一个内部的温度传感器&#xff0c;可以用来测量 CPU 及周围的温度(TA)。对于STM32F407 系列来说&#xff0c;该温度传感器在…...

运维安全中心(堡垒机)

阿里云运维安全中心&#xff08;Alibaba Cloud Operation and Maintenance Security, OMS&#xff0c;通常也称为“堡垒机”&#xff09;是一款针对云上运维管理的安全解决方案。它专注于加强云环境中运维过程的安全性&#xff0c;确保对关键云资源和服务的访问可控、可审计&am…...

Linux OOM | Early OOM | 进程监视

注&#xff1a; 本文为 “Linux OOM” 相关文章合辑。 Linux OOM 终结者 译者&#xff1a;花名有孚 | 2015-07-21 08:47 现在是早晨 6 点钟。已经醒来的我正在总结到底是什么事情使得我的起床闹铃提前了这么多。我们的监控系统显示&#xff0c;Plumbr 服务出故障了。 现在我…...

企业网站模板哪个好/广东广州重大新闻

本节书摘来异步社区《BeagleBone开发指南》一书中的第1章&#xff0c;第1.4节&#xff0c;作者&#xff1a;【爱】Derek Molloy&#xff08;莫洛伊&#xff09;&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.4 BeagleBone 配件 BeagleBone Black板配置…...

河南网站备案中心/怎么发外链

前几天在网上看到一个北漂程序员的真实遭遇&#xff1a;“被裁整整一个月了&#xff0c;面试了22家&#xff0c;一个offer都没有拿到”这样的遭遇&#xff0c;确实不得不让人怀疑人生啊……虽说现在确实大环境不太好&#xff0c;被裁员的人也是很多&#xff0c;但是也不至于面试…...

wordpress主题需要ftp/制作公司网站的步骤

weblogic8.1 5 ip 限制 报错信息如图所示&#xff1a; 解决办法&#xff1a;此weblogic 未破解&#xff0c;去网上下载破解包&#xff0c;然后放到 copy weblogic_sp.jar to $WL_HOME/server/lib/ copy license.bea to $BEA_HOME 此目录下即可。 本人资源里面有 weblogic 8.…...

哈尔滨网站建设30t/广西seo搜索引擎优化

在源代码编辑器中按住Option键单击一个符号&#xff08;或单击Command键并单击该符号&#xff0c;然后选择“显示快速帮助”&#xff09;&#xff0c;以在弹出窗口中查看该符号的简要说明。要关闭弹出窗口&#xff0c;请按Escape键或单击文件中的任何位置。 技术交流 QQ:336505…...

公众号转wordpress/2022近期重大新闻事件10条

最近在github上下载了一些不错的开源项目&#xff0c;发现在Eclipse中通过Import导入不好使了&#xff0c;在网络上查了很多资料终于弄明白了。 这里以github上 的 Apollo播放器项目为例&#xff0c;介绍如何导入Android开源项目到Eclipse中。 Apollo播放器项目地址&#xff…...

平台网站开发/52种新颖的促销方式

重要国策《文化产业振兴规划》于9月26日正式对外公布。巧合的是&#xff0c;就在前一天&#xff08;9月25日 &#xff09;&#xff0c;盛大游戏&#xff08;SDG&#xff09;成功在NASDAQ上市&#xff0c;并且创下了美股IPO规模之最&#xff08;10亿美元&#xff09;。1&#xf…...