Как увеличить размер последовательного буфера RX для библиотеки ESP32 Hardwareserial (Platform IO) - PullRequest
1 голос
/ 27 марта 2020

Я хотел бы послать строки с USB (последовательного) на мой микроконтроллер esp32 (Arduino), размер которых превышает, по-видимому, ограничение по умолчанию в 64 байта для реального Arduino или, по-видимому, ограничение в 256 байт для esp32 [1].

Я нашел команду [2], распознаваемую PlatformIO:

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

1 Ответ

1 голос
/ 27 марта 2020

Очевидно, что эта функция

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

вызывается в l oop - поэтому в основном вы пытаетесь динамически изменить размер буфера 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 core 1.04 / ESP8266 core 2.6.3

...