Модемы и факс-модемы. Программирование для MS-DOS и Windows

       

Функция SetCommEventMask


Для каждого COM-порта Windows поддерживает слово событий. Оно состоит из набора бит, которые устанавливаются при изменении состояния COM-порта (например, при изменении состояния сигнала CTS). Чтобы при изменении состояния COM-порта соответствующим образом менялось слово состояния, необходимо сначала разрешить регистрацию этих изменений.

Функция SetCommEventMask разрешает регистрацию изменений состояния COM-порта в слове событий данного COM-порта:

UINT FAR* SetCommEventMask(int idComDev, UINT fuEvtMask);

Параметр idComDev является идентификатором COM-порта. Это значение возвращает функция OpenComm.

Параметр fuEvtMask определяет, какие события будут разрешены. Этот параметр может быть комбинацией из любых констант, перечисленных в следующей таблице:

Константа

Смысл

EV_BREAK



Устанавливается при обнаружении состояния BREAK на входной линии

EV_CTS

Устанавливается, когда сигнал CTS изменяет свое состояние

EV_CTSS

Указывает текущее состояние сигнала CTS

EV_DSR

Устанавливается, когда сигнал DSR изменяет свое состояние

EV_ERR

Устанавливается при возникновении ошибки на линии. Такими ошибками являются CE_FRAME, CE_OVERRUN, и CE_RXPARITY (см. описание функции GetCommError)

EV_PERR

Устанавливается при возникновении ошибки принтера для параллельного порта. Такими ошибками являются CE_DNS, CE_IOE, CE_LOOP и CE_PTO (см. описание функции GetCommError)

EV_RING

Указывает текущее состояние сигнала RI во время последнего прерывания от модема

EV_RLSD

Устанавливается, когда сигнал RLSD изменяет свое состояние

EV_RLSDS

Указывает текущее состояние сигнала RLSD

EV_RXCHAR

Устанавливается, когда символ принимается и помещается во входную очередь

EV_RXFLAG

Устанавливается, когда определенный в структуре DCB символ принимается и помещается во входную очередь COM-порта

EV_TXEMPTY

Устанавливается, когда последний символ из выходной очереди отправлен в COM-порт и выходная очередь становится пустой

Функция SetCommEventMask возвращает указатель на слово событий данного COM-порта. Каждый бит этого слова отвечает за определенное событие. Если бит установлен, значит соответствующее событие произошло.

В слово событий записываются только события, разрешенные функцией SetCommEventMask.

Воспользовавшись функцией EnableCommNotification, можно разрешить передачу в функцию окна приложения сообщения WM_COMMNOTIFY с кодом извещения CN_EVENT. Это сообщение будет передаваться при изменении слова состояния COM-порта.



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