Hallo, Junge !

Ich debugge mich normalerweise mit dem Print von einem zum nächsten durch:
hinter "incoming_char = chr....."
mach gleich einen Print incoming_char;

Wenn alles funzt, ist das mehr oder weniger ein echo.

dann schmeiss den Print und mach hinter "serial_in = serial_in + ..."
einen "print serial_in"
ein zwischenschritt:
temp_byte = len(serial_in)
print str(serial_in)

Und so geht's weiter. dann kannst du immer schauen, wie's läuft und nicht das rauskommt, was sollte.

EDIT: Ich mißtraue dem Len(xx) innerhalb einer "IF" abfrage
probier temp_byte = len (..
und dann if temp_byte > 2 ......