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

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

Serial.setRxBufferSize(1024);

但是,一旦我输入以下代码行(从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';
    }
  }
}

希望任何人都知道怎么了。

谢谢!

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

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

最佳答案

显然这个功能

void serialEvent()
 {
  Serial.setRxBufferSize(64); // increasing buffer size ?
....

在循环中被称为-因此基本上,您尝试动态更改RX的缓冲区大小-因此请尝试
 #define BAUD_RATE  115200
 #define SERIAL_SIZE_RX  1024    // used in Serial.setRxBufferSize()

setup(){
  Serial.begin(BAUD_RATE);
  Serial.setRxBufferSize(SERIAL_SIZE_RX);
....
}

上面的代码在ESP8266 / ESP32和ArduinoIDE 1.8.12和ESP32内核1.04 / ESP8266内核2.6.3中正常工作

07-24 09:22