@timde your buffer of 9 characters is definitely too small to store a 10 character message. The code will work, but will overwrite the character(s) located after your buffer.
Anything can sit there, and it can change over compile iterations, so behavior will be flaky.
Switching to string, which re-allocates memory dynamically as characters get added to it, will fix this issue.
I guess you added the delay because you are missing characters, right?
If so, this is very tricky as it needs to sync to the rate at which new characters come in...