if (inByte != '\n' && (SerialMessage_char < SerialMessageLength -1) )
{
SerialMessage[SerialMessage_char] = inByte;
reads to me as "if a Newline is received and the String length has not been reached then ad the Newline to the String". How do you interpret it ?
I don't generally use Strings as I prefer strings, but do Strings need to be terminated with a '\0' as you seem to be doing ?
Do you understand the difference between Strings and strings ?