html - PROGMEM R中的Arduino变量“=====(HTML
问题描述
我想在我的 Arduino 上添加IPAddress ip = WiFi.localIP()
一个HTML 页面。const char root[] PROGMEM = R"=====(HTML code here)=====";
但我似乎无法让它显示在网页上。
IPAddressip = WiFi.localIP()
将转换为String
by ip.toString()
,我想将其插入String
到 .html 中的 HTML 中const char root[]
。
结果应该是:"<h4>IP:"+ip.toString()+"</h4>"
谁能帮我找到一种方法将 Arduino 的LocalIP()
地址添加到存储在的 HTML 页面中PROGMEM
?
解决方案
您不能将您的 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 地址给出的,它将插入名称。
推荐阅读
- python - Python 3 中的可扩展板
- jquery - 如何修复“客户”显示对象对象
- string - Mips 组件拨动盒
- c# - 禁用特殊链接的输出缓存
- amazon-web-services - 文件格式的 AWS 转录问题
- javascript - 为输入的输入字段值过滤下拉值
- java - collectd,java插件:找不到API类org.collectd.api.Collectd
- c++ - C/C++ 打印自定义 EOL
- android - 如何从 ViewModel 正确传递事件?
- c# - Microsoft Visual Studio 2017 安装程序项目启动条件检查不适用于 .net 4.7.1