Serial.readString() lento

Buongiorno ragazzi, sto implementando un sistema master/slave in 485 per far dialogare il master (raspberry) con più slave (arduino uno).
Per far ciò ho realizzato un semplice protocollo con il quale il master interroga gli slave.
All'inizio delle prove usavo la funzione Serial.read() senza problemi e se, per esempio, lanciavo 1 sulla seriale l'arduino 1 mi accendeva il led immediatamente.
Ora, siccome il comando del protocollo deve essere più complesso (xx = indirizzo, yyyy = comando) ho utilizzato la funzione Serial.readString() per poter leggere ed elaborare l'intero comando.
Facendo ciò però la reazione è molto ritardata ed il led si accende con un ritardo di quasi un secondo.
Ho fatto delle prove con sketch semplicissimi e sembrerebbe che sia proprio la funzione Serial.readString() a rallentare il tutto.
Mi confermate tutto ciò o sbaglio qualcosa? mi sapete indicare il modo migliore per leggere e quindi gestire un comando inviato su seriale?
Grazie, ciao.

Mi sa che non invii il fineriga, perciò readString attende fino al timeout.

Inoltre se è importante ridurre i tempi di trasmissione si potrebbe pensare a un protocollo binario invece "che a caratteri", ad esempio con un byte gestisci 256 indirizzi, mente con due caratteri (cioè due byte) solo 100.

Grazie della risposta.
Avevo risolto in parte con Serial.setTimeout(100), ma effettivamente, come posso inviare il fine riga?
Interessante il discorso binario.....ci studierò su...

Ilababy:
Avevo risolto in parte con Serial.setTimeout(100), ma effettivamente, come posso inviare il fine riga?

... semplicemente cambiando metodo della classe Serial. Il metodo chge stai usando dice:

Serial.readString() reads characters from the serial buffer into a string. The function terminates if it times out (see setTimeout()).

... quindi aspetta il timeout, se invece usi :

Serial.readStringUntil() reads characters from the serial buffer into a string. The function terminates if the terminator character is detected or it times out (see setTimeout()).

... puoi far terminare la lettura con un carattere terminatore, es. CR (0x0D).

Guglielmo

Ilababy:
xx = indirizzo, yyyy = comando

In alternativa, se il protocollo è questo, te ne esci con due parseint.
Leggi il primo, se è il tuo indirizzo allora leggi ed elabora anche il secondo altrimenti svuota ed attendi.