Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 从Web服务器ESP8266的文本字段获取值_Arduino_Webserver_Textfield_Esp8266 - Fatal编程技术网

Arduino 从Web服务器ESP8266的文本字段获取值

Arduino 从Web服务器ESP8266的文本字段获取值,arduino,webserver,textfield,esp8266,Arduino,Webserver,Textfield,Esp8266,我用esp8266做了一个网络服务器 sResponse = "<p>" "<center>" "<h1>ESP8266 Web Server</h1>" "<p>Time <input type='text' name='date_hh' size=2 autofocus> hh <input type='text' name='date_mm' size=2 autofocus> mm <inpu

我用esp8266做了一个网络服务器

 sResponse  = 
"<p>"
"<center>"
"<h1>ESP8266 Web Server</h1>"
"<p>Time <input type='text' name='date_hh' size=2 autofocus> hh <input type='text' name='date_mm' size=2 autofocus> mm <input type='text' name='date_ss' size=2 autofocus> ss</p>"
"<p><a href=\"?pin=FUNCTION1ON\"><button>Save</button></a>"
"</center>"; 
client.print(sResponse);
sResponse=
“”
""
“ESP8266 Web服务器”
“时间hh-mm-ss

” “” ""; 客户。打印(响应);
我从Web服务器获得以下信息: .
如果单击“保存”按钮,我想读取三个文本字段的值

我该怎么办?或者,有没有其他(更好的)方法来构建这样的Web服务器


提前谢谢

你可以从这个开始

单击“保存”按钮时,可以通过GET请求将值作为查询字符串参数传递

然后可以使用
server.arg()
访问参数

//库
#包括
#包括
//无线网络
const char*ssid=“您的_ssid”;
const char*password=“您的密码”;
ESP8266Web服务器(80);
字符htmlResponse[3000];
void handleRoot(){
snprintf(htmlResponse,3000,
"\
\
\
\
\
\
\
时间\
嗯\
嗯\
党卫军\
\

拯救\ \ \ \ var-hh\ var-mm\ var-ss\ $(“#保存按钮”)。单击(函数(e){\ e、 预防默认值()\ hh=$('#date_hh').val()\ mm=$('#date_mm').val()\ ss=$('#date_ss').val();\ $.get('/save?hh='+hh+'&mm='+mm+'&ss='+ss,函数(数据){\ 控制台日志(数据)\ });\ });\ \ \ "); server.send(200,“文本/html”,htmlResponse); } void handleSave(){ if(server.arg(“hh”)!=“”){ Serial.println(“小时数:+server.arg(“hh”)); } if(server.arg(“mm”)!=“”){ Serial.println(“分钟:+server.arg(“mm”)); } if(server.arg(“ss”)!=“”){ Serial.println(“秒:+server.arg(“ss”)); } } 无效设置(){ //启动序列号 序列号开始(115200); 延迟(10); //连接到WiFi网络 Serial.println(); Serial.println(); 串行打印(“连接到”); 序列号println(ssid); WiFi.begin(ssid,密码); while(WiFi.status()!=WL_已连接){ 延迟(500); 连续打印(“.”); } Serial.println(“”); Serial.println(“WiFi连接”); Serial.println(“IP地址:”); Serial.println(WiFi.localIP()); server.on(“/”,handleRoot); server.on(“/save”,handleSave); server.begin(); Serial.println(“HTTP服务器已启动”); } void循环(){ server.handleClient(); }
您需要将输入放入表单,然后提交表单。得到是最简单的;您可以从C++、AS:EX:<代码> int DATEYMM =服务器.ARG(“DATEYMM”)。toint();代码>这是一种过度杀戮的方式,即使是很长一段时间。为什么不直接连接到时间服务器并打印出datetime@clockw0rk可能是离线操作?据我们所知,服务器可能处于AP模式。还是为了方便地输入任意非服务器时间进行测试?我同意时间服务器在99%的时间里是最好的。为什么需要
?没有更简单的方法不依赖G?
// Libraries
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>


// WiFi network
const char* ssid     = "your_ssid";
const char* password = "your_password";

ESP8266WebServer server ( 80 );



char htmlResponse[3000];

void handleRoot() {

  snprintf ( htmlResponse, 3000,
"<!DOCTYPE html>\
<html lang=\"en\">\
  <head>\
    <meta charset=\"utf-8\">\
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\
  </head>\
  <body>\
          <h1>Time</h1>\
          <input type='text' name='date_hh' id='date_hh' size=2 autofocus> hh \
          <input type='text' name='date_mm' id='date_mm' size=2 autofocus> mm \
          <input type='text' name='date_ss' id='date_ss' size=2 autofocus> ss \
          <div>\
          <br><button id=\"save_button\">Save</button>\
          </div>\
    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>\    
    <script>\
      var hh;\
      var mm;\
      var ss;\
      $('#save_button').click(function(e){\
        e.preventDefault();\
        hh = $('#date_hh').val();\
        mm = $('#date_mm').val();\
        ss = $('#date_ss').val();\        
        $.get('/save?hh=' + hh + '&mm=' + mm + '&ss=' + ss, function(data){\
          console.log(data);\
        });\
      });\      
    </script>\
  </body>\
</html>"); 

   server.send ( 200, "text/html", htmlResponse );  

}


void handleSave() {
  if (server.arg("hh")!= ""){
    Serial.println("Hours: " + server.arg("hh"));
  }

  if (server.arg("mm")!= ""){
    Serial.println("Minutes: " + server.arg("mm"));
  }

  if (server.arg("ss")!= ""){
    Serial.println("Seconds: " + server.arg("ss"));
  }

}


void setup() {

  // Start serial
  Serial.begin(115200);
  delay(10);

  // Connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.on ( "/", handleRoot );
  server.on ("/save", handleSave);

  server.begin();
  Serial.println ( "HTTP server started" );


}

void loop() {
  server.handleClient();
}