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

网站备案审核php网站建设思路方案

网站备案审核,php网站建设思路方案,中山网站备案,外贸出口剪标尾单ESP32-Web-Server编程- 通过文本框向 Web 提交数据 概述 前述章节我们通过简单 HTML、AJAX、Websocket、SSE 在网页上显示数据,通过网页上的按钮控制 ESP32 的行为。从本节开始,我们将进一步了解通过网页与 ESP32 进行交互的方法。 实现更复杂的交互功…

ESP32-Web-Server编程- 通过文本框向 Web 提交数据

概述

前述章节我们通过简单 HTML、AJAX、Websocket、SSE 在网页上显示数据,通过网页上的按钮控制 ESP32 的行为。从本节开始,我们将进一步了解通过网页与 ESP32 进行交互的方法。

实现更复杂的交互功能,从通过网页向 ESP32 发送字符串、数字开始。ESP32 在接收到这些字符串时可以识别其含义,实现对 ESP32 的灵活的控制。这就是物联网的简单的项目原型了。

需求及功能解析

本节演示如何在 ESP32 上部署一个 Web 服务器,并在访问该 web 服务器时在网页端提供一个字符串输入框、数字输入框。可以在网页输入对应的字符、数字到 ESP32 的 Web 服务器。

示例解析

目录结构

├── 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 中,创建了两个 input 输入框,类型分别是 Text FieldText Field,它们分别用于输入字符串、数字。

 <div class="card">
<form action="/" method="POST"><p class="card-title">Text Field</p><p><label for="input1">Input 1</label><input type="text" id ="input1" name="input1"><input type ="submit" value ="Submit"></p>
</form>
</div>
<div class="card">
<form action="/" method="POST"><p class="card-title">Number Field</p><p><label for="input2">Input 2</label><input type="number" id ="input2" name="input2"><input type ="submit" value ="Submit"></p>
</form>

此外,在网页上还增加了实时显示当前值的两个显示文本,分别显示当前 ESP32 上字符串、数字的值:

<div class="card"><p class="card-title">Text Value</p><p class="value">Current value: <span id="textFieldValue"></span></p>
</div>
<div class="card"><p class="card-title">Number Value</p><p class="value">Current value: <span id="numberFieldValue"></span></p>
</div>

它们通过 components/fs_image/web_image/js/script.js 中的 getValues() 来获得更新:

// Function to get current readings on the webpage when it loads/refreshes
function getValues(){var xhr = new XMLHttpRequest();xhr.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) {var myObj = JSON.parse(this.responseText);console.log(myObj);document.getElementById("textFieldValue").innerHTML = myObj.textValue;document.getElementById("numberFieldValue").innerHTML = myObj.numberValue;}}; xhr.open("GET", "/values", true);xhr.send();
}

后端代码

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

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

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

/* Simple handler for uart_info_post handler */
static esp_err_t update_values_post_handler(httpd_req_t* req)
{ESP_LOGD(TAG, "in / post handler");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};if (recv_post_data(req, buf) != ESP_OK) {// modbus_dtu_web_response_error(req, HTTPD_500);ESP_LOGE(TAG, "recv post data error");return ESP_FAIL;}str_len = httpd_find_arg(buf, my_para1, temp_str, sizeof(temp_str));if ((str_len != -1) && (strlen((char *)temp_str) != 0)) {memcpy(my_str, temp_str, strlen(temp_str)+1);ESP_LOGI(TAG, "updates:str=%s", my_str);}memset(temp_str, '\0', sizeof(temp_str));str_len = httpd_find_arg(buf, my_para2, 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 index html filestrlcpy(filepath, rest_context->base_path, sizeof(filepath));strlcat(filepath, "/index.html", sizeof(filepath));if(custom_send_file_chunk(req, filepath) != ESP_OK) {ESP_LOGE(TAG, "rest common send err");return ESP_FAIL;}return ESP_OK;
}

注意,每次更新值,我们都重新返回整个 html 文件,以便于可以触发components/fs_image/web_image/js/script.js 中的 getValues() ,在网页上更新当前下发数据的值。

示例效果

在这里插入图片描述

讨论

1)这是我们首次使用 HTTP 的 POST 方法,可以参考 A 回顾 HTTP 的基本方法。我们将在后续的章节掌握更多有趣且使用的开发技能。

总结

1)本节主要是介绍在 ESP32 Web 上部署带输入文本框的网页,通过网页向 ESP32 发送字符串和数字。通过这种机制,我们可以实现对 ESP32 简单的数据通信。

资源链接

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

3)下一篇:ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

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

http://www.yayakq.cn/news/166128/

相关文章:

  • 重庆聚百思网站开发安卓app软件制作工具
  • 南宁网站建设怎样建立一个好网站成武菏泽网站建设
  • 网站怎么设计好看五百丁简历模板免费
  • 哪些cms做同城网站比较好怎么做网页设计原型
  • 建设部标准规范网站做网站专用图标
  • 襄阳网站seo方法伊宁网站建设
  • 网站维护工程师自媒体一号WordPress主题
  • 深圳龙华网站建设三亚发布紧急通知
  • 宜昌网站建设宜昌网站建设中怎样进入后台
  • 阿里云网站备案登陆北京附近做网站的公司有哪些
  • 用wordpress制作网站模板网站建设费用表格
  • 网站建设大客户沟通技巧ps制作网站过程
  • 南宁网站建设公司哪里企业app有哪些
  • 如何做移动支付网站做贵网站多少钱
  • 自己做网站需要什么材料北京市保障性住房建设投资中心网站
  • dw制作简单网站模板下载腾讯小程序怎么赚钱
  • 网站建设etwwordpress错误集锦
  • 建设公司网站的原则中国企业信息网官网
  • 苏州工业园区网站wordpress主题和插件
  • 网站做图片东莞做网站 信科网络
  • 贵州小城镇建设网站专业免费网站建设
  • 大连做网站的网络公司写字就能赚钱做网站
  • 有源代码怎么做网站最新做网站技术
  • 新八建设集团有限公司网站天河做网站哪家好
  • 门户网站推广怎么做建网站费用会计分录
  • 上海网站建设免费推荐江苏市场监督管理局
  • html网站登录界面模板下载网站建设拍金手指排名贰拾
  • 怎么看别的网站是那个公司做的为什么建设厅的网站不好打开
  • 网站建设 质量标准做网站石材推销
  • 郑州做网站优化电话四川住房城乡建设网站