Arduino ESP8266 从 EEPROM 读取字符串
Arduino ESP8266 read String from EEPROM
我实现了从 ESP8266 EEPROM 读取字符串 - 到目前为止一切顺利。
但是,尝试将第二个字符串附加到刚刚读取的第一个字符串是行不通的!
我从 EEPROM 的地址 0 处的数字 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);
这是日志打印的内容:
显然,我希望 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 = {
"",
""
};
使用 saveConfig() 保存设置结构
如果您想从 EEPROM 加载,请使用 loadConfig() -> 它将存储在设置结构
中
我实现了从 ESP8266 EEPROM 读取字符串 - 到目前为止一切顺利。
但是,尝试将第二个字符串附加到刚刚读取的第一个字符串是行不通的!
我从 EEPROM 的地址 0 处的数字 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);
这是日志打印的内容:
显然,我希望 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 = {
"",
""
};
使用 saveConfig() 保存设置结构
如果您想从 EEPROM 加载,请使用 loadConfig() -> 它将存储在设置结构