String Arduino ESP8266从EEPROM读取字符串
我实现了从ESP8266 EEPROM读取字符串-到目前为止还不错 但是,尝试将第二个字符串附加到刚刚读取的第一个字符串是不起作用的 我从EEPROM地址0处的编号String Arduino ESP8266从EEPROM读取字符串,string,append,esp8266,eeprom,String,Append,Esp8266,Eeprom,我实现了从ESP8266 EEPROM读取字符串-到目前为止还不错 但是,尝试将第二个字符串附加到刚刚读取的第一个字符串是不起作用的 我从EEPROM地址0处的编号2开始。我从地址0读到地址6 这是我的ESP8266.ino代码: String readM = ""; String appendixStr = "|||"; Serial.print("appendixStr = "); Serial.println(appendixStr); String
2
开始。我从地址0读到地址6
这是我的ESP8266.ino代码:
String readM = "";
String appendixStr = "|||";
Serial.print("appendixStr = ");
Serial.println(appendixStr);
String dailyzStr = "";
for (int a = 0; a < 7; ++a) { // addr 0...6
dailyzStr += char(EEPROM.read(a));
}
readM += dailyzStr + appendixStr;
Serial.print("hmmm = ");
Serial.println(readM);
String readM=”“;
字符串appendixStr=“| | |””;
Serial.print(“附录str=”);
序列号println(附录str);
字符串dailyzStr=“”;
对于(inta=0;a<7;++a){//addr 0…6
dailyzStr+=字符(EEPROM.read(a));
}
readM+=dailyzStr+附录str;
Serial.print(“hmmm=”);
Serial.println(readM);
下面是日志打印的内容:
显然,我希望hmmm=2 | | |
,但我只得到hmmm=2
为什么不能附加???我建议使用以下方法:
#include <EEPROM.h>
// Tell it where to store your config data in EEPROM
#define cfgStart 32
// To check if it is your config data
#define version "abc"
struct storeStruct_t{
char myVersion[3];
char name[32];
};
void saveConfig() {
// Save configuration from RAM into EEPROM
EEPROM.begin(4095);
EEPROM.put( cfgStart, settings );
delay(200);
EEPROM.commit(); // Only needed for ESP8266 to get data written
EEPROM.end(); // Free RAM copy of structure
}
void loadConfig() {
// Loads configuration from EEPROM into RAM
Serial.println("Loading config");
storeStruct_t load;
EEPROM.begin(4095);
EEPROM.get( cfgStart, load);
EEPROM.end();
// Check if it is your real struct
if (test.myVersion[0] != version[0] ||
test.myVersion[1] != version[1] ||
test.myVersion[2] != version[2]) {
saveConfig();
return;
}
settings = load;
}
// Empty settings struct which will be filled from loadConfig()
storeStruct_t settings = {
"",
""
};
#包括
//告诉它在EEPROM中存储配置数据的位置
#定义cfgstart32
//检查它是否是您的配置数据
#定义版本“abc”
结构存储结构{
char-myVersion[3];
字符名[32];
};
void saveConfig(){
//将配置从RAM保存到EEPROM
EEPROM.begin(4095);
EEPROM.put(cfgStart,设置);
延迟(200);
EEPROM.commit();//仅ESP8266需要写入数据
EEPROM.end();//结构的空闲RAM拷贝
}
void loadConfig(){
//将配置从EEPROM加载到RAM中
Serial.println(“加载配置”);
存储结构加载;
EEPROM.begin(4095);
EEPROM.get(cfgStart,load);
EEPROM.end();
//检查它是否是您的真实结构
if(test.myVersion[0]!=version[0]||
test.myVersion[1]!=版本[1]||
test.myVersion[2]!=版本[2]){
saveConfig();
回来
}
设置=负载;
}
//将从loadConfig()填充的空设置结构
storeStruct\t设置={
"",
""
};
使用saveConfig()保存设置结构如果要从EEPROM加载,请使用loadConfig()->它将存储在设置结构中谢谢,KeeyPee。看起来很有趣。我只是想知道:如果你不想一次读取整个EEPROM,但只读取字节0…6,例如?那么你还使用loadConfig吗?哦,顺便问一下,test是如何定义的???@iKK抱歉,响应太晚了,test只是加载eeprom的一个局部变量,它在loadConfig()中被指定为storestruct。只需在结构中保存所需的所有内容并调用saveConfig。您应该通过在程序启动时加载loadConfig来检索设置。