После долгих экспирементов, удалось достигнуть приемлемого быстродействия, 100 сообщений ушло за 0:00:00.601094:
#include <Arduino.h>
void setup() {
Serial.begin(115200);
Serial.println("Booting");
}
void loop() {
while(Serial.available()){
Serial.write(Serial.read());
}
delay(10);
}
тестовый код на python:
import time
import serial
import datetime
ser = serial.Serial(port='/dev/ttyUSB0', baudrate=115200)
received = []
ser.write(b'begin\n')
time.sleep(5)
start = datetime.datetime.now()
for i in range(1, 100):
ser.write(b'test%i\r\n' % i)
time.sleep(0.005)
while ser.inWaiting() > 0:
line = ser.readline()
if line:
received.append(line.decode().strip())
print(datetime.datetime.now() - start)
print(received)
ser.write(b'begin\n')
time.sleep(5)
Даннй кусок нужен, что-бы ардуина (esp32 тоже) успел перзагрузиться, т.к. dtr связан с software reset.
Подробнее тут