【发布时间】:2020-03-11 13:56:05
【问题描述】:
我正在学习有关使用连接到 Arduino Uno 的 esp8266 来提供带有 Ajax 的网页的教程,该网页检索 json 文件(也由 Arduino 提供)。该教程(此处不会链接到它)看起来像是一部虚构作品,因为作者使用这样的字符串构建网页:
String webpage = "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"width=device-width, minimumscale=1.0, maximum-scale=1.0, initial-scale=1\" />";
webpage += "<style>body { background-color: #cccccc; text-align: center; max-width: 400px; margin: 10px auto; } #datavalues { max-width: 400px; display: block; margin-top: 30px; }</style>";
webpage += "</head><body>";
webpage += "<div id=\"datavalues\">";
webpage += "<h1>Light: </h1><div id=\"light\">";
webpage += lightval;
webpage += "</div>";
webpage += "<h1>Count: </h1><div id=\"count\">";
webpage += count;
webpage += "</div>";
webpage += "</div>";
webpage += "<script>function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var obj = JSON.parse(this.responseText); document.getElementById(\"light\").innerHTML = obj.data[0].datavalue; document.getElementById(\"count\").innerHTML = obj.data[1].datavalue; } }; xhttp.open(\"GET\", \"data.json\", true); xhttp.send(); } var timedEvent = setInterval(function(){ loadDoc(); }, 2000);</script>";
webpage += "</body></html>";
当您对其进行测试时,看起来网页对于字符串来说太长了,或者 uno 内存不足。我一直在尝试使用 c 类型的字符串(读起来它们更有效),如下所示:
char webpage[1024] = "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"width=device-width, minimumscale=1.0, maximum-scale=1.0, initial-scale=1\" />";
strcat(webpage, "<style>body { background-color: #cccccc; text-align: center; max-width: 400px; margin: 10px auto; } #datavalues { max-width: 400px; display: block; margin-top: 30px; }</style>");
但它似乎并没有太大的区别。有没有办法从 arduino 提供这种大小的网页? / 构建和服务它的最有效方式是什么?
【问题讨论】:
-
问题:您是否有特殊需要使用 Arduino(我猜是 Uno)。您是否使用具有 1 或 4 Mb 内存的 ESP8266 wif 模块。模块的品牌是什么(例如 12e 或 1 或?)。您对字符串问题是正确的,由于 Uno(?) 的内存有限,即使字符也无法帮助您
-
是的,我一直在使用 uno,这是本科生学习 Arduino 的一些教学的一部分,所以即使我们可以直接使用 esp8266,我仍想使用 uno,以确保其他所有内容的一致性他们一直在努力。我一切正常,只是 ajax 太长了。
-
会看这个@Juraj,但需要测试下面的答案示例,因为它看起来更健壮。
标签: string server arduino esp8266