使用arduino将字符串保存到ATMega328中?

时间:2015-06-26 13:28:40

标签: arduino

我们需要将Strings保存到atmega328芯片中,例如用户名和密码,即使在重置后也会保留在那里。

我已经读过EEPROM是它所需要的,但我可以看到你只能保存bytes,所以一个字就是一字节一字。

我读过这个: http://playground.arduino.cc/Code/EEPROMWriteAnything

但我可以看到有人说Strings存在问题。 那么,我们如何以可靠的方式(大规模生产)保存字符串

1 个答案:

答案 0 :(得分:0)

EEPROMWriteAnything实际上并不会写入所有内容,它对于大于一个字节的对象(不是数组或指针)的单个实例很有用。

由于String类使用动态内存,因此它是不兼容的:复制String对象也不会复制'指向的'动态记忆。

您可以做的是遍历字符串内容。

for( int i = 0 ; i < str.length() ; ++i ){
  EEPROM.write( address, str[ i ] );
}

这基本上就是你如何处理一个数组,但是当前的EEPROM 可以读取大于一个字节的东西,类似于EEPROMWriteAnything使用:

EEPROM.get( address, object );
EEPROM.put( address, object );

EEPROM库有一个更新,它处理数组,对象和内存块/字符串,但在IDE 1.6.6 / 7之前它们可能无法使用。但是,这些EEPROM助手只能隐藏你写的循环(它仍会占用空间)。