划句顾 发表于 2021-8-12 13:23:01

ESP8266:实现对NodeMCU的控制

本帖最后由 划句顾 于 2021-8-13 12:37 编辑

/***************************************
* purpose :用户通过浏览器可以访问NodeMCU所建立的网页。
*         通过该网页,用户可实现对NodeMCU的控制。
*         
* author:LAOGU
* time    :2021/8/12
*/
#include<ESP8266WiFi.h>
#include<ESP8266WiFiMulti.h>
#include<ESP8266WebServer.h>//ESP8266WebServer库

ESP8266WiFiMulti wifiMulti;//建立ESP8266WiFiMulti对象,对象名称是‘wifiMulti’

ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象,对象名称为esp8266_server
                                    //括号中的数字是网络服务器相应http请求的端口号
                                    //网络服务器标准http端口号为80
                                    
void setup()
{
Serial.begin(9600);   //启动串口通讯

pinMode(LED_BUILTIN,OUTPUT); //设置内置LED引脚为输出模式以便控制LED

//通过addAP函数存储 WiFi名称   WiFi密码
wifiMulti.addAP("Xiaomi_9C18","A123456789a");
wifiMulti.addAP("nanjishit","guyiling5201314");

Serial.println("Connecting ...");
int i = 0;
while(wifiMulti.run()!=WL_CONNECTED)
{
    delay(1000);
    Serial.print(i++);
    }
   
//wifi连接成功后将通过串口监视器输出连接成功信息
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());

// ”启动网络服务功能“ 代码如下:
esp8266_server.begin();//启动网络服务器
esp8266_server.on("/",HTTP_GET,handleRoot);    //handleRoot为网络服务函数,handle是处理的意思,root是根
esp8266_server.on("/LED",HTTP_POST,handleLED); //设置处理LED控制请求的函数‘handleLED’                              
esp8266_server.onNotFound(handleNotFound);   //设置处理404情况的函数‘handleNotFound’

// 告知用户网络服务功能已经启动
   Serial.println("HTTP esp8266_server started");
}

void loop() {
esp8266_server.handleClient(); // 检查http服务器访问,因为如果此时esp有其他的事情做,它是不会理会这些请求的
}

void handleRoot()
{
esp8266_server.send(200,"text/html","<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");

}

void handleLED()
{
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));//改变LED的点亮或者熄灭的状态
esp8266_server.sendHeader("location","/");   //跳转会页面根目录
esp8266_server.send(303); //发送http相应代码303跳转
}

void handleNotFound()
{
esp8266_server.send(404,"text/plain","404:Not found");
}

结果如下:



static/image/hrline/5.gif

注:在双引号前加 \ 是为了表示这是html的代码。
<form action=\"/LED\" method=\"POST\">
    <input type=\"submit\" value=\"Toggle LED\">
</form>

页: [1]
查看完整版本: ESP8266:实现对NodeMCU的控制