-
Serial.read() returns -1 when there's nothing to read. You either have to test for that or test for Serial.available() > 0 after each Serial.read() while you wait for the EOM.
-
Sending the ascii string "123" is not the same as sending the byte value 123.
-
PROTOCOL_SIZE is undefined, so you code doesn't compile.
You don't count how many characters you have received, and print the entire contents of the incoming_Char array. This way you'll see garbage or -1 after the last received char.
HTH