ESP32 Web服务器定期更新问题



我正试图将使用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", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", readuart().c_str());
});

我想定期更新这个字符串。我该如何做到这一点?任何帮助都将不胜感激。

听起来您希望页面每x秒重新加载一次。您可以将响应字符串更改为实际的html,并使用元刷新标记。这种情况发生在客户端(在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。

最新更新