MFC串口通信编程详解解析

loading 分享 2026-7-15 下载文档

果.例如,在重叠操作时如果操作还未完成函数就返回,那么函数就返回FALSE,而且GetLastError函数返回ERROR_IO_PENDING.这说明重叠操作还未完成.

下面是同步方式读写串口的示例: //同步读串口 char str[100];

DWORD wCount;//读取的字节数 BOOL bReadStat;

bReadStat=ReadFile(hCom,str,100,&wCount,NULL; if(!bReadStat {

MessageBox(\读串口失败!\return FALSE; }

return TRUE; //同步写串口 char lpOutBuffer[100]; DWORD dwBytesWrite=100; COMSTAT ComStat; DWORD dwErrorFlags;

BOOL bWriteStat;

ClearCommError(hCom,&dwErrorFlags,&ComStat;

bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL; if(!bWriteStat

{

MessageBox(\写串口失败!\}

PurgeComm(hCom, PURGE_TXABORT|

PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR; 在重叠操作时,操作还未完成函数就返回.

重叠I/O非常灵活,它也可以实现阻塞(例如我们可以设置一定要读取到一个数据 才能进行到下一步操作.有两种方法可以等待操作完成:一种方法是用象 WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员;另一种方法是调用GetOverlappedResult函数等待,后面将演示说明.

下面先简单介绍一下OVERLAPPED结构和GetOverlappedResult函数: OVERLAPPED结构

OVERLAPPED结构包含了重叠I/O的一些信息,定义如下: typedef struct _OVERLAPPED { 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是否被置位来实现的.

异步读串口的示例: char lpInBuffer[1024]; DWORD dwBytesRead=1024; COMSTAT ComStat; DWORD dwErrorFlags; OVERLAPPED m_osRead;

memset(&m_osRead,0,sizeof(OVERLAPPED;

m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL; ClearCommError(hCom,&dwErrorFlags,&ComStat;

dwBytesRead=min(dwBytesRead,(DWORDComStat.cbInQue; if(!dwBytesRead return FALSE;


MFC串口通信编程详解解析.doc 将本文的Word文档下载到电脑
搜索更多关于: MFC串口通信编程详解解析 的文档
相关推荐
相关阅读