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

wordpress整站数据百度秒收录

wordpress整站数据,百度秒收录,为什么做的网站打开自动缩放,政府网站查询文章目录 前言wifi配置步骤初始化wifi配置事件注册回调函数wifi清理 需要注意的事情 前言 esp32 的wifi功能很强大,这篇记录基本的esp32 连接wifi,获取ip地址,:官方文档介绍 wifi配置步骤 初始化 wifi初始化代码如下&#xff…

文章目录

  • 前言
  • wifi配置步骤
    • 初始化
    • wifi配置
    • 事件注册回调函数
    • wifi清理
  • 需要注意的事情

前言

esp32 的wifi功能很强大,这篇记录基本的esp32 连接wifi,获取ip地址,:官方文档介绍

wifi配置步骤

初始化

wifi初始化代码如下:

static void initialise_wifi(void)
{/* 创建事件标志组 */wifi_event_group_handler = xEventGroupCreate();/* 初始化底层TCP/IP堆栈,*/ESP_ERROR_CHECK(esp_netif_init());/* 创建默认循环事件 在整个项目中只能初始化一次只能初始化一次*/ESP_ERROR_CHECK(esp_event_loop_create_default());/* 创建默认wifi-sta网络接口,如果初始化错误,此api终止 */esp_netif_create_default_wifi_sta();/* 获取默认wifi配置参数结构体变量 */wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();/* 根据cfg参数,初始化wifi连接所需要的资源 */ESP_ERROR_CHECK(esp_wifi_init(&cfg));/* 注册事件到系统默认事件循环 */ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));/* 启动wifi驱动(配置硬件) */esp_wifi_start();
}
  1. esp_netif_init函数

    • 创建一个 LwIP 核心任务,并初始化 LwIP 相关工作。
    • 该函数主要是初始化网络基础设施,网络基础设施是指TCP/IP协议栈运行、网络通信和wifi功能基础组件。
    • wifi驱动需要依赖esp_netif来管理IP地址、DNS、路由等网络功能。
    • TCP/IP协议栈(lwip)
      作用:提供TCP/IP协议支持,如(DHCP、DNS、TCP/IP)
      关键组件:
      • LwIP(Lightweight IP):ESP-IDF 使用的轻量级 TCP/IP 协议栈。
      • IP 层:管理 IP 地址分配(静态/DHCP)。
      • Socket API:提供标准的 BSD Socket 接口(socket(), bind(), connect() 等)。
      • 如果没有TCP/IP协议栈,wifi只能进行底层数据收发,无法实现HTTP、MQTT等高级网络通信。
  2. esp_event_loop_create_default

    • 创建默认的事件循环(Event Loop),用于处理系统中各种事件(如 WiFi 事件、IP 事件、自定义事件等)。
    • 该回调函数唯一的动作就是将事件中继到应用程序任务中。
  3. esp_netif_create_default_wifi_sta

    • 设置默认网络接口,该函数是将设备设置为客户端模式
    • 如果没有默认网络接口,wifi连接后将无法自动获取IP地址(DHCP不会生效);上层应用无法正确绑定到网络接口
  4. esp_wifi_init

    • 创建 Wi-Fi 驱动程序任务,并初始化 Wi-Fi 驱动程序。
  5. esp_event_handler_register

    • 注册事件,将需要关注的事件注册到循环事件中
  6. esp_wifi_start

    • 启动wifi
    • Wi-Fi 驱动程序将事件 WIFI_EVENT_STA_START 发布到事件任务中,然后,事件任务将执行一些正常操作并调用应用程序的事件回调函数。
    • 应用程序的事件回调函数将事件 WIFI_EVENT_STA_START 中继到应用程序任务中。此时,推荐调用函数 esp_wifi_connect() 进行 Wi-Fi 连接。当然,也可以等待在 WIFI_EVENT_STA_START 事件发生后的其它阶段再调用此函数。

wifi配置

