如何利用Api函数编写串口读数据函数?(在线等......)
我用Api函数来进行串口编程,我想在规定的时间内读取串口缓存区里的数据,我自己写的函数如下:
DWORD C***::ReadComm(char *buf, DWORD dwLength, int TimeOut)
{
BOOL bResoult;
DWORD length=0;
COMSTAT ComStat;
DWORD dwErrorFlags;
int retry;
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
for( retry = 0; retry < (TimeOut/50); retry++ )
{
if( ComStat.cbInQue >0 )
{
length=min(dwLength, ComStat.cbInQue);
bResoult = ReadFile(m_hCom,buf,length,&length,&m_osRead);
if(!bResoult)
{
if(GetLastError() == ERROR_IO_PENDING)
{
GetOverlappedResult(m_hCom, &m_osRead, &length, 1);
}
}
break;
}
else
{
Sleep(100);
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
}
}
if(retry == (TimeOut/50))
length = 0;
return length;
}
我遇到的问题是:我的读写操作会同时进行,有没有什么好的办法来确定读串口已经完成。如果有好的例子请发到(nantian2000@163.com).谢谢!