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