This is gonna read half the data on you
while (Serial.read() != '#')
so this part will only see like every other byte
masterMessage[msgLength] = Serial.read();
Instead, try something like
while (done !=true){
do the 2nd part, masterMessage[msgLength] = Serial.read();
and then test
if (masterMessage[msgLength] == "#"){done = true;}
else {msgLength=msgLength++;}
Something like that.