Arduino EEPROM的使用

本文介绍了如何在Arduino中使用EEPROM进行数据持久化存储,包括基本操作、字符串与字符处理,以及结合ArduinoOTA进行初始化设置和OTA更新。在操作过程中,通过监控设备状态以确保初始化设置的正确执行,并详细阐述了ArduinoOTA的使用步骤。

EEPROM

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

EEPROM的使用

  • EEPROM的配置
  1. include <EEPROM.h>
  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<args.length;i++){\n”+
“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”+

表单可以写成这样

“<form id='F-N1' action='N1'>"+
           "<label>主机名称:</label><input id='N1-1' type='text'><br>"+
           "<label>主机密码:</label><input id='N1-2' type='text'><br>"+            
           "<input class='button button-off' type='button' value='保存主机信息'  onclick='javascript:su(\"N1\",[\"1\",\"2\"]);' >"+
           </form>\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();//然后关闭本次连接,释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值