监控通讯事件

【勇芳软件工作室】汉化HomePreviousNext

以下示例代码打开重叠I / O的串行端口,创建一个事件掩码来监视CTS和DSR信号,然后等待事件发生。执行WaitCommEvent功能作为重叠操作,因此进程的其他线程不能在等待期间执行I / O操作。

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

hCom = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,/ *独占访问* /
NULL,/ *无安全attrs * /
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);

if (hCom == INVALID_HANDLE_VALUE) {
/ *处理错误。*/
}

/ *设置事件掩码。*/

fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);

if(!fSuccess){
/ *处理错误* /
}

/ *创建一个用于WaitCommEvent的事件对象。*/

o.hEvent = CreateEvent(NULL, /* no security attributes */
FALSE / *自动复位事件* /
假,/ *没有信号* /
NULL / *无名称* /
);

assert(o.hEvent);

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

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