C++ 指向未保存到eeprom的结构变量的指针
我有一些代码来存储配置数据到EEPROM。变量配置中的数据可以打印到串行控制台,但不能保存到EEPROM。我使用的是ESP32(Arduino框架)。下面的代码是本文档中代码的缩短版本C++ 指向未保存到eeprom的结构变量的指针,c++,arduino,esp32,C++,Arduino,Esp32,我有一些代码来存储配置数据到EEPROM。变量配置中的数据可以打印到串行控制台,但不能保存到EEPROM。我使用的是ESP32(Arduino框架)。下面的代码是本文档中代码的缩短版本 #包括 #包括 #定义配置版本“VER01” 类型定义结构{ 字符版本[10]; int设置; }配置类型; 配置类型配置={config\u ver,50}; void saveconfig(){ Serial.println(“保存配置!!”); 对于(int i=0;i
#包括
#包括
#定义配置版本“VER01”
类型定义结构{
字符版本[10];
int设置;
}配置类型;
配置类型配置={config\u ver,50};
void saveconfig(){
Serial.println(“保存配置!!”);
对于(int i=0;i Serial.print(data);//运算符的优先级有时会有问题。我在这里没有深入研究优先级,但建议使用以下方法来防止出现任何问题:
void saveconfig() {
Serial.println("Saving configuration!!");
unsigned char *data = (unsigned char *)&configuration;
for(int i=0; i < sizeof(configuration); i++, data++) {
EEPROM.write(i,*data);
}
}
void saveconfig(){
Serial.println(“保存配置!!”);
无符号字符*数据=(无符号字符*)&配置;
对于(int i=0;i
运算符优先级有时可能会有问题。我在这里没有深入研究优先级,但建议采取以下措施以防止出现任何问题:
void saveconfig() {
Serial.println("Saving configuration!!");
unsigned char *data = (unsigned char *)&configuration;
for(int i=0; i < sizeof(configuration); i++, data++) {
EEPROM.write(i,*data);
}
}
void saveconfig(){
Serial.println(“保存配置!!”);
无符号字符*数据=(无符号字符*)&配置;
对于(int i=0;i
ESP32没有EEPROM。它只是闪存中的一个模拟。您需要提交更改以将它们从RAM移动到闪存
添加EEPROM。在写入初始化EEPROM仿真之前,以适当的大小开始(EEPROM大小)
在写入后添加EEPROM.commit()
,以将写入提交到闪存
参考官方示例:
请注意,EEPROM已弃用。请改用首选项库
请参见ESP32没有EEPROM。它只是闪存中的模拟。您需要提交更改,以便将它们从RAM移动到闪存
添加EEPROM。在写入初始化EEPROM仿真之前,以适当的大小开始(EEPROM大小)
在写入后添加EEPROM.commit()
,以将写入提交到闪存
参考官方示例:
请注意,EEPROM已弃用。请改用首选项库
请参见“打印良好”但您正在打印二进制数据。您如何知道它“良好”?@PaulOgilvie我没有收到您的信息。我可以打印一些东西到控制台,但无法将相同的数据保存到EEPROM。!“打印良好”但您正在打印二进制数据。您如何知道它“良好”?@PaulOgilvie我没有理解你的意思。我可以打印一些东西到控制台,但无法将相同的数据保存到EEPROM。!@Pigger我稍后将使用首选项库。添加EEPROM.commit()后,我对上述代码仍有相同的问题;@PraveenKumarPS您必须使用EEPROM.begin初始化EEPROM库。请按照官方示例进行操作。@pigger我稍后将使用首选项库。添加EEPROM.commit()后,上述代码仍然存在相同的问题;@PraveenKumarPS您必须使用EEPROM.begin初始化EEPROM库。请按照官方示例操作。
void saveconfig() {
Serial.println("Saving configuration!!");
unsigned char *data = (unsigned char *)&configuration;
for(int i=0; i < sizeof(configuration); i++, data++) {
EEPROM.write(i,*data);
}
}