while (Serial.available()) {
delay(2); //delay to allow byte to arrive in input buffer
char c = Serial.read();
}
Please describe exactly what you think this is accomplishing.
Reading the characters and then throwing them away is a rather useless feat.