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

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

概述

上一节我们讲述了通过文本框向 ESP32 发送字符串、数字。有时,我们需要向 ESP32 发送连续的值,这种需求可以通过在网页端实现滑动条来实现。

需求及功能解析

本节演示如何在 ESP32 上部署一个 Web 服务器,并在访问该 web 服务器时在网页端提供一个滑动条。可以在网页移动滑动条,每次移动滑动条都会触发将新的数字发送到 ESP32 的 Web 服务器。这在一些实时性要求较高的项目中,比如控制 PWM 马达的频率时比较有用。

示例解析

目录结构

├── CMakeLists.txt
├── main
│   ├── CMakeLists.txt
│   └── main.c                 User application
├── components
│   └── fs_image
└── README.md                  This is the file you are currently reading
  • 目录结构主要包含主目录 main,以及组件目录 components.
  • 其中组件目录components中包含了用于存储网页文件的 fs_image 目录(即前述前端文件)。

前端代码

前端代码的 HTML 部分在 components/fs_image/web_image/index.html 中,主要是创建一个滑动条 pwmSlider,然后每次更新时触发函数 updateSliderPWM(),将在该函数内向 ESP32 Web 的 /slider 发送 POST 请求:

 <div class="topnav">
    <h1>ESP WEB SERVER INPUT FIELDS</h1>
  </div>
  <script>
    function updateSliderPWM(element) {
      var sliderValue = document.getElementById("pwmSlider").value;
      document.getElementById("textSliderValue").innerHTML = sliderValue;
      console.log(sliderValue);
      var xhr = new XMLHttpRequest();
      xhr.open("POST", "/slider?value="+sliderValue, true);
      xhr.send();
    }
  </script>

后端代码

后端代码主要是增加了浏览器通过网页向服务器推送数据时的处理函数update_values_post_handler():

 {"/", HTTP_POST, update_values_post_handler, rest_context},

在该函数中,接收推动数据,并解析推送数据中的字符串和数字:

static esp_err_t update_values_post_handler(httpd_req_t* req)
{
    ESP_LOGI(TAG, "in post handler, uri=%s", req->uri);
    char filepath[FILE_PATH_MAX];
    rest_server_context_t* rest_context = (rest_server_context_t*) req->user_ctx;
    char* buf = ((rest_server_context_t*) (req->user_ctx))->scratch;
    int str_len = 0;
    char temp_str[128] = {0};

    str_len = httpd_find_arg(req->uri, "value", temp_str, sizeof(temp_str));
    if ((str_len != -1) && (strlen((char *)temp_str) != 0)) {
        my_num = atoi(temp_str);
        ESP_LOGI(TAG, "updates:num=%d", my_num);
    }

    return ESP_OK;
}

示例效果

在这里插入图片描述

讨论

总结

1)本节主要是介绍在 ESP32 Web 上部署带滑动条输入的网页,通过网页向 ESP32 发送数字。通过这种机制,我们可以实现对 实时性较高的数据下发功能。

资源链接

1)ESP32-Web-Server ESP-IDF系列博客介绍
2)对应示例的 code 链接 (点击直达代码仓库)

3)下一篇:SP32-Web-Server编程- 实现 Web 登录网页

(码字不易感谢点赞或收藏)


http://www.kler.cn/a/153694.html

相关文章:

  • vue3 element-plus el-table表头冻结,表头吸顶
  • UiPath:人工智能和重新加速增长是 2024 年的好兆头
  • GoLong的学习之路,进阶,微服务之原理,RPC
  • 使用纯js码2个实用功能banner图标切换和表格制作
  • 【Python标准库】json
  • 【Android】Window和WindowManager
  • UData+StarRocks在京东物流的实践 | 京东物流技术团队
  • 快照读通过MVCC解决不可重复读当前读通过间隙锁解决幻读
  • Linux破解用户密码【基于redhat9】
  • 电子印章管理系统:是什么、3个平台推荐
  • Vulhub-信息泄露
  • 数据结构 / 队列 / 循环队列 / 概念
  • Redis基本命令
  • SQL-分页查询offset的用法
  • Linux部分基础指令讲解
  • Hdoop学习笔记(HDP)-Part.14 安装YARN+MR
  • B.牛牛排队伍——模拟双链表
  • IntelliJ IDEA安装使用教程
  • Redis——某马点评day01——短信登录
  • 【蓝桥杯选拔赛真题51】python最小下标 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析