AP Web服务器ESP8266无法工作(+串行监视器无法打印)



希望你做得很好!我开始学习如何在ESP8266上设置WebServer,所以,我正在开发这个小项目来开始

基本上,它是一个Web服务器,我的ESP8266作为AP工作,在这里我输入一个HTML表单,其中有6个输入值,我将在ESP8266上收到这些值。

在这一点上,我有两个大问题:

第一,也是最重要的,服务器,HTML脚本,&AP总体上运行良好,因为一旦我在ESP8266上上传代码并连接到AP,我就可以毫无问题地访问表单(http://192.168.4.1/(。当我输入值并点击";SET";提交它们,因为它只是打印:未找到:/action_page.php

我不知道问题出在哪里,我试着设置一些代码行,在找不到服务器的情况下重定向访问,但它甚至没有访问主页。

第二,我的串行监视器不打印这个代码中的任何一行,与其他代码一样,它正常打印,但这个没有打印。所以我不知道我做错了什么。

我将感谢任何建议,提前谢谢!这是我当前的代码:

#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"> &thinsp;&thinsp;&thinsp;&thinsp; TWO:</label>
      <input type="number" id="two" name="two" min="1" max="99">
      <label for="thr"> &thinsp;&thinsp;&thinsp;&thinsp; 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"> &thinsp;&thinsp;&thinsp;&thinsp; FIV:</label>
      <input type="number" id="fiv" name="fiv" min="1" max="99">
  
      <label for="six"> &thinsp;&thinsp;&thinsp;&thinsp; 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">

最新更新