如何增加 ESP32 库 Hardwareserial(平台 IO)的 RX 串行缓冲区大小
How To Increase RX Serial Buffer Size for ESP32 library Hardwareserial (Platform IO)
我想从 USB(串行)向我的 esp32 微控制器 (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';
}
}
}
希望有人知道出了什么问题。
谢谢!
显然是这个函数
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 core 1.04 / ESP8266 core 2.6.3 中没有任何问题
我想从 USB(串行)向我的 esp32 微控制器 (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';
}
}
}
希望有人知道出了什么问题。
谢谢!
显然是这个函数
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 core 1.04 / ESP8266 core 2.6.3 中没有任何问题