基于ESP32搭建物联网服务器五(内嵌HTML)

在前面的文章: ESP32的web服务器 中已经建立了最基本的web服务器。已经实现了基本对于浏览器发送的请求进行响应。但是只是输出了最基本的字符串,但一个正常的网页,是一种叫做HTML的全称为超文本标记语言,大多数情况下会包含有CSS层叠样式表来修饰网页,同时会利用JavaScript脚本语言来对浏览器事件做出响应,详细的说明这里不再赘叙。可以自行搜索。这里只介绍和使用一些基本的元素和属性。对于一个中文网页,需要使用

来声明编码,否则会出现乱码。下面是一个简单的HTML页面:



  
    
    EPS32教程
  
  
    

ESP32 HTML 标题

ESP32 HTML 段落

该HTML生成的网页在浏览器打开后的结果

基于ESP32搭建物联网服务器五(内嵌HTML)_第1张图片

 基本的HTML页面已经有了,接下来就是要在ESP32的web服务器 的基础上,把响应浏览器的请求换成上面的HTML代码。

首先,把这段HTML代码定义为一个String的变量:

const String indexHtml PROGMEM = R"rawliteral(


  
    
    EPS32教程
  
  
    

ESP32 HTML 标题

ESP32 HTML 段落

)rawliteral";

在这个变量里,使用了 PROGMEM 关键字,这个关键字的目的是将数据存储在Flash(闪存)中而不是RAM(运行内存)

同时R"rawliteral是一种引入原始字符串的方法。引用该方法,就无需对比如斜杠"\"或换行符"\n"之类的进行转义,非常方便。

然后,在响应请求的回调函数里发送这个变量,同时,发送的数据类型也相应得应该换成"text/html":

void call_back(AsyncWebServerRequest *request){
  Serial.println("User requested");
  request->send(200,"text/html",indexHtml);   //响应请求
}

至此,就创建了一个基本的HTML服务器,完整的代码:

#include 
#include "ESPAsyncWebServer.h"

  AsyncWebServer server(80);

const String indexHtml PROGMEM = R"rawliteral(


  
    
    EPS32教程
  
  
    

ESP32 HTML 标题

ESP32 HTML 段落

)rawliteral"; //连接WIFI void connect_wifi(){ const char* wifi_ssid = "maiqh"; const char* wifi_password = "1581162577000"; Serial.begin(9600); WiFi.begin(wifi_ssid, wifi_password); //连接WIFI Serial.print("Connected"); //循环,直到连接成功 while(WiFi.status() != WL_CONNECTED){ Serial.print("."); delay(500); } Serial.println(); IPAddress local_IP = WiFi.localIP(); Serial.print("WIFI is connected,The local IP address is "); //连接成功提示 Serial.println(local_IP); } void call_back(AsyncWebServerRequest *request){ Serial.println("User requested"); request->send(200,"text/html",indexHtml); //响应请求 } void web_server(){ server.on("/",HTTP_GET,call_back); //注册回调函数 server.begin(); //初始化 } void setup() { connect_wifi(); web_server(); } void loop() { // put your main code here, to run repeatedly: }

和之前一样,在串口监视器得到ESP32的IP地址后,在浏览器访问

基于ESP32搭建物联网服务器五(内嵌HTML)_第2张图片

在后续的文章中,将会介绍将html代码以文件的形式保存在ESP32的文件系统中。同时介绍如何引用CSS以及JS等文件。

你可能感兴趣的:(ESP32打造物联网,c语言,物联网,经验分享)