Arduino EEPROM的使用

EEPROM

断电后可记录数据。通常用于单片机的初始化数据参数的保存或系统数参数的保存。

EEPROM的使用

  • EEPROM的配置
  1. include
  2. EEPROM.Begin(512)会占用内存使用完毕后释放内存EEPROM.End()此点在示例中未得到进一步的证实,需在使用中遇到后进一步的验证。
  3. EEPROM.read(addr,byte); EEPROM.write(addr, byte);
  4. 对于复杂数据EEPROM.get(addr,obj); EEPROM.put(addr,obj);
  5. myobj cusVar={ String field1; const char* field2;}

字符串与char的处理

1.String 转为 char[](const char* pp)
pp=Str.c_str();
2.char[] 转为 String()
String(pp);
3.const char* t;
String f=“abcde”;
t=&f[0];
4.在struct中用char m[20];来定义字符串
在使用中strcpy(customVar2.sname,assid.c_str());

预置页面

前缀加入此句

String(“HTTP/1.1 200 OK\r\n”) +
“Content-Type: text/html\r\n” +
“Connection: close\r\n” + // the connection will be closed after completion of the response
“\r\n” +

"

函数可以写成这样

“function su(F,args){\n”+
“var saction=’’;\n”+
“for(var i=0;i “var m0=F.concat(’-’).concat(args[i]).concat(’-’);\n”+
“var m1=(’-’).concat(F).concat(’-’).concat(args[i]);\n”+
“var s=document.getElementById(F.concat(’-’).concat(args[i])).value;\n”+
“saction=saction.concat((m0.concat(s)).concat(m1).concat(’|’));\n”+
“}\n”+
“console.log(saction);\n”+
“document.getElementById((‘F-’).concat(F)).action=saction;\n”+
“document.getElementById((‘F-’).concat(F)).submit();\n”+
“}\n”+

表单可以写成这样

"+ "
"+ "
"+ ""+
\n”+

在操作EEPROM时为了不碍单机片的日常使用速度需做初始化设置处理

此处初始化设置处理采用的 ArduinoOTA

ArduinoOTA的使用

开机初始化参数

WiFiServer server(80); //创建tcp server

1.在setup中设置

 a.EEPROM.begin(128);
 b.设置查看系统初始化参数的函数,当然这个函数的设置是用来读取EEPROM中的数据
    EEPROM.get(addr,customVar1);
     赋值给单片机,如是wifi模块则对热点参,路由参数数据进行赋值
     WiFi.mod(WIFI_AP_STA);
     WiFi.softAP(assid,asecret);
     server.begin();启动tcp服务
 c.设置 ArduinoOTA服务
    ArduinoOTA.setHostname(""xyWebOTA");
    ArduinoOTA.begin();

2.在运行中进行监测

通过监测初始化的配置状态来读取初始化数据,为防置在setup中漏检初始化数据。
通过监测设备初始化设置状态来决定是否要执行OTA()
通过以上的监测过后可进行常规的单片机运转。

3.OTA()的执行

1.先开启 ArduinoOTA.handle()
2.WiFiClient client=server.available();监测客户端的访问

if(client){
while(client.connected()){ //不断监测请求内容,
if(client.available()){ //如果有请求
//取得请求地址
String line=client.readStringUntil(’\r’);
//如果含有某个参数说明是表单提交了 ,对得参数数据后调用writeEEPROM
line.indexOf("")>0{}
//如果无请求的参数(line.length()1) && line[0]’\n’){client.println(调用预置页函数)}
}
}
delay(1) //给浏览器接收数据的时间
client.flush();//然后关闭本次连接,释放资源

你可能感兴趣的:(arduino)