AP 网络服务器 ESP8266 不工作(+ 串口监视器不打印)
AP Webserver ESP8266 doesn’t work (+ Serial monitor doesn’t print)
希望你一切顺利!
我开始学习如何在 ESP8266 上设置 WebServers,所以,我正在开发这个小项目来开始它。
基本上,它是一个网络服务器,我的 ESP8266 用作 AP,我在其中输入一个 HTML 表单,其中包含 6 个输入值,我将在我的 ESP8266 上接收这些值。
此时,我有两个大问题:
1st 也是最重要的是,服务器、HTML 脚本和 AP 总体上运行良好,因为一旦我将代码上传到 ESP8266 并连接到 AP,我就可以访问表单没有问题(http://192.168.4.1/)。当我输入值并单击“设置”提交它们时,问题就来了,因为它只是打印:未找到:/action_page.php
我不知道问题出在哪里,我尝试设置一些代码行以在找不到服务器时重定向访问,但它甚至没有访问主页。
2、我的串口监视器不打印这段代码中的任何一行,用其他代码,它打印正常,但这个不这样做。所以我不知道我做错了什么。
如果有任何建议,我将不胜感激,在此先感谢!这是我当前的代码:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
String backmsg = "";
const char MAIN_page[] PROGMEM = R"=====(<!DOCTYPE HTML><html>
<head>
<title>ESP Input Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<h1 style='text-align:center;'> <br><br> WEBSERVER AP TEST <br><br> </h1>
<h2 style='text-align:center;'>1ST VERSION <br><br> </h2>
<h3 style='text-align:center;'> 1ST SET: <br></h3>
<h3 style='text-align:center;'>
<form action="/action_page.php">
<label for="one">ONE:</label>
<input type="number" id="one" name="one" min="1" max="99">
<label for="two">      TWO:</label>
<input type="number" id="two" name="two" min="1" max="99">
<label for="thr">      THR:</label>
<input type="number" id="thr" name="thr" min="1" max="99"><br><br>
</h3>
<h3 style='text-align:center;'> 2ND SET: <br></h3>
<h3 style='text-align:center;'>
<label for="fou">FOU:</label>
<input type="number" id="fou" name="fou" min="1" max="99">
<label for="fiv">      FIV:</label>
<input type="number" id="fiv" name="fiv" min="1" max="99">
<label for="six">      SIX:</label>
<input type="number" id="six" name="six" min="1" max="99"><br><br> <br><br>
<input type="submit" value="SET">
</form>
</h3>
</body></html>
)=====";
String pageend = "<br><br><a href='/'><button class='button'>Regresar</button></a></body></html>";
//SSID and Password of your WiFi router
const char* ssid = "abcdefg";
const char* password = "1234567890";
ESP8266WebServer server(80); //Server on port 80
//When the page is opened
void handleRoot() {
String s = MAIN_page; //Read HTML contents
server.send(200, "text/html", s); //Send web page
}
//When submit is pressed
void handleForm() {
String onev = server.arg("one");
String twov = server.arg("two");
String thrv = server.arg("thr");
String fouv = server.arg("fou");
String fivv = server.arg("fiv");
String sixv = server.arg("six");
String eeee = onev + ":" + twov + ":" + thrv;
String ffff = fouv + "/" + fivv + "/" + sixv;
Serial.println(eeee);
Serial.println(ffff);
backmsg = "1st SET: " + eeee + "<br><br>" + "2nd SET: " + ffff + "<br><br>";
String s = "<a href='/'> Go Back </a>";
server.send(200, "text/html", backmsg + pageend + s); //Send web page
}
//SETUP
void setup(void){
Serial.begin(115200);
delay(100);
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(ssid,password);
Serial.print("Access Point is Created with SSID: ");
Serial.println(ssid);
Serial.print("Access Point IP: ");
Serial.println(WiFi.softAPIP());
server.on("/", handleRoot);
server.on("/action_page", handleForm);
server.begin();
Serial.println("HTTP server started");
}
//LOOP
void loop(void){
server.handleClient();
}
您的 HTML 正在向 /action_page.php
提交表单,但您的 Web 服务器正在处理 /action_page
。需要选择一个,用的时候要保持一致。
因为您实际上并没有使用 PHP 我建议将表格更改为:
<form action="/action_page">
希望你一切顺利! 我开始学习如何在 ESP8266 上设置 WebServers,所以,我正在开发这个小项目来开始它。
基本上,它是一个网络服务器,我的 ESP8266 用作 AP,我在其中输入一个 HTML 表单,其中包含 6 个输入值,我将在我的 ESP8266 上接收这些值。
此时,我有两个大问题:
1st 也是最重要的是,服务器、HTML 脚本和 AP 总体上运行良好,因为一旦我将代码上传到 ESP8266 并连接到 AP,我就可以访问表单没有问题(http://192.168.4.1/)。当我输入值并单击“设置”提交它们时,问题就来了,因为它只是打印:未找到:/action_page.php
我不知道问题出在哪里,我尝试设置一些代码行以在找不到服务器时重定向访问,但它甚至没有访问主页。
2、我的串口监视器不打印这段代码中的任何一行,用其他代码,它打印正常,但这个不这样做。所以我不知道我做错了什么。
如果有任何建议,我将不胜感激,在此先感谢!这是我当前的代码:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
String backmsg = "";
const char MAIN_page[] PROGMEM = R"=====(<!DOCTYPE HTML><html>
<head>
<title>ESP Input Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<h1 style='text-align:center;'> <br><br> WEBSERVER AP TEST <br><br> </h1>
<h2 style='text-align:center;'>1ST VERSION <br><br> </h2>
<h3 style='text-align:center;'> 1ST SET: <br></h3>
<h3 style='text-align:center;'>
<form action="/action_page.php">
<label for="one">ONE:</label>
<input type="number" id="one" name="one" min="1" max="99">
<label for="two">      TWO:</label>
<input type="number" id="two" name="two" min="1" max="99">
<label for="thr">      THR:</label>
<input type="number" id="thr" name="thr" min="1" max="99"><br><br>
</h3>
<h3 style='text-align:center;'> 2ND SET: <br></h3>
<h3 style='text-align:center;'>
<label for="fou">FOU:</label>
<input type="number" id="fou" name="fou" min="1" max="99">
<label for="fiv">      FIV:</label>
<input type="number" id="fiv" name="fiv" min="1" max="99">
<label for="six">      SIX:</label>
<input type="number" id="six" name="six" min="1" max="99"><br><br> <br><br>
<input type="submit" value="SET">
</form>
</h3>
</body></html>
)=====";
String pageend = "<br><br><a href='/'><button class='button'>Regresar</button></a></body></html>";
//SSID and Password of your WiFi router
const char* ssid = "abcdefg";
const char* password = "1234567890";
ESP8266WebServer server(80); //Server on port 80
//When the page is opened
void handleRoot() {
String s = MAIN_page; //Read HTML contents
server.send(200, "text/html", s); //Send web page
}
//When submit is pressed
void handleForm() {
String onev = server.arg("one");
String twov = server.arg("two");
String thrv = server.arg("thr");
String fouv = server.arg("fou");
String fivv = server.arg("fiv");
String sixv = server.arg("six");
String eeee = onev + ":" + twov + ":" + thrv;
String ffff = fouv + "/" + fivv + "/" + sixv;
Serial.println(eeee);
Serial.println(ffff);
backmsg = "1st SET: " + eeee + "<br><br>" + "2nd SET: " + ffff + "<br><br>";
String s = "<a href='/'> Go Back </a>";
server.send(200, "text/html", backmsg + pageend + s); //Send web page
}
//SETUP
void setup(void){
Serial.begin(115200);
delay(100);
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(ssid,password);
Serial.print("Access Point is Created with SSID: ");
Serial.println(ssid);
Serial.print("Access Point IP: ");
Serial.println(WiFi.softAPIP());
server.on("/", handleRoot);
server.on("/action_page", handleForm);
server.begin();
Serial.println("HTTP server started");
}
//LOOP
void loop(void){
server.handleClient();
}
您的 HTML 正在向 /action_page.php
提交表单,但您的 Web 服务器正在处理 /action_page
。需要选择一个,用的时候要保持一致。
因为您实际上并没有使用 PHP 我建议将表格更改为:
<form action="/action_page">