Hallo,
in main() ist beim serread-aufruf das timeout auf 0 gesetzt ?!
mein Compiler würde auch in dem Ausdruck while (i < length && time++ < timeout) ein paar Klammern anfordern,
aber das ist wohl von Compiler zu Compiler unterschiedlich.
mfg
Achim