使用Arduino开发ESP32(二十二):SimpleWiFiServer例程

本例程脱胎自官方例程
除翻译之外,还做了些许代码修改

/*
 使用Wifi网页服务来控制开关灯

 一个简单的网络服务,让你可以通过网页控制LED。
 此例程将打印WiFi模块(一旦连接)的ip地址到串行监视器。
 你可以在浏览器中访问该ip地址来打开和关闭LED。

 访问的网页地址格式如下:
 http://esp32的ip地址/H  开灯
 http://esp32的ip地址/L  关灯

 This example is written for a network using WPA encryption.  本例程为WPA加密所写
 For WEP or WPA, change the Wifi.begin() call accordingly. 对于WEP或者WPA,可以对照着更改Wifi.begin()函数的调用

需要的电路:
 * esp32附带的wifi模块
 * 一个连接了led灯的引脚(出于方便,我以串口打印文字模拟开关灯)

 
 */

#include 

const char* ssid     = "名称";
const char* password = "密码";

WiFiServer server(80);

void setup()
{
     
    Serial.begin(115200);

    delay(10);

    // 程序从连接一个wifi网络开始

    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
     
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi 已连接.");
    Serial.println("IP 地址: ");
    Serial.println(WiFi.localIP());
    
    server.begin();

}

int value = 0;

void loop(){
     
 WiFiClient client = server.available();   // 监听新连接的客户端

  if (client) {
                                  // 如果有客户端连接
    Serial.println("New Client.");          // 打印信息到串口
    String currentLine = "";                // 创建一个字符串来保存来自客户端的传入数据
    while (client.connected()) {
                 // 当客户端连接时保持循环
      if (client.available()) {
                  // 如果有来自客户端的数据可以读取
        char c = client.read();             // 读取一个字节
        Serial.write(c);                    // 打印到串口
        if (c == '\n') {
                         // 如果是换行符

          // 如果当前行为空,在一行中会有两个换行符。
          // 这是客户端HTrP请求的结束标志,所以发送一个响应:
          if (currentLine.length() == 0) {
     
            // HTTP 头经常以一串响应代码开始,即(e.g. HTTP/1.1 200 OK)
            // 然后是一个内容类型,这样客户就知道收到了什么,然后是一个空白行:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // 紧接着http响应的内容是:
            client.print("Click here to turn the LED on pin 5 on.
"
); client.print("Click here to turn the LED on pin 5 off.
"
); // HTTP响应以另一个空行结束 client.println(); //跳出循环 break; } else { //如果你收到了新行,则清空currentLine: currentLine = ""; } } else if (c != '\r') { // //如果收到除回车符以外的其他字符, currentLine += c; // 将其加到currentLine的末尾 } // 检查来自客户端的请求是否是"GET /H" 或者 "GET /L": if (currentLine.endsWith("GET /H")) { Serial.println("开灯..."); } if (currentLine.endsWith("GET /L")) { Serial.println("关灯..."); } } } // 关闭连接 client.stop(); Serial.println("客户端断联"); } }

结果:
使用Arduino开发ESP32(二十二):SimpleWiFiServer例程_第1张图片
使用Arduino开发ESP32(二十二):SimpleWiFiServer例程_第2张图片
在这里插入图片描述

你可能感兴趣的:(ESP32学习之路)