客户端 - 服务器设置中两个ESP8266之间的通信速度更快

时间:2017-07-11 10:29:46

标签: arduino serial-port iot esp8266

我正在尝试在两个ESP8266 12 E模块之间进行通信,一个在接入点模式下设置,另一个在站点设置。我的目标是建立两者之间的沟通。

  1. 如何更快地进行数据传输?
  2. 这就是所谓的TCP / IP连接吗?
  3. 接入点的代码:

    #include <ESP8266WiFi.h>
    #include <ESP8266WebServer.h>
    #include <WiFiClient.h>
    WiFiServer server(80);
    
    void setup() {
      WiFi.mode(WIFI_AP);
      WiFi.softAP("esp", "lol123");
      server.begin();
      Serial.begin(9600);
      IPAddress IP = WiFi.softAPIP();
      //Serial.flush();
      Serial.println();
      Serial.print("Server IP is: ");
      Serial.println(IP);
    
    }
    
    void loop() {
      char ID, R, G, B, anim_ID;
      WiFiClient client = server.available();
    
    
    
      int data_outgoing[5] = {10, 128, 128, 123, 123};
      int mapFun[5];
      Serial.print("Sent data: ");
      Serial.print(ESP.getChipId());
      Serial.println();
      for(int i = 0; i < 5; i++){
        mapFun[i] =data_outgoing[i];
        //mapFun[i] = map(mapFun[i], 0, 255, 0, 128); 
        client.print(mapFun[i]);
        Serial.print(mapFun[i]);
    
      }
    
    delay(10);
    }
    

    和接收端,电台。

    const char* ssid = "esp";
    const char* password = "lol123";
    const char* host = "192.168.4.1";
    WiFiServer server(80);
    
    void setup(){
      int count = 0;
      Serial.begin(9600);
      delay(10);
      //Serial.println();
      //Serial.println();
      //Serial.print("Connecting to: ");
      //Serial.print(ssid);
      //Serial.println();
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);
    
      //Serial.println("Connecting");
    
      while(WiFi.status() != WL_CONNECTED){
        delay(1000);
        Serial.print(".");
        count++;
      }
    
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.print("Time for connection(s): ");
      Serial.print(count);
      Serial.println();
      Serial.println("IP address: ");
      Serial.print(WiFi.localIP());
      Serial.println();
    }
    
    void loop(){
     WiFiClient client;
    
     if((client.connect(host, 80))){
    //  Serial.println("Connected");
    //  Serial.print(host);
    //  Serial.println();
    
    }
    
    String data;
    data = client.readStringUntil('\n');
      //Serial.println(data);
    
     for(int i = 0; i< 100; i++){
        Serial.write(data[i]);
        Serial.print(data[i]);
     }
    }
    

    此设置的问题是数据以良好的速度传输,但接收数据的速度非常慢。在站点接收数据需要相当长的时间,可以采取哪些措施来加快此过程,是否还有其他协议可以加快速度? 输出是这样的..

    WiFi connected
    Time for connection(s): 3
    IP address: 
    192.168.4.2
    10128128123123
    

    数据的长度是我收到的字符串,如何将其转换为整数?我试过ATOI但失败了。

    我对网络有点新意,任何建议都非常感激。

2 个答案:

答案 0 :(得分:1)

尝试以下操作。

服务器循环

void loop() {
  // listen for incoming clients
  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");
    if (client.connected()) {
      if (client.available()) {

        int data_outgoing[5] = {10, 128, 128, 123, 123};
    for(int i = 0; i < 5; i++){
    client.print(data_outgoing[i]);

    //Edit
    client.print('\n');

  }

     }
    }

    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

客户端循环

void loop(){
 WiFiClient client;


WiFiClient client = client.connect(host, 80);

while (client.connected()) {             
        char c = client.read();     
       Serial.print(c);
}

}

答案 1 :(得分:0)

除非密码长度至少为8个字符,否则原始帖子中的代码不会建立网络。使用&#34; lol12345&#34;将工作。希望它有所帮助 - 这个错过的细节花了我4天。它可能是我的IDE版本(arduino 1.8.1)的manefestation。