方法一:字符存储
#include <EEPROM.h>
//保存
void saveInstrument(String instrument_str){
EEPROM.write(1,instrument_str.length());//0为Wi-Fi用,1为记录字符串长度,2为是字符串数据开始
Serial.print("save default instrument len:");
Serial.println(instrument_str.length());
for (int i = 0; i < instrument_str.length(); i++)
{
EEPROM.write(i+2, instrument_str[i]); //在闪存内模拟写入
}
EEPROM.commit();//执行写入ROM
}
//读取
void loadInstrument(){
int len = EEPROM.read(1);
Serial.print("get default instrument len:");
Serial.println(len);
String data = "";
for (int i = 0; i < len; i++)
{
data += char(EEPROM.read(i+2));//0为Wi-Fi用,1为记录字符串长度,2为是字符串数据开始
}
Serial.print("load instrument: ");
Serial.println(data);
}
方法二:结构体存储
#include <EEPROM.h>
//定义结构体
struct config_type
{
char instrument[32];//定义实验室编号(最大32字节)
};
config_type myconfig;//声明结构体变量
//保存
void saveInstrument(String instrument_str){
uint8_t *p = (uint8_t*)(&myconfig);
strcpy(myconfig.instrument,instrument_str.c_str());//密码复制
for (int i = 1; i < sizeof(myconfig); i++)
{
EEPROM.write(i, *(p + i)); //在闪存内模拟写入
}
EEPROM.commit();//执行写入ROM
}
//读取
void loadInstrument(){
uint8_t *p = (uint8_t*)(&myconfig);
for (int i = 1; i < sizeof(myconfig); i++)///由于wifi状态已占用0,所以从1开始,从缓存读回数据
{
*(p + i) = EEPROM.read(i);
}
strcpy(myconfig.instrument,*p);//密码复制
Serial.println(myconfig.instrument);
}