Если нет желания заморачиваться с евентами, то можно делать примерно так:
CreateFile("COM0"...);
GetCommState();
Заполнить полученую
DCB структуру
SetCommState();
GetCommTimeouts();
Установка таймоаутов
SetCommTimeout();
Читать и писать в порт через WriteFile и ReadFile