二、网络服务器

网络服务器

一、建立基本网络服务器

使用ESP8266WebServer库进行创建WeServer

#include<ESP8266WiFi.h>
#include<ESP8266WiFiMulti.h>
#include<ESP8266WebServer.h>

ESP8266WiFiMulti wifiMulti;//创建ESP8266WiFiMulti对象
ESP8266WebServer esp8266_server(80);//创建ESP8266WebServer对象,80为端口号。网络服务器标准http端口号为80,所以使用80端口号

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);//启动串口通讯

  wifiMulti.addAP("TestWiFi", "66668888");
  wifiMulti.addAP("TestWiFi1", "66668888");

  int i = 0;
  while (wifiMulti.run() != WL_CONNECTED)
  {
    delay(1000);
    Serial.print(i++); Serial.print(" ");
  }

  //WiFi连接成功后通过串口监视器输出连接成功信息
  Serial.println("");
  Serial.print("Connect to ");
  Serial.println(WiFi.SSID());
  Serial.print("IP Address:\t");
  Serial.println(WiFi.localIP());

  //-------------"启动网络服务器功能" 程序部分开始-----------------//
  esp8266_server.begin();//启动服务器
  esp8266_server.on("/", handleRoot); //访问首页时调用 handleRoot 函数
  esp8266_server.onNotFound(handleNotFound);//访问首页失败时,调用 handleNotFound 函数

  Serial.println("HTTP esp8266_server Started");
}

void loop() {
  // put your main code here, to run repeatedly:
  esp8266_server.handleClient();//处理Http服务器访问
}

// 处理网站根目录 “/”的访问请求
void handleRoot()
{
  Serial.println("handleRoot");
  esp8266_server.send(200, "text/plain", "Hello From ESP8266");
}

//处理404情况的函数
void handleNotFound()
{
  Serial.println("handleNotFound");
  esp8266_server.send(404, "text/plain", "404 ESP8266 Seerver Not Found");
}

二、通过网络服务实现NodeMCU开发板的基本控制

/*========================================
  使用NodeMCU建立基本服务器。用户可通过浏览器使用ESP8266的IP地址
  访问ESP8266建立的基本网页并通过该页面点亮/熄灭NodeMCU的内置LED
  =========================================*/


#include<ESP8266WiFi.h>
#include<ESP8266WiFiMulti.h>
#include<ESP8266WebServer.h>


ESP8266WiFiMulti wifiMulti;
ESP8266WebServer espWebServer(80);
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(LED_BUILTIN, OUTPUT);

  wifiMulti.addAP("TestWiFi", "66668888");


  int i = 0;
  while (wifiMulti.run() != WL_CONNECTED) {
    delay(1000);
    Serial.println(i++);
  }
  //连接WiFi成功
  Serial.print("Connected to:");
  Serial.println(WiFi.SSID());

  Serial.print("IP address:");
  Serial.println(WiFi.localIP());


  //=========="网络服务器代码"================
  espWebServer.begin();
  espWebServer.on("/", HTTP_GET, handleRoot);
  espWebServer.on("/LED", HTTP_POST, handleLED);
  espWebServer.onNotFound(hanandleNotFound);
}

void loop() {
  // put your main code here, to run repeatedly:
  espWebServer.handleClient();// 检查http服务器访问
}

void handleRoot()
{
  espWebServer.send(200, "text/html", "<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
}
void handleLED()
{
  //espWebServer.send(200, "text/plain", "Click LED Button");
  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // 改变LED的点亮或者熄灭状态
  espWebServer.sendHeader("Location", "/");         // 跳转回页面根目录
  espWebServer.send(303);                           // 发送Http相应代码303 跳转
}
void hanandleNotFound()
{
  espWebServer.send(404, "text/plain", "404 Connect to ESP8266 Fail");
}


html代码绘制Tooggle按钮
在这里插入图片描述

三、通过网络服务将开发板引脚状态显示在网页中

/*========================================
  使用NodeMCU建立基本服务器。用户可通过浏览器使用ESP8266的IP地址
  访问ESP8266建立的基本网页并在该网页展示D3引脚状态
  =========================================*/


#include<ESP8266WiFi.h>
#include<ESP8266WiFiMulti.h>
#include<ESP8266WebServer.h>

#define buttonPin D3//按钮引脚D3

ESP8266WiFiMulti wifiMulti;
ESP8266WebServer espWebServer(80);

bool pinState;//存储引脚状态变量

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(buttonPin, INPUT_PULLUP);

  wifiMulti.addAP("3106", "Li18656509193");

  int i = 0;
  while (wifiMulti.run() != WL_CONNECTED) {
    delay(1000);
    Serial.println(i++);
  }
  //连接WiFi成功
  Serial.print("Connected to:");
  Serial.println(WiFi.SSID());

  Serial.print("IP address:");
  Serial.println(WiFi.localIP());


  //=========="网络服务器代码"================
  espWebServer.begin();
  espWebServer.on("/", HTTP_GET, handleRoot);
  espWebServer.onNotFound(hanandleNotFound);
}

void loop() {
  // put your main code here, to run repeatedly:

  pinState = digitalRead(buttonPin);//获取引脚状态

  espWebServer.handleClient();// 检查http服务器访问
}

void handleRoot()
{
  String displayStateString;
  if (pinState == HIGH)
  {
    displayStateString  = "Button State:HIGH";
  }
  else
  {
    displayStateString  = "Button State:LOW";
  }
  espWebServer.send(200, "text/text", displayStateString);
}

void hanandleNotFound()
{
  espWebServer.send(404, "text/plain", "404 Connect to ESP8266 Fail");
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值