ESP8266 Nodemcu学习心得②

  • 一、库函数记录
  • 二、代码学习
  • 1、创建一个网络服务器
  • 2、优化网页显示内容




一、库函数记录

ESP8266WebServer esp8266_server(80);// 括号中的数字是网路服务器响应http请求的端口号,网络服务器标准http端口号为80,因此这里使用80为端口号
esp8266_server.begin(); //  启动网络服务功能
esp8266_server.on("/", handleRoot);          //“/”页面名称,handleRoot发送给页面的内容 
esp8266_server.onNotFound(handleNotFound);   //Nodemcu无法满足请求时的处理方式
esp8266_server.handleClient();     // 处理http服务器访问
esp8266_server.send(200, "text/plain", "Hello from ESP8266");// 处理http服务器访问,检查有没有设备通过网络向NodeMCU发送请求,注意一定要确保handleClient函数经常得以调用



二、代码学习

1、创建一个网络服务器

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

const char *ssid = "FreeWIFI"; // 这里定义将要建立的WiFi名称。
const char *password = "20202020";  // 这里定义将要建立的WiFi密码。

ESP8266WebServer esp8266_server(80);// 括号中的数字是网路服务器响应http请求的端口号,网络服务器标准http端口号为80,因此这里使用80为端口号

void setup(void)
{
  Serial.begin(9600);                          // 启动串口通讯
  WiFi.softAP(ssid, password);                 // WiFi.softAP用于启动NodeMCU的AP模式
  
  esp8266_server.begin();                      //  启动网络服务功能
  esp8266_server.on("/", handleRoot);          //“/”页面名称,handleRoot发送给页面的内容     
  esp8266_server.onNotFound(handleNotFound);   //Nodemcu无法满足请求时的处理方式    
  Serial.println("esp8266_server started");    //  发送ESP8266网络服务功能已经启动信息
}
 
void loop(void)
{
  Serial.print("Access Point: ");    // 通过串口监视器输出信息
  Serial.println(ssid);              // 告知用户NodeMCU所建立的WiFi名
  Serial.print("IP address: ");      // 以及NodeMCU的IP地址
  Serial.println(WiFi.softAPIP());   // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
  esp8266_server.handleClient();     // 处理http服务器访问,检查有没有设备通过网络向NodeMCU发送请求,注意一定要确保handleClient函数经常得以调用
}                                                                          
void handleRoot() 
{   
  esp8266_server.send(200, "text/plain", "富强民主文明和谐\n自由平等公正法制\n爱国敬业诚信友善\n");   //生成并且发送http响应信息,"text/plain"表明这是一段纯文本信息
}
 
void handleNotFound()
{
  // 当浏览器请求的网络资源无法在服务器找到时
  esp8266_server.send(404, "text/plain", "404: Not found");  
}

2、优化网页显示内容

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

const char *ssid = "FreeWIFI"; // 这里定义将要建立的WiFi名称。
const char *password = "20202020";  // 这里定义将要建立的WiFi密码。

ESP8266WebServer esp8266_server(80);// 括号中的数字是网路服务器响应http请求的端口号,网络服务器标准http端口号为80,因此这里使用80为端口号

void setup(void)
{
  Serial.begin(9600);                          // 启动串口通讯
  WiFi.softAP(ssid, password);                 // WiFi.softAP用于启动NodeMCU的AP模式
  
  esp8266_server.begin();                      //  启动网络服务功能
  esp8266_server.on("/", handleRoot);          //“/”页面名称,handleRoot发送给页面的内容     
  esp8266_server.onNotFound(handleNotFound);   //Nodemcu无法满足请求时的处理方式    
  Serial.println("esp8266_server started");    //  发送ESP8266网络服务功能已经启动信息
}
 
void loop(void)
{
  Serial.print("Access Point: ");    // 通过串口监视器输出信息
  Serial.println(ssid);              // 告知用户NodeMCU所建立的WiFi名
  Serial.print("IP address: ");      // 以及NodeMCU的IP地址
  Serial.println(WiFi.softAPIP());   // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
  esp8266_server.handleClient();     // 处理http服务器访问,检查有没有设备通过网络向NodeMCU发送请求,注意一定要确保handleClient函数经常得以调用
}                                                                          
void handleRoot() 
{   
  esp8266_server.send(200, "text/html", sendHTML());   //生成并且发送http响应信息,注意此处为html
}
 
void handleNotFound()
{
  // 当浏览器请求的网络资源无法在服务器找到时
  esp8266_server.send(404, "text/plain", "404: Not found");  
}
String sendHTML()
{
  String htmlCode = "<!DOCTYPE html> <html>\n";
  htmlCode +="<head>\n";
  htmlCode +="<title>社会主义核心价值观</title>\n";
  htmlCode +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";//<style> 元素:调整字符颜色大小
  htmlCode +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
  htmlCode +="</style>\n";
  htmlCode +="</head>\n";
  htmlCode +="<body>\n";
  htmlCode +="<h1>社会主义核心价值观</h1>\n";//<h1>定义一个大标题
  htmlCode +="<p>富强民主文明和谐</p>\n";//<p>定义一个段落
  htmlCode +="<p>自由平等公正法治</p>\n";
  htmlCode +="<p>爱国敬业诚信友善</p>\n";
  htmlCode +="</body>\n";
  htmlCode +="</html>\n";
  
  return htmlCode;
}