I have done a couple of apps which use com port for input and output. I had similar problem: I needed to know if a whole message was received. Its length was altering, so i couldnt just check how many bytes i had received, and then determine weather the whole message was received. I solved the problem by reading all incoming data at the time it was received, and storing it into FILO(first-in-last-out) queue. After this i checked the queue for new WHOLE message(s). Checking the messages is ofcourse dependant of the protocol you use to format them.
I hope this was what you were looking for!(?)