如何增加 ESP32 库硬件串行(平台 IO)的 RX 串行缓冲区大小

nol*_*its 4 c++ buffer serial-port arduino esp32

我想将字符串从 USB(串行)发送到我的 esp32 微控制器(Arduino),该字符串大于实际 Arduino 明显默认的 64 字节限制或 esp32 [1] 明显的 256 字节限制。

我发现PlatformIO识别的命令[2]:

Serial.setRxBufferSize(1024);
Run Code Online (Sandbox Code Playgroud)

但一旦我输入这行代码(从 10 到 1000 的任何数字),以下代码就不再运行:

void serialEvent() 
{
 Serial.setRxBufferSize(64); // increasing buffer size ?
 while (Serial.available()) 
 {    
    char inChar = (char)Serial.read();
    inputString += inChar;

    if (inChar == '$') // end marker of the string 
    {
      inputStringPC = inputString;
      stringCompletePC = true;
      Serial.print(inputStringPC);
      inChar = '0';
      inputString = '0';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

希望任何人都知道出了什么问题。

谢谢!

[1] https://esp32.com/viewtopic.php?t=8589

[2] https://www.esp32.com/viewtopic.php?t=7730

Cod*_*007 6

显然这个函数

void serialEvent() 
 {
  Serial.setRxBufferSize(64); // increasing buffer size ?
....
Run Code Online (Sandbox Code Playgroud)

在循环中被调用 - 所以基本上你尝试动态改变 RX 的缓冲区大小 - 所以尝试

 #define BAUD_RATE  115200
 #define SERIAL_SIZE_RX  1024    // used in Serial.setRxBufferSize()

setup(){
  Serial.begin(BAUD_RATE);
  Serial.setRxBufferSize(SERIAL_SIZE_RX);
....
}
Run Code Online (Sandbox Code Playgroud)

上述代码在 ESP8266 /ESP32 和 ArduinoIDE 1.8.12 以及 ESP32 core 1.04 / ESP8266 core 2.6.3 中运行没有任何问题