RE:LECTURA DE DATOS DESDE PUERTO SERIE
Hay dos formas de hacerlo una es leyendo ciclicamente el puerto serie por cada ciclo ver si hay un dato, si lo hay sacarlo, procesar y seguir el ciclo, este metodo tiene la contra de ser "blocking", no podes hacer otra cosa mientras estás ciclando. Por contrapartida se puede insertar un procedimiento propio en la pila de llamadas a la interrupcion del puerto com en cuestion, de esta forma el procedimiento se ejecuta cuando un dato arriba al puerto liberando asi el resto del codigo, este metodo se podría llamar "non blocking".
Pero te doy un consejo, no reinventes la rueda, usa alguna unidad de las que hay dando vueltas por ahi, por ejemplo
http://www.cs.vu.nl/~jprins/tp.php