I think you could get more help if you were questioning your design instead of asking for a direct solution. Anyway, concerning your original question, you can make a program slower by calling ::Sleep(milliseconds). If you wait for 10ms or 20ms you can check the port again to see if you received more data. To wait 3 seconds you would call ::Sleep(3000). Under Windows 95/98/Me the smallest time that actually has a wait effect is 50ms, on NT/2K/XP you can use 10ms as the smallest wait time. Anyway, it seems to me that a good design would be better than using ::Sleep() to solve a timing problem. I hope this helps, Rilhas -- modified at 18:10 Friday 21st July, 2006