0

我想将数据发送到我的 esp8266。

我正在使用 arudino fw。

数据在我试过的网址中:

String request = client.readStringUntil('\n');

    char chars[1000];
    char data[100];
    bool startRead =false;
    request.toCharArray(chars,1000);
    int counter=0;
    for(int i =0;i<1000;i++){

      if(chars[i]=='>'){
        startRead=false;
      }

      if(startRead==true){
        data[counter]=chars[i];
        counter++;
      }

      if(chars[i]=='<')
        startRead=true;

    }
    String output(data);

     // Serial.println(request);
    Serial.println(output);
      client.flush();

我得到了一些数据,但它不可靠。

如果我调用“192.168.4.1/HelloWorld”,我想要字符串 HelloWorld。

有任何想法吗?谢谢!

4

2 回答 2

0

或者....您可以使用 MQTT 协议。我不知道你正在努力完成。

我使用 PubSub 库 ( https://github.com/knolleary/pubsubclient ) + 任何 MQTT 代理将数据实际发送到 esp8266。我将它用于家庭自动化并控制我的中央供暖、灯光等。

我的 2 美分。干杯!

于 2017-08-05T01:22:54.883 回答
0

最好使用 WebServer 从 AP 模式获取数据。将下面的代码合并到您的项目中,并使您的 HTTP 请求像http://192.168.4.1/text?data=HelloWorld.

#include <ESP8266WebServer.h>
ESP8266WebServer server(80);

void handleText() {
  String message = "";
  for (uint8_t i=0; i<server.args(); i++){
    message += server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(200, "text/plain", message);
}

void setup(void){
  //..
  server.on("/text", handleText);
  server.begin();
  Serial.println("HTTP server started");
  //..
}

void loop(void){
  server.handleClient();
}
于 2016-10-17T07:01:59.050 回答