我的Arduino上有一个Web服务器应该呈现一个表单,以便将一些数据保存到EEPROM。 HTML数据大约有1500
个字符。目前,我的代码如下:
[...]
serverClient.println("HTTP/1.1 200 OK");
serverClient.println("Content-Type: text/html");
serverClient.println("Connnection: close");
serverClient.println();
serverClient.println("<!DOCTYPE html>");
[...]
我读到了使用PROGMEM
关键字在F
中存储数据,如:
[...]
serverClient.println(F("HTTP/1.1 200 OK"));
serverClient.println(F("Content-Type: text/html"));
serverClient.println(F("Connnection: close"));
serverClient.println();
serverClient.println(F("<!DOCTYPE html>"));
[...]
但这需要更多的闪存。
使用第二种方式有什么好处吗?或者有更好的解决方案吗?
(我无法使用SD card来存储数据。)
答案 0 :(得分:3)
这是闪存使用和RAM使用之间的权衡,闪存比这些微控制器上的RAM要多得多。
除非我的Arduino草图耗尽RAM,否则我通常不会在闪存中存储字符串。不幸的是,要判断一个草图是否需要比可用内存更多的RAM并不容易 - 没有编译警告,事情就行不通或者你会得到奇怪的行为。在这种情况下,我找到一些我可以暂时缩短的数组,并再次编译草图。如果事情表现得更好,我知道我的某个地方已经没用RAM了,那么我就去寻找能PROGMEM
的东西,或者考虑用更少的RAM编写程序的另一种方法。