bool wifi_connect(const char *ssid, const char *passwd, int timeout_ms) 
{/* 配置结构体 */wifi_config_t wifi_config = { 0 };strlcpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid));strlcpy((char *) wifi_config.sta.password, passwd, sizeof(wifi_config.sta.password));/* 设置WiFi工作模式为sta */esp_wifi_set_mode(WIFI_MODE_STA);/* 设置wifi连接的参数,主要是ssid和passwd */esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config);/* 连接wifi */esp_wifi_connect();/* 使用事件按标志组等待连接建立(WIFI_CONNECTED_BIT)或连接失败(WIFI_FAIL_BIT)事件 */EventBits_t bits;                                                       /* 定义一个事件变量来接受事件标志组等待函数返回值 */bits = xEventGroupWaitBits( wifi_event_group_handler,                   // 等待的事件标志组WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,         // 等待的事件标志位pdFALSE,                                    // 在退出此函数之前所设置的这些事件位不变,为pdFALSE则清零pdFALSE,                                    // 设置的这些事件位任意一个置1就会返回,为pdFALSE则需全为1才返回timeout_ms / portTICK_PERIOD_MS);/* 根据事件标志组等待函数的返回值获取wifi连接状态 */if (bits & WIFI_CONNECTED_BIT) {                                            /* WiFi连接成功 */ESP_LOGI(TAG, "connected to ap SSID:%s OK \n", wifi_config.sta.ssid);xEventGroupClearBits(wifi_event_group_handler, WIFI_CONNECTED_BIT);} else if (bits & WIFI_FAIL_BIT) {                                          /* wifi连接失败 */ESP_LOGI(TAG, "Failed to connect to SSID:%s \n", WIFI_SSID);}return 0;
}
  1. esp_wifi_set_mode
    • 设置wifi工作模式
  2. esp_wifi_set_config
    • 配置wifi,包括连接的路由器名称、密码等信息
  3. xEventGroupWaitBits
    • 等待注册的事件标志组
  4. esp_wifi_connect
    • 连接wifi
    • 调用函数 esp_wifi_connect() 后,Wi-Fi 驱动程序将启动内部扫描/连接过程。
    • 如果内部扫描/连接过程成功,将产生 WIFI_EVENT_STA_CONNECTED 事件。然后,事件任务将启动 DHCP 客户端服务,最终触发 DHCP 程序。
    • 在此情况下,应用程序的事件回调函数会将 WIFI_EVENT_STA_CONNECTED 事件中继到应用程序任务中。
  5. 根据收到的事件标志组做相应逻辑

事件注册回调函数

根据具体逻辑处理即可

static void event_handler(void* arg,esp_event_base_t event_base,int32_t event_id,void* event_data
){static int retry_num = 0;if ( event_base == WIFI_EVENT ) {           // wifi事件if ( event_id == WIFI_EVENT_STA_CONNECTED ) {ESP_LOGI(TAG, "connect event");// xEventGroupSetBits(wifi_event_group_handler, WIFI_CONNECTED_BIT);} else if (event_id == WIFI_EVENT_STA_DISCONNECTED) {xEventGroupSetBits(wifi_event_group_handler, WIFI_FAIL_BIT);}} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {     // ip 事件ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data;ESP_LOGI(TAG, "got ip:%d.%d.%d.%d \n", IP2STR(&event->ip_info.ip));retry_num = 0;xEventGroupSetBits(wifi_event_group_handler, WIFI_CONNECTED_BIT);}}

wifi清理

清理函数

 esp_wifi_disconnect() 断开 Wi-Fi 连接。esp_wifi_stop() 终止 Wi-Fi 驱动程序。esp_wifi_deinit() 清理 Wi-Fi 驱动程序。

需要注意的事情

  1. esp_event_loop_create_default函数只需要调用一次
  2. wifi链接需要内存比较大,如果在任务重调用wifi链接,则任务要给较大堆栈内存
http://www.dtcms.com/wzjs/336246.html

相关文章:

  • 固始做网站的公司长沙网站优化推广
  • 网站建设算什么专业sem论坛
  • 做最好最全的命理网站沧州网络推广公司
  • 做网站需要理解什么社区建站网站系统
  • 淮南餐饮网站建设自然搜索优化
  • 哪个网站做自考题目免费网络搜索词排名
  • 北京短视频代运营公司百度seo系统
  • 独立网站是什么百度地图在线查询
  • wordpress侧滑菜单优化网络的软件下载
  • 电子商务企业网站建设规划方案惠州百度seo找谁
  • wordpress发布页面关键词优化平台有哪些
  • 清河做网站哪家好网站建设制作模板
  • 做类图的网站百度推广时间段在哪里设置
  • 贵阳做网站seo青岛网站建设公司
  • 上海力晟建设工程有限公司网站友情链接交易网
  • 龙岩网站建设行情网站seo诊断优化方案
  • 主题 外贸网站 模板下载做网站的公司哪家最好
  • 一个公司备案两个网站软文素材库
  • 云主机建网站网络推广竞价
  • 微商营销优化关键词排名外包
  • 太仓苏州网站建设靠谱的推广平台有哪些
  • 网站怎样做推广计划百度经验怎么赚钱
  • wordpress网页缓存插件百度刷排名优化软件
  • 财政网站平台建设不足关键词查询的五种常用工具
  • 机械设备上哪个网站做外贸推广阿里妈妈推广网站
  • 海南什么公司的网站汕头seo排名公司
  • 网站建设的业务流程图网络营销方案的制定
  • 建设银行jo 办网站用卡青岛疫情最新情况
  • logo图标素材网站互联网营销是什么意思
  • 公司网站开发实例关键词查网址