PROGMEM R 中的 Arduino 变量"======( HTML

问题描述

我想将 IPAddress ip = WiFi.localIP() 添加到我的 Arduino 上保存 HTML 页面const char root[] PROGMEM = R"=====(HTML code here)=====";

但我似乎无法让它在网页上显示

IP 地址 ip = WiFi.localIP() 将被 String 转换为 ip.toString(),我想将此 String 插入 HTML 中的 const char root[]

结果应该是:"<h4>IP:"+ip.toString()+"</h4>"

谁能帮我找到一种方法将 Arduino 的 LocalIP() 地址添加到存储在 PROGMEM 中的 HTML 页面

解决方法

您不能更改存储在 char root[] 中的 HTML 页面,因为它是 const,并且必须是 const 才能存储在 PROGMEM .

您可以将网页分成两部分,一部分包含您要显示的 IP 地址之前的所有 HTML,另一部分包含之后的其余 HTML,然后将两个 HTML 片段存储在 PROGMEM 中,然后首先将第一部分、IP 地址和第二部分发送给您的客户端。

另一种选择是在您的页面中添加一些 Javascript,在页面加载后使用 XHR 从 Arduino 检索 IP 地址,然后将 IP 地址插入页面的正确位置。

第三个更简单的选项:如果您使用地址栏中的 Arduino 的 IP 地址在浏览器中打开网页,您可以在您的网页中使用以下内容将 Arduino 的 IP 地址插入页面:

<html>
  <head></head>
  <body>
    <h4 ID="IP"></h4>
  </body>
  <script>
    document.getElementById("IP").innerHTML = location.hostname;
  </script>  
</html>

请注意,这将插入主机名;如果主机是按名称而不是 IP 地址给出的,则会插入名称。