My best guess is that you missed some multithreading, so the COM port has no time to receive more data.
Best is to use some own reading thread which enques the data for the main UI thread. Collect the data til some packet is complete and than comsume it.
Best is to read the this articel about
Serial library for C++ to better understand the architectural challenges.