我们需要将Strings
保存到atmega328
芯片中,例如用户名和密码,即使在重置后也会保留在那里。
我已经读过EEPROM
是它所需要的,但我可以看到你只能保存bytes
,所以一个字就是一字节一字。
我读过这个: http://playground.arduino.cc/Code/EEPROMWriteAnything
但我可以看到有人说Strings
存在问题。
那么,我们如何以可靠的方式(大规模生产)保存字符串
答案 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助手只能隐藏你写的循环(它仍会占用空间)。