Arduino 在客户端-服务器设置中加快两个ESP8266之间的通信

Arduino 在客户端-服务器设置中加快两个ESP8266之间的通信,arduino,serial-port,iot,esp8266,Arduino,Serial Port,Iot,Esp8266,我正在尝试在两个ESP8266 12 E模块之间进行通信,一个设置为接入点模式,另一个设置为站点。我的目标是在两者之间建立沟通 如何使数据传输更快 这就是所谓的TCP/IP连接吗 接入点的代码: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiClient.h> WiFiServer server(80); void setup() { WiFi.mode(WIFI

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

  • 如何使数据传输更快
  • 这就是所谓的TCP/IP连接吗
  • 接入点的代码:

    #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);
    }
    
    数据的长长度是我收到的字符串,如何将其转换为整数?我试过ATOI,但失败了

    我是个网络新手,任何建议都非常感谢。

    试试下面的内容

    服务器循环

    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");
      }
    }
    

    原始帖子中的代码不会建立网络,除非密码长度至少为8个字符。使用“lol12345”将有效。希望有帮助-这个遗漏的细节花费了我4天的时间。它可能是我的IDE版本(arduino 1.8.1)的一个手动版本。

    您正在接收您发送的内容。10128128123,123@ShanilFernando但是接收数据时会有大约1秒的延迟。。这能更快吗?
    client.readStringUntil('\n')
    读取直到有换行符或1秒内没有数据。并且您不发送任何换行符。你甚至没有发送一个字符串,只是随机的字节。我在工作站的串行监视器上没有收到任何东西。应该一直读到行尾吗?取出client.available()有帮助。数据发送速率现在太快了。哦,对不起,我忘记从客户端删除
    client.available()
    。不管怎样,很高兴我能帮助你。@Prathikgurudat如果它能解决你的问题,请接受它作为正确答案。如果您有更多问题,请在这里发表评论。我非常乐意帮助您。也可以用串行输入替换阵列吗?我正在从一个python代码生成一个数组,该代码串行传输到AP。
    WiFi connected
    Time for connection(s): 3
    IP address: 
    192.168.4.2
    10128128123123
    
    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);
    }
    
    }