Normalement pour la réception on utilise Serial.Read() qui dès qu'on lit un caractère l'efface du buffer. Normalement on a jamais à vider le buffer.
En général on utilise une routine du genre :
if(Serial.available()) {
delay(20);
char Buffer[20];
int i=0;
while(Serial.available()) Buffer[i++] = Serial.Read();
//traitement de Buffer
}