美文网首页
网页配置 WiFi

网页配置 WiFi

作者: 招风小妖怪 | 来源:发表于2019-11-28 19:02 被阅读0次
#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();//运行服务器
}

相关文章

网友评论

      本文标题:网页配置 WiFi

      本文链接:https://www.haomeiwen.com/subject/ezfiwctx.html