На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Monitoring Communications Events



The following example code opens the serial port for overlapped I/O, creates an event mask to monitor CTS and DSR signals, and then waits for an event to occur. The WaitCommEvent function should be executed as an overlapped operation so the other threads of the process cannot perform I/O operations during the wait.

HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;

hCom = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0, /* exclusive access */
NULL, /* no security attrs */
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);

if (hCom == INVALID_HANDLE_VALUE) {
/* Deal with the error. */
}

/* Set the event mask. */

fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);

if (!fSuccess) {
/* deal with error */
}

/* Create an event object for use in WaitCommEvent. */

o.hEvent = CreateEvent(NULL, /* no security attributes */
FALSE, /* auto reset event */
FALSE, /* not signaled */
NULL /* no name */
);

assert(o.hEvent);

if (WaitCommEvent(hCom, &dwEvtMask, &o)) {
if (dwEvtMask & EV_DSR) {
/*
* . . .
*/
}

if (dwEvtMask & EV_CTS) {
/*
* . . .
*/
}
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Проверка Событий Связи



Следующий код примера открывает последовательный порт для перекрытого В/В, создает маску случая, чтобы проверять CTS и сигналы DSR, затем ждет случай, чтобы происходить. Функция WaitCommEvent должна быть выполнена как перекрытое действие, так что другая резьба процесса не может выполнить действия В/В в течение ожидания.

ПРООПЕРИРУЙТЕ hCom;
ПЕРЕКРЫТЫЙ o;
BOOL fSuccess;
DWORD dwEvtMask;

hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, /* Исключительный доступ */ НЕДЕЙСТВИТЕЛЬНЫЙ, /* никакая безопасность attrs */ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, НЕДЕЙСТВИТЕЛЬНОЕ
);

если (hCom == INVALID_HANDLE_VALUE) { /* Имейте дело error. */
}

/* Установите случай mask. */

fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);

если (!fSuccess) { /* сделка с ошибкой */
}

/* Создайте объект случая для использования в WaitCommEvent. */

o.hEvent = CreateEvent(НЕДЕЙСТВИТЕЛЬНЫЙ, /* никакая безопасность не приписывается */ ЛОЖЬ, /* авто случай сброса */ ЛОЖЬ, /* не сигнализированное */ НЕДЕЙСТВИТЕЛЬНЫЙ /* без имени */
);

утвердите(o.hEvent);

если (WaitCommEvent(hCom, &dwEvtMask, &o)) { если (dwEvtMask & EV_DSR) {
/*
* . ..
*/
}

если (dwEvtMask & EV_CTS) {
/*
* . ..
*/
}
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz