如何把从串口中读到的数据显示到webserver页面上
时间: 2023-11-12 14:04:21 浏览: 41
要将从串口中读取的数据显示在Web页面上,可以使用WebServer.h库的send()方法将数据作为响应发送到Web客户端。以下是一个示例代码,演示了如何从串口中读取数据,并将其显示在Web页面上:
```
#include <WiFi.h>
#include <WebServer.h>
// WiFi网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
WebServer server(80); // 创建Web服务器实例,监听端口80
void setup() {
Serial.begin(9600);
// 连接WiFi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // 打印本地IP地址
// 声明Web服务器路由
server.on("/", handleRoot);
server.begin(); // 启动Web服务器
Serial.println("Web server started.");
}
void loop() {
server.handleClient(); // 处理Web客户端请求
// 从串口读取数据,发送到Web客户端
if (Serial.available()) {
String data = Serial.readString();
server.send(200, "text/plain", data);
}
}
// 处理根路由请求
void handleRoot() {
server.send(200, "text/html", "<html><body><h1>Arduino Web Server</h1><p>Data from Serial Port: <span id='data'></span></p><script>setInterval(function() {var xhr = new XMLHttpRequest();xhr.onreadystatechange = function() {if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {document.getElementById('data').innerHTML = xhr.responseText;}};xhr.open('GET', '/data', true);xhr.send();}, 1000);</script></body></html>");
}
// 处理数据路由请求
void handleData() {
// 返回从串口读取的数据
if (Serial.available()) {
String data = Serial.readString();
server.send(200, "text/plain", data);
} else {
server.send(200, "text/plain", "");
}
}
```
此代码创建了一个Web服务器,其中根路由(/)返回一个包含从串口读取的数据的HTML页面。在loop()函数中,通过检查Serial.available()方法来检查串口是否有可用的数据。如果有,使用Serial.readString()方法读取数据,并使用server.send()方法将数据作为响应发送到Web客户端。在handleRoot()函数中,返回一个HTML页面,其中包含一个span元素,用于显示从串口读取的数据。使用JavaScript定时器定期向服务器发送一个GET请求,从而更新span元素的内容。需要注意的是,此代码仅用于演示如何将从串口读取的数据显示在Web页面上,实际应用可能需要根据具体需求进行修改。