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

问题描述:

我在我的Arduino上有一个Web服务器,它应该呈现一个表格来保存一些数据到EEPROM。 HTML数据有大约1500个字符。此刻,我的代码如下所示:在Arduino上存储字符串的最佳方式是什么?

[...] 
    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来存储数据。)

它的闪存使用和RAM使用量之间的权衡,并且还有比这些微控制器RAM多了很多闪光。

我通常不会打扰在闪存中存储字符串,除非我的Arduino草图用完RAM。不幸的是,要判断一个草图是否需要比可用内存更多的内存并不容易 - 没有编译警告,事情就不会起作用,否则会出现奇怪的行为。在这种情况下,我会发现一些可以暂时缩短的数组,然后再次编写草图。如果事情表现得更好,我知道我的内存不足,所以我会去寻找我可以使用的内存,或者考虑使用更少的内存来编写程序的另一种方式。