WEB开发网
开发学院软件开发VC Win32串口编程 阅读

Win32串口编程

 2007-03-17 22:00:53 来源:WEB开发网   
核心提示: 下面我们先简单说一下OVERLAPPED结构和GetOverlappedResult函数:OVERLAPPED结构OVERLAPPED结构包含了重叠I/O的一些信息,定义如下:typedef struct _OVERLAPPED { // oDWORDInternal;DWORDInter

下面我们先简单说一下OVERLAPPED结构和GetOverlappedResult函数:

OVERLAPPED结构

OVERLAPPED结构包含了重叠I/O的一些信息,定义如下:typedef struct _OVERLAPPED { // o 
  DWORD Internal;
  DWORD InternalHigh;
  DWORD Offset;
  DWORD OffsetHigh;
  HANDLE hEvent;
} OVERLAPPED;
  在使用ReadFile和WriteFile重叠操作时,线程需要创建OVERLAPPED结构以供这两个函数使用。线程通过OVERLAPPED结构获得当前的操作状态,该结构最重要的成员是hEvent。hEvent是读写事件。当串口使用异步通讯时,函数返回时操作可能还没有完成,程序可以通过检查该事件得知是否读写完毕。

当调用ReadFile, WriteFile 函数的时候,该成员会自动被置为无信号状态;当重叠操作完成后,该成员变量会自动被置为有信号状态。GetOverlappedResult函数
BOOL GetOverlappedResult(
  HANDLE hFile,  // 串口的句柄 
  
  // 指向重叠操作开始时指定的OVERLAPPED结构
  LPOVERLAPPED lpOverlapped,  
  
  // 指向一个32位变量,该变量的值返回实际读写操作传输的字节数。
  LPDWORD lpNumberOfBytesTransferred,  
  
  // 该参数用于指定函数是否一直等到重叠操作结束。
  // 如果该参数为TRUE,函数直到操作结束才返回。
  // 如果该参数为FALSE,函数直接返回,这时如果操作没有完成,
  // 通过调用GetLastError()函数会返回ERROR_IO_INCOMPLETE。
  BOOL bWait   
  );  
该函数返回重叠操作的结果,用来判断异步操作是否完成,它是通过判断OVERLAPPED结构中的hEvent是否被置位来实现的。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:Win 串口 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接