I think I dont understand the problem completely.
But there is one thing I noticed. I assume that one data telegramm is 34 bytes long - because you are waiting until there are at least 34 bytes before you step into the reading routine. But then, in the reading all the data that is present. Possibly it is more than one telegram, so there are chances that you allready read the beginning of the next datagram - information that, of course, will be missing if you try to interpret the data you are reading in the next iteration.
Try to read only 34 bytes at a time (leave the rest inside the buffer until the next iteration). If you are running into timing trouble, decrease the waiting time.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany