使用 ESPAsyncWebServer 和来自 RAM 的块发送二维大数组

问题描述 投票:0回答:0

我在 ESP8266 上的代码有很大问题。我想使我的功能现代化以收集日志数据,然后将其全部发送到浏览器。首先,我尝试了 beginResponseStream 函数,但我的数组太大,无法发送一次。该数组有 300 行,每行有 100 个字符值。我在很多网站上读到,最好的工作方法是使用块来尽量减少堆内存的使用(在我的例子中,堆内存很少,只有 5-10KB)。 我还要补充一点,这对我来说是个大问题,7 天来我一直在尝试使用 beginChunkedResponse() 重写我的代码,但每次都没有成功。在这方面,我将非常感谢您的帮助。我不想放弃,因为这是我非常关心的功能。 在我看来,最好的解决方案是能够每隔 20 行发送一次数据块。如果这个解决方案有缺点并且效率不高,我很乐意听取建议。

我以前使用的代码(不起作用,因为少量空闲堆内存很可能会导致发送所有值时出现问题):

server.on("/logsOLD", HTTP_GET, [](AsyncWebServerRequest *request){
 AsyncResponseStream *response = request->beginResponseStream("text/plain; charset=UTF-8");
 for (int z = 0; z < numberOfLogRows; z++){
  response->print(logs[z]);
  response->print("\n");
 }
 request->send(response);
});

提前谢谢你! :)

c++ arduino microcontroller esp8266
© www.soinside.com 2019 - 2024. All rights reserved.