首页 > 解决方案 > PROGMEM R中的Arduino变量“=====(HTML

问题描述

我想在我的 Arduino 上添加IPAddress ip = WiFi.localIP()一个HTML 页面。const char root[] PROGMEM = R"=====(HTML code here)=====";

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

IPAddressip = WiFi.localIP()将转换为Stringby ip.toString(),我想将其插入String到 .html 中的 HTML 中const char root[]

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

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

标签: htmlstringarduinoarduino-c++

解决方案


您不能将您的 HTML 页面更改为存储在,char root[]因为它是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 地址给出的,它将插入名称。


推荐阅读