Bonjour à tous,
Je n'y comprend RIEN !
Sur un ESP32 cadencé à 80Mhz j'utilise Hardware Serial sur Serial1 et 2 pour recevoir un message de 19 char (y compris /r/n) sur Serial2.
Je répond IMMEDIATEMENT sur serial1 en envoyant un message de même taille
Je constate au scope que ma réponse part ~3-4 secondes après la fin de réception du message reçu.
Pourquoi ce délais et que manque t-il à mon code pour raccourcir le temps entre fin de réception et émission.
J'ai en fait utilisé une voie en réception et l'autre en émission pour justement raccourcir le temps de réponse.
/*
emulation lidar ESP32 RX2 TX1
voie 1 sport1 tx 27; rx 26 nu=non utilisé
voie 2 sport2 rx 17; tx 16 nu=non utilisé
*/
String buf1;
char rmessageL[] = {"~0103010006B9624\r\n"}; //message reponse LECTURE
String bufrec;
#include <HardwareSerial.h>
HardwareSerial sport1(1); // use UART1
HardwareSerial sport2(2); // use UART2
void setup() {
Serial.begin(115200);
sport1.begin(115200, SERIAL_8N1, 26, 27); //RX, TX
sport2.begin(115200, SERIAL_8N1, 17, 16); //RX, TX
while (!Serial) {
Serial.println("attente Serial ") ; // attente port connect
}
while (!sport1) {
Serial.println("attente sport1 ") ; // attente port connect.
}
while (!sport2) {
Serial.println("attente sport2 ") ; // attente port connect
}
int buf1_len = buf1.length() + 1; //buffer de reception
}
void loop()
{
if (sport2.available())
{
buf1 = (sport2.readString()); //reception message dans buf1
}
else
{
return;
}
delay(50);
sport1.write (rmessageL, sizeof(rmessageL)); //ENVOI lecture distance
delay(100);
}