#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
const char* ssid = "myLight";//网页配置时的WiFi名字
const char* password = "myLight123";////网页配置时的WiFi密码
//设置web服务器访问端口
ESP8266WebServer server(80);
//从EEPROM中保存数据
void writer(String stype,String data)
{
//Serial.println("Start write");
int i,j;
EEPROM.begin(50); //申请操作到地址100(比如你只需要读写地址为100上的一个字节,该处也需输入参数101)
if(stype=="name")
{
i=0;
EEPROM.write(i, data.length());
}
else if(stype=="pwd")
{
i=20;
EEPROM.write(i, data.length());
}
i++;
for(j=0; j<data.length(); i++,j++)
{
EEPROM.write(i, data[j]); //写数据
//Serial.println(data[j]);
}
EEPROM.commit(); //保存更改的数据
//Serial.println("End write");
}
//从EEPROM中读取数据
String reader(String stype)
{
String data="";
// Serial.println("Start reader");
int i,j,len;
EEPROM.begin(50); //申请操作到地址100(比如你只需要读写地址为100上的一个字节,该处也需输入参数101)
if(stype=="name")
{
i=0;
len=EEPROM.read(i);
}
else if(stype=="pwd")
{
i=20;
len=EEPROM.read(i);
}
i++;
for(j=0; j<len; i++,j++)
{
data =data+ (char)EEPROM.read(i);
//Serial.println((char)EEPROM.read(i));
}
//Serial.println("*****************************");
// Serial.println(data);
// Serial.println("*****************************");
// Serial.println("End reader");
return data;
}
//根目录发送主页
void handleRoot(){
server.send(200, "text/html", "<!DOCTYPE HTML>\
<html>\
<meta name=\"viewport\" content=\"initial-scale=1, user-scalable=0, minimal-ui\">\
<body>\
<h1>wifi setting</h1>\
<form action=\"setWiFi\" method=\"get\">\
wifi name:<br>\
<input type=\"text\" name=\"name\">\
<br>\
wifi password:<br>\
<input type=\"text\" name=\"password\">\
<br>\
<input type=\"submit\" value=\"ok\">\
</form> \
</body>\
</html>");
}
void setWiFi(){//get 访问 demo地址
Serial.println(server.uri());
Serial.println(server.arg("name"));
Serial.println(server.arg("password"));
writer("name",server.arg("name"));
writer("pwd",server.arg("password"));
Serial.println("====================================");
Serial.println(reader("name"));
Serial.println(reader("pwd"));
Serial.println("++++++++++++++++++++++++++++++++");
Serial.printf("password=%d\n",server.arg("password").length());
server.send(200, "text/html", "<!DOCTYPE HTML>\
<html>\
<meta name=\"viewport\" content=\"initial-scale=1, user-scalable=0, minimal-ui\">\
<body>\
<h1>======OK======</h1>\
</body>\
</html>");
}//====================================================
void handleNotFound(){//访问 地址不存在返回404
server.send(200, "text/html", "<!DOCTYPE HTML>\
<html>\
<meta name=\"viewport\" content=\"initial-scale=1, user-scalable=0, minimal-ui\">\
<body>\
<h1>======ERROR======</h1>\
</body>\
</html>");
}
void setup(){
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);
server.on("/", handleRoot);//注册访问根目录回调函数
server.on("/setWiFi",setWiFi);//注册访问demo回调函数
server.onNotFound(handleNotFound);//注册无地址访问函数
server.begin();//启动服务器
Serial.println("");
Serial.println("HTTP server started");
Serial.println(reader("name"));
Serial.println(reader("pwd"));
}
void loop() {
server.handleClient();//运行服务器
}
网友评论