uso softSerial, differenza peek-read

come già scritto nel titolo mi saprete speigare la differenza fra le funzioni peek() e read()? ho letto i reference ma non riesco esattamente a capire la differenza.

Devo controllare un TDR via rs232, e lo devo fare tramite arduino.
il TDR riceve stringhe di comandi con terminatore CR e restituisce stringhe di risposta con terminatore CR.
in particolare al comando ":S_VP 0.503B\r" dovrebbe rispondere con ":$S_VPòJ"

questo il codice che ho scritto:

#include <SoftwareSerial.h>
SoftwareSerial tdr(6,7);
void setup(){
  Serial.begin(57600);
  tdr.begin(57600);
  
  tdr.print(":S_VP 0.503B\r");
}

void loop(){
  
  Serial.println(tdr.peek());
}

la read prende il primo carattere nel buffer, lo elimina dal buffer e te lo restituisce. Quindi alla prossima read leggerai il carattere successivo.
La peek invece non lo cancella, quindi con ogni peek leggi sempre il primo carattere del buffer.

peek() può essere utile in alcuni casi particolari, ma in generale conviene sempre usare read() per evitare di fare casini come loop infiniti sullo stesso carattere