vider une chaine de caractère

flush() attend que le buffer d'émission soit vide.

Pour vider le buffer de réception il faut faire:

while (Serial.available()){
    Serial.read();
}

Le problème de ton code c'est que tu ne synchronise pas la réception sur le caractère de début de trame (0x01). Du coup, si tu te décales, tu es perdu et tu ne raccroches jamais correctement sur ton message.
Pour vider une chaîne il suffit de mettre NULL ( ou 0) dans le premier élément, c'est le terminateur de chaîne.

Il n'y a ps de raisons pour que le buffer sature. Tes chaînes arrivent à quelle vitesse?