在Arduino上存储字符串的最佳方法是什么?

时间:2012-08-14 09:36:20

标签: arduino webserver

我的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来存储数据。)

1 个答案:

答案 0 :(得分:3)

这是闪存使用和RAM使用之间的权衡,闪存比这些微控制器上的RAM要多得多。

除非我的Arduino草图耗尽RAM,否则我通常不会在闪存中存储字符串。不幸的是,要判断一个草图是否需要比可用内存更多的RAM并不容易 - 没有编译警告,事情就行不通或者你会得到奇怪的行为。在这种情况下,我找到一些我可以暂时缩短的数组,并再次编译草图。如果事情表现得更好,我知道我的某个地方已经没用RAM了,那么我就去寻找能PROGMEM的东西,或者考虑用更少的RAM编写程序的另一种方法。