FT_W32_WaitCommEvent函数的用法

介绍 FT_W32_WaitCommEvent函数的用法、参数、返回值、注意事项、适用的操作系统环境、调用代码示例等。

enter键 发泄超大号解压回车键usb电脑办公键盘程序员解压神器抖音网红Big Enter午睡枕头解压发送键创意礼物
解压神器 网红同款 一键多用 午睡枕头 | 月销量1095件
优惠价19.8元
原价¥39

淘口令:

¥oYXcX9x8a47¥
 

支持的操作系统

Linux

Mac OS X 10.4 以上版本

Windows 2000 以上版本

Windows CE 4.2 以上版本

概述

FT_W32_WaitCommEvent函数等待指定的事件的触发。

定义

BOOL FT_W32_WaitCommEvent(FT_HANDLE ftHandle, LPDWORD lpdwEvent,LPOVERLAPPED lpOverlapped)

参数说明

ftHandle — 设备句柄。

lpdwEvent— 指针,指向的地址空间存储包含触发的事件标识的掩码。

lpOverlapped — Pointer to an overlapped structure

返回值

成功则返回非零值;如果失败则返回0。

备注

FT_W32_WaitCommEvent 函数支持重叠I/O和非重叠I/O两种方式,但在 Linux, Mac OS X 和 Windows CE 系统平台下只支持非重叠I/O。

非重叠I/O

非重叠I/O方式,参数 lpOverlapped 必须设置为 NULL。

FT_W32_ReadFile 函数通过参数 lpdwBytesReturned 返回读取到的数据长度。

FT_W32_WaitCommEvent 函数直到通过调用 FT_W32_SetCommMask 函数设置的事件之一触发后才返回;触发的事件存储在 lpdwEvent 中。

重叠 I/O

当设备以重叠I/O方式打开时,向设备发起请求等待设备响应时,可以处理其他的任务,完成额外的工作。这种方式与非重叠I/O中向设备发起请求等待设备响应后才能继续执行后续操作的方式完全不同。

参数 lpOverlapped 必须指向经过初始化的 OVERLAPPED 结构体。

FT_W32_WaitCommEvent 函数直到通过调用 FT_W32_SetCommMask 函数设置的事件之一触发后才返回;触发的事件存储在 lpdwEvent 中。

如果对应事件触发,函数立即返回,返回true,触发的事件存储在参数 lpdwEvent 中。

如果没有事件触发,则函数立即返回false,且产生一个错误。调用者可以通过 FT_W32_GetLastError 函数来查询错误原因。;如果错误码为 ERROR_IO_PENDING,说明重叠操作仍在执行,程序可以去处理别的工作;程序可以通过调用 FT_W32_GetOverlappedResult 函数来查询重叠I/O的执行结果。

代码示例

1. This example shows how to write 128 bytes to the device using non-overlapped I/O.
FT_HANDLE ftHandle; // setup by FT_W32_CreateFile for non-overlapped i/o
DWORD dwEvents;
if (FT_W32_WaitCommEvent(ftHandle, &dwEvents, NULL))
; // FT_W32_WaitCommEvents OK
else
; // FT_W32_WaitCommEvents failed
2. This example shows how to write 128 bytes to the device using overlapped I/O.
FT_HANDLE ftHandle; // setup by FT_W32_CreateFile for overlapped i/o
DWORD dwEvents;
DWORD dwRes;
OVERLAPPED osWait = { 0 };
if (!FT_W32_WaitCommEvent(ftHandle, &dwEvents, &osWait)) {
if (FT_W32_GetLastError(ftHandle == ERROR_IO_PENDING) {
// wait is delayed so do some other stuff until …
if (!FT_W32_GetOverlappedResult(ftHandle, &osWait, &dwRes, FALSE))
; // error
else
; // FT_W32_WaitCommEvent OK
// Events that occurred are stored in dwEvents
}
}
else {
// FT_W32_WaitCommEvent OK
// Events that occurred are stored in dwEvents
}

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发