[ESP32 IDF]web server

目录

 通过web server控制LED

核心原理解析

分区表  

web server的使用

 错误Header fields are too long的解决


  •  通过web server控制LED

通过网页控制LED灯的亮灭,一般的ESP32开发板都可以实现,下面这篇文章是国外开发者提供的一个通过web server控制LED的实例, 文章对如何实现有非常详细的描述,但是需要魔法才能访问如下连接:

esp32-esp-idf-websocket-web-server

对应的工程源码在github可以找到:

ESP32-ESP-IDF-WebSocket-Web-Server

  • 核心原理解析

  • 分区表  

     这个实例并不是将html嵌在代码中,而是将html放在/data路径下,将文件刷写到spifs中,通过spiffs文件系统访问html,下面这篇博文有个arduino的实现,可以学习一下:

基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)_esp32 spiffs-CSDN博客

    关于ESP32的分区表,官方文档有非常详细的说明:

分区表 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)

分区表中的每个条目都包括以下几个部分:Name(标签)、Type(app、data 等)、SubType 以及在 flash 中的偏移量(分区的加载地址),在这个实例中,划分了一个名为storage的data类型分区,其子类型为spiffs(官方关于spiffs的说明文档:SPIFFS 文件系统 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)):

  

在使用idf.py进行刷写的时候,可以观察到自动调用了spiffsgen.py将/data路径打包为storage.bin,并且刷写到对应的地址中,因此可以在程序中通过spiffs的接口对html文件进行访问。

  • web server的使用

下面这篇博文是一个系列,有一系列的实操实现web server,基于arduino库实现的,但也具有学习意义:

基于ESP32搭建物联网服务器四(最简单的WEB服务器)_espasyncwebserver-CSDN博客

    我这里关注的是网页访问web server的时候,代码在哪里对request进行了处理,代码中,对HTTP_GET类型的method注册了回调,所以会进到handle_ws_req函数中:

    其次,需要获取payload的内容,从而对client端的请求解析作出响应,在handle_ws_req的后半段解析到了payload的内容,并调用trigger_async_send作出响应:

其中下面就是对led的控制,并且反馈状态给client端,改变网页的显示:

那么有个问题就是:最多可以支持多少个客户端呢?其实就是最多能连多少个tcp,由下面这个宏控制:

 错误Header fields are too long的解决

在使用edge浏览器访问的时候,提示了这个错误,参考如下博文, 将header的length修改大一些即可:

ESP32 Https server 错误Header fields are too long for server to interpret-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449676.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker安装定制gocd-agent

一、定制gocd-agent FROM gocd/gocd-agent-alpine-3.12:v21.1.0 MAINTAINER xxx "xxx163.com" # 切换到 root 用户 USER root # 安装 expect、jdk、docker RUN apk update && apk add expect && apk add openjdk8 && apk add docker &&…

Leetcode 热门百题斩(第二天)

介绍 针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。 1.两数之和(题号:1) 方法一 最先想到的就是两个for去遍历匹配。 class Solution {public int[] twoSum(int[]…

基于3DGIS 的5G 基站规划

这个基于3DGIS 5G 基站规划的案例很不错,与大家分享一下。感觉是3DGIS中为数不多的实用案例。但还是没有特别多的突出三维的技术优势,因为这里面很多规划思想其实还是基于面的而不是基于体的!好了不多说了,给大家分享这个案例&…

跟着cherno手搓游戏引擎【18】抽象Shader、项目小修改

抽象&#xff1a; Shader.h: #pragma once #include <string>namespace YOTO {class Shader {public:virtual~Shader()default;virtual void Bind()const0;virtual void UnBind()const0;static Shader* Create(const std::string& vertexSrc, const std::string&am…

【秒剪】如何分享视频?

如何分享视频&#xff1f; 经秒剪制作的视频点击【保存】后&#xff0c;选择下方相应按钮即可【发布到朋友圈】、【发布到视频号】和【其他】&#xff0c;直接从秒剪发布到朋友圈支持最长 60s 发布&#xff0c;直接发布到视频号画质也会更清晰。

【BIAI】Lecture10 - Motor System2

Motor System2 专业术语 descending spinal tracts 下行脊髓束 corticospinal tract 锥体束 reticulospinal tract 脊髓脑干束 vestibulospinal tract 脊髓脑干侧脊束 precentral gyrus 前中央回 population coding 群体编码 basal ganglia 基底节 thalamus 丘脑 Posterior pa…

Axure 动态面板初使用-实现简单的tab切换页面效果

使用工具版本 Axure 9 实现的效果 步骤过程 1、打开Axure 9&#xff0c;默认进入一个空白页&#xff0c;首先从元件库拉一个动态面板到页面中&#xff0c;位置肯定是C位咯~ 2、将面板尺寸调整一下&#xff0c;设置成你喜欢的数字&#xff0c;比如我就喜欢800600 3、然后…

网络原理TCP/IP(2)

文章目录 TCP协议确认应答超时重传连接管理断开连接 TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol").⼈如其名,要对数据的传输进⾏⼀个详细 的控制; TCP协议段格式 • 源/目的端口号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认…

程序员的悲哀:知名Python库requests作者失业了

在当今这个快速发展的科技时代&#xff0c;程序员作为创新的驱动力&#xff0c;一直被视为时代的宠儿。然而&#xff0c;即使在这样一个充满机会的领域&#xff0c;也有着不为人知的辛酸。近日&#xff0c;一个令人震惊的消息传遍了编程社区&#xff1a;知名Python库requests的…

2024牛客寒假算法基础集训营1

文章目录 A DFS搜索M牛客老粉才知道的秘密G why外卖E 本题又主要考察了贪心B 关鸡C 按闹分配 今天的牛客&#xff0c;说是都是基础题&#xff0c;头昏昏的&#xff0c;感觉真不会写&#xff0c;只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的&#xff0c;和dfs有关…

重写Sylar基于协程的服务器(4、协程调度模块的设计)

重写Sylar基于协程的服务器&#xff08;4、协程调度模块的设计&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器&#xff08;1、日…

JProfiler for Mac:提升性能和诊断问题的终极工具

在当今的高性能计算和多线程应用中&#xff0c;性能优化和问题诊断是至关重要的。JProfiler for Mac 是一个强大的性能分析工具&#xff0c;旨在帮助开发者更好地理解其应用程序的运行情况&#xff0c;提升性能并快速诊断问题。 JProfiler for Mac 的主要特点包括&#xff1a;…