【发布时间】:2015-03-25 14:32:22
【问题描述】:
我正在编写一个类来将数据保存到 Arduino 的 EEPROM。 该类称为 Memory。
该类包含不同的函数和变量。
char serverdefault[15] = "0032484716340";
int pricedefault = 30;
void Memory::FactoryReset()
{
TotalSold = 0;
TotalCash = 0;
Sold = 0;
Cash = 0;
Items = 0;
EEPROM_writeAnything(10, TotalSold);
EEPROM_writeAnything(20, TotalCash);
EEPROM_writeAnything(30, Sold);
EEPROM_writeAnything(40, Cash);
EEPROM_writeAnything(50, pricedefault);
EEPROM_writeAnything(60, Items);
EEPROM_writeAnything(70, serverdefault);
ReadAll();
}
另一个功能允许更改默认服务器编号。
void Memory::ChangeServer(char *number_str)
{
EEPROM_writeAnything(70, number_str);
ReadAll();
}
此功能不起作用。 我在 void setup() 中调用函数。
void setup()
{
Serial.begin(9600);
Serial.println("started");
Serial.println("factory reset");
mem.FactoryReset();
Serial.println("change server number");
mem.ChangeServer("1234567890123");
}
保存在 EEPROM 中的值被替换为“b32484716340”而不是“1234567890123”。我做错了什么?
【问题讨论】:
-
什么是
EEPROM_writeAnything?它是如何声明的?它有什么作用? -
在
Memory::ChangeServer中,您将指针本身写入 EEPROM(即地址),而不是指针指向的字符串。 -
@JoachimPileborg 这是一个用于写入 EEPROM 的库。 playground.arduino.cc/Code/EEPROMWriteAnything
-
@PaulR 如何将值写入 EEPROM 而不是指针?
-
@JefGys:请参阅下面的答案...