Функция ClearCommError
Приостановить прием/передачу данных может и возникновение любой ошибки при установленном в TRUE поле fAbortOnError в структуре DCB использованной для настройки режимов работы коммуникационного порта. В этом случае, для восстановления нормальной работы порта, следует использовать функцию:
BOOL ClearCommError(
HANDLE hFile,
LPDWORD lpErrors,
LPCOMSTAT lpStat
);
Эта функция не только сбрасывает признак ошибки для соответствующего порта, но и возвращает более подробную информацию об ошибке. Кроме того, возможно получение информации о текущем состоянии порта. Вот что означают параметры:
hFile
Описатель открытого файла коммуникационного порта.
lpErrors
Адрес переменной, в которую заносится информация об ошибке. В этой переменной могут быть установлены один или несколько из следующих бит:
- CE_BREAK Обнаружено состояние разрыва связи
- CE_DNS Только для Windows95. Параллельное устройство не выбрано.
- CE_FRAME Ошибка обрамления.
- CE_IOE Ошибка ввода-вывода при работе с портом
- CE_MODE Запрошенный режим не поддерживается, или неверный описатель hFile. Если данный бит установлен, то значение остальных бит не имеет значение.
- CE_OOP Только для Windows95. Для параллельного порта установлен сигнал "нет бумаги".
- CE_OVERRUN Ошибка перебега (переполнение аппаратного буфера), следующий символ потерян.
- CE_PTO Только для Windows95. Тайм-аут на параллельном порту.
- CE_RXOVER Переполнение приемного буфера или принят символ после символа конца файла (EOF)
- CE_RXPARITY Ошибка четности
- CE_TXFULL Переполнение буфера передачи
lpStat
Адрес структуры COMMSTAT. Должен быть указан, или адрес выделенного блока памяти, или NULL, если не требуется получать информацию о состоянии.