Lettura Seriale

Buonasera a tutti,
sto avendo problemi a leggere la seriale da arduino, o meglio, legge qualche comando ma poi si blocca.
Io ho bisogno di inviare dei dati come:
00#L
00@L
02#R
etc il formato è sempre di 2 cifre numeriche seguite da due caratteri [#/@] + [lettera_alfabeto]

il codice è questo:

void r_data(){
  char input;
  String string;
    Serial.print("CIAO");
      x1 = Serial.parseInt(); //PIN
      delay(100);
      input = Serial.read();
      string = string + String(input);
      delay(100);
      input = Serial.read();
      string = string + String(input);
      delay(100);
      string.toCharArray(a,3);
}

Vi ringrazio per la lettura!

Ciao,
credo che devi utilizzare questa sintassi:

char = incoming_char;
if (Serial.available() > 0)
{
while(Serial.available())
    {
      incoming_char=Serial.read(); 
      Serial.print(incoming_char); 
    
    }
}

In che senso che poi si blocca ? Dopo quanto tempo ?
La classe String a lungo andare satura la memoria. Soprattutto creando e distruggendo la String spesso.
Sarebbe meglio usare le stringhe classiche del C (vettori/array di char terminati da carattere null '\0' )