OnRxChar is triggered when data is received and you could read the incoming buffer from there but you are not forced to do this. In other words, if after the handshake, you no longer read a single char from OnRxChar but instead want to read data from vaComm with vaComm.ReadBuf() and monitor vaComm.ReadBufUsed to check when sufficient data from the stream is in the read buffer, you can do this outside the OnRxChar event handler.
Thank you for your reply. However, I think I need some more clarification. If I understand you correctly the OnRxChar event handler continues to trigger while data comes in but the data will accumulate in the buffer as long as I don't attempt to read it using ReadChar(). So, after the initial handshaking I have made my code bypass the ReadChar() instruction in the event handler on each input byte and it just exits the routine instead. However, I find that after the data input has finished arriving ReadBufUsed() always returns zero. If, on the other hand, I do read each byte using readChar() I find that the correct number of bytes have arrived each time. So why does the data not stay in the input buffer when I don't attempt to read it?
Yes, as long as you do not perform a read operation, the data accumulates in the read buffer.