Функция 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-порта.