如何解决ESP32 Web Server定期更新问题
我试图将使用UART传输从嵌入式平台获得的一些数据发布到使用ESP32的Web服务器上。这是我正在使用的代码,我正在使用Arduino IDE。我对HTML不太熟悉,并且看到了几个示例,这些示例使用HTML通过发送请求来更新服务器值。
#include <WiFi.h>
#include "ESPAsyncWebServer.h"
AsyncWebServer server1(81);
const char* ssid ="mywifi";
const char* password ="mywifipass";
char c;
String readuart() {
if (Serial.available() > 0) {
c = Serial.read();}
return String(c);
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid,password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
Serial.println(WiFi.localIP());
server1.on("/test_data",HTTP_GET,[](AsyncWebServerRequest *request){
request->send(200,"text/plain",readuart().c_str());
});
server1.begin();
delay(100);
}
void loop() {
}
下面的代码部分发布了我得到的第一个字符串,但是它在那里停止了。
server1.on("/test_data",[](AsyncWebServerRequest *request){
request->send(200,readuart().c_str());
});
我想定期更新这个字符串。我该如何实现?任何帮助将不胜感激。
解决方法
听起来您想让页面每x秒重新加载一次。您可以将响应字符串更改为实际的html,然后使用meta refresh tag。这发生在客户端(在Web浏览器中)。
server1.on("/test_data",HTTP_GET,[](AsyncWebServerRequest *request){
String html = "<html><head><meta http-equiv=\"refresh\" content=\"30\"></head><body>"
+ readuart() + "</body></html>";
request->send(200,"text/html",html.c_str());
});
将30
更改为所需的超时时间。
另一种选择是使用客户端JS。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。