Продолжу конструктивную критику Только то, что заметил на скорую руку.
1. Умело пользуйтесь SetupApi для получения списка доступных портов, надеюсь вы знаете, что такое Device Interface Guide и его значение для serial.
2. Обрабатывайте сообщения WM_DEVICE для отслеживания изменения списка доступных портов и автоматического закрытия уже недоступных ( обязательно вызывайте CloseHandle) - иначе с USB-COM невозможно работать.
3. Правильно пользуйтесь потоками и механизмами синхронизации при обмене данными между потоками. Никогда не поднимайте приоритет потока выше нормального.
4. Обязательно пользуйтесь timeout при приеме и передаче данных.
5. Учтите, что нормальная поддержка таких протоколов, как Modbus RTU, LIN, 9-бит и аналогичных,без реализации их на уровне "железа" (или по крайней мере на уровне драйвера ядра) под Win невозможна.
6. При разработке ПО 95% времени тратится на отладку и тестирование.
Успехов.