Serial port is always 1 message behind.

What have you get the line ending set to in the Serial monitor ?

Why are you reading from Serial before you know that anything is available ?