arduino ide esp32 网页按钮异步请求

前两天刚学,不咋懂,原理可以搜别的博主的文章,这是一个示例

#include<WiFi.h>
#include<WebServer.h>

#define ledpin 2

const char* ssid="Your ssid"; //写你们家的WiFi名称
const char* password="Your password"; //写你们家的WiFi密码

WebServer server(80); //端口号

void handleRoot()
{
  String HTML="<!DOCTYPE html>\
  <html>\
  <head><meta charset='utf-8'></head>\
  <body>\
  你好,我的朋友!\
  <br/>\
  <!--千万不要在<script>的定义内打注释,网页控制台会报错!!!(别问我是怎么知道的,问就是用chatgpt找了一个半小时多)-->\
  <!--24:创建xmlhttprequest对象-->\
  <!--25:需要一个参数-->\
  <!--26:建立连接,请求类别,地址(url),是否是异步请求(不刷新网页)-->\
  <!--27:发送请求-->\
  <script>\
  var xhttp=new XMLHttpRequest();\
      function ctrl(arg){\
            xhttp.open('GET','/ctrl?led='+arg,true);\
            xhttp.send('null');\
                      }\
  </script>\
  <!--30:script的定义-->\
  <button onmousedown=\"ctrl('on')\">开灯</button> <!-- //按钮,button必须带一个参数,当鼠标按下之后执行一个方法,led灯控制字目录后/ctrl?led=后的参数,两个button中间是按钮上的字-->\
  <button onmousedown=\"ctrl('off')\">关灯</button> <!-- -->\
  </body>\
  </html>";

  server.send(200,"text/html",HTML); //返回成功码,返回类型,返回字符串
}
void ledctrl()
{
  String state=server.arg("led"); //用来获取网址ctrl?led=后的内容

  if(state=="on")
  {
    digitalWrite(ledpin,HIGH);
  }
  else if(state=="off")
  {
    digitalWrite(ledpin,LOW);
  }

  server.send(200,"text/html","<b>Led is "+state+"</b>."); //<b>你要加粗的文字</b>加粗字体
}

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

  pinMode(ledpin,OUTPUT);

  WiFi.begin(ssid,password);
  while(WiFi.status()!=WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi连接成功");
  Serial.print("WiFi IP地址:");
  Serial.println(WiFi.localIP());

  server.on("/",handleRoot);
  server.on("/hello",[](){server.send(200,"text/html","hello");}); //秘名函数
  server.onNotFound([](){server.send(200,"text/html;charset=utf-8","没有找到页面!");});
  server.on("/ctrl",ledctrl); //可以带参数,网址/ctrl?led=后就是参数
  server.begin();

}

void loop()
{
  // put your main code here, to run repeatedly:
  server.handleClient();
}

相关推荐

  1. arduino ide esp32 网页按钮异步请求

    2024-02-13 07:18:01       57 阅读
  2. Android --- Kotlin学习之路:Okhttp 同步异步网络请求

    2024-02-13 07:18:01       24 阅读
  3. js的异步请求

    2024-02-13 07:18:01       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-13 07:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-13 07:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-13 07:18:01       87 阅读
  4. Python语言-面向对象

    2024-02-13 07:18:01       96 阅读

热门阅读

  1. 桥接模式:连接抽象与实现的设计艺术

    2024-02-13 07:18:01       56 阅读
  2. Kotlin:单例模式(项目使用实例)

    2024-02-13 07:18:01       55 阅读
  3. 使用 C++23 从零实现 RISC-V 模拟器(1):最简CPU

    2024-02-13 07:18:01       51 阅读
  4. 面试复盘——9

    2024-02-13 07:18:01       60 阅读
  5. 嵌入式大厂面试题(1)—— CVTE

    2024-02-13 07:18:01       57 阅读
  6. ES实战-分析数据1

    2024-02-13 07:18:01       48 阅读
  7. 面试计算机网络框架八股文十问十答第三期

    2024-02-13 07:18:01       62 阅读
  8. 时钟信号和复位信号的来源

    2024-02-13 07:18:01       44 阅读
  9. C语言-二分查找

    2024-02-13 07:18:01       47 阅读
  10. 使用深度学习进行“序列到序列”回归

    2024-02-13 07:18:01       46 阅读
  11. Dubbo集成Zookeeper embbed模式

    2024-02-13 07:18:01       49 阅读
  12. 探索XGBoost:多分类与不平衡数据处理

    2024-02-13 07:18:01       45 阅读