【问题标题】:How to pass the(serverClients[i].read() to byte array on ESP8266如何将(serverClients[i].read() 传递给 ESP8266 上的字节数组
【发布时间】:2020-05-18 02:13:13
【问题描述】:

在 Arduino 的草图中有一个使用 ESP8266 的 WiFi Telnet To Serial 示例。有一段代码用于从客户端接收数据:

 //check clients for data
 for(i = 0; i < MAX_SRV_CLIENTS; i++){
   if (serverClients[i] && serverClients[i].connected()){
     if(serverClients[i].available()){
    //get data from the telnet client and push it to the UART
     while(serverClients[i].available()) 
        Serial.write(serverClients[i].read());
   }
  }
 }

此数据发送到控制台或串口,但我需要捕获该数据并将其存储在字节数组中:

byte bufferMSGfromCliente[1024]

怎么做?

【问题讨论】:

  • 您已经尝试过什么,出了什么问题?看起来你的问题与 esp 无关。制作简单的控制台 PC 应用程序,它读取用户输入并将数据填充到此类缓冲区中以“调试”此类“复杂”“算法”。

标签: c++ arrays arduino esp8266


【解决方案1】:

它不是 c++,但您可以使用处理草图。语法非常接近 arduino,所以应该很熟悉。

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
  // List all the available serial ports
  printArray(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
    int i = 0;
    byte[] bufferMSGfromCliente = new byte[1024];
    while (myPort.available() > 0) {
        int inByte = myPort.read();
        if(i > 1024)
        {
            i = 0;
        }
        bufferMSGfromCliente[i] = inByte;
        i++;
    }
}

【讨论】:

    【解决方案2】:

    您是否尝试将其写入另一个串行端口?在这里,您将它写在与串行监视器相同的串行端口上。 最好将 serverClients[i].read() 存储到 Byte 中,然后 Serial.println(Byte) 以查看信息是什么。 之后,问问自己: 1.这个信息会发送到什么串口,目的地是什么? 2、如何确认信息发送成功并具备调试能力。

    另外,使用 Serial.flush() 确保 Serial.write 函数完成。尽管它说''flush'',但Arduino IDE中的函数等待串行写入函数完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多