Работа с коммуникационными портами (COM и LPT) в программах для Win32

Функция 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, если не требуется получать информацию о состоянии.



Содержание раздела