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

【Ardiuno】实验使用ESP32单片机实现高级web服务器暂时动态图表功能(图文)

接下来,我们继续实验示例代码中的Wifi“高级web服务器”,配置相关的无线密码后,开始实验

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>const char *ssid = "XIAOFEIYU";
const char *password = "XIAOFEIU666";WebServer server(80);const int led = 13;void handleRoot() {digitalWrite(led, 1);char temp[400];int sec = millis() / 1000;int min = sec / 60;int hr = min / 60;snprintf(temp, 400,"<html>\<head>\<meta http-equiv='refresh' content='5'/>\<title>ESP32 Demo</title>\<style>\body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\</style>\</head>\<body>\<h1>Hello from ESP32!</h1>\<p>Uptime: %02d:%02d:%02d</p>\<img src=\"/test.svg\" />\</body>\
</html>",hr, min % 60, sec % 60);server.send(200, "text/html", temp);digitalWrite(led, 0);
}void handleNotFound() {digitalWrite(led, 1);String message = "File Not Found\n\n";message += "URI: ";message += server.uri();message += "\nMethod: ";message += (server.method() == HTTP_GET) ? "GET" : "POST";message += "\nArguments: ";message += server.args();message += "\n";for (uint8_t i = 0; i < server.args(); i++) {message += " " + server.argName(i) + ": " + server.arg(i) + "\n";}server.send(404, "text/plain", message);digitalWrite(led, 0);
}void setup(void) {pinMode(led, OUTPUT);digitalWrite(led, 0);Serial.begin(9600);WiFi.mode(WIFI_STA);WiFi.begin(ssid, password);Serial.println("");// Wait for connectionwhile (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.print("Connected to ");Serial.println(ssid);Serial.print("IP address: ");Serial.println(WiFi.localIP());if (MDNS.begin("esp32")) {Serial.println("MDNS responder started");}server.on("/", handleRoot);server.on("/test.svg", drawGraph);server.on("/inline", []() {server.send(200, "text/plain", "this works as well");});server.onNotFound(handleNotFound);server.begin();Serial.println("HTTP server started");
}void loop(void) {server.handleClient();delay(2); 
}void drawGraph() {String out = "";char temp[100];out += "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"400\" height=\"150\">\n";out += "<rect width=\"400\" height=\"150\" fill=\"rgb(250, 230, 210)\" stroke-width=\"1\" stroke=\"rgb(0, 0, 0)\" />\n";out += "<g stroke=\"black\">\n";int y = rand() % 130;for (int x = 10; x < 390; x += 10) {int y2 = rand() % 130;sprintf(temp, "<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" stroke-width=\"1\" />\n", x, 140 - y, x + 10, 140 - y2);out += temp;y = y2;}out += "</g>\n</svg>\n";server.send(200, "image/svg+xml", out);
}

从串口监视器查看获取的ip地址,使用浏览器打开这个服务器,可以看到下面的图形会定时更新切换。 

这个例子给了我们一个可以生成实时图表的思路,使用硬件获取数据后可以直接以web图形的形式进行输出,直接作为服务器使用,这样的系统更为稳定,不用单独再配置计算机来进行数据的展示。 

相关文章:

  • 计算机组成原理之定点除法
  • Android 14 蓝牙主从模式切换
  • profile-3d-contrib,github三维立体图的使用
  • JDK17 你的下一个白月光
  • Docker部署Nginx下载站点服务
  • UML与设计模式
  • sourcemap
  • vue2 + echats macarons 选中样式的树状图
  • C++移动语义
  • 基于单片机的多功能智能小车设计
  • 5.3.1_2 二叉树的层次遍历
  • 大学牲期末救命医疗包速达~【概率论/马原/编译原理等工科课程速成】
  • MySQL数据操作与查询- 连接查询
  • 算法体系-21 第二十一 暴力递归到动态规划(三)
  • 专业学习|博弈论-博弈论概述
  • hexo+github搭建个人博客
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【React系列】如何构建React应用程序
  • 【前端学习】-粗谈选择器
  • angular组件开发
  • CSS实用技巧
  • Java的Interrupt与线程中断
  • JS字符串转数字方法总结
  • leetcode386. Lexicographical Numbers
  • Mithril.js 入门介绍
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • windows下mongoDB的环境配置
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 第2章 网络文档
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 每天10道Java面试题,跟我走,offer有!
  • 悄悄地说一个bug
  • 使用Gradle第一次构建Java程序
  • 手写双向链表LinkedList的几个常用功能
  • 详解NodeJs流之一
  • 译自由幺半群
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 最简单的无缝轮播
  • 回归生活:清理微信公众号
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #微信小程序(布局、渲染层基础知识)
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (6)设计一个TimeMap
  • (C++17) std算法之执行策略 execution
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (LeetCode C++)盛最多水的容器
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (翻译)terry crowley: 写给程序员
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot宠物管理系统 毕业设计 121654