在主线程上进行写端口,另外再创建一个线程读端口。我写端口的程序是这样的:
1、先创建一个人工复位事件对象
2、异步写数据
3、如果返回值是FALSE,判断错误是什么,继续等待
在写之前端口句柄已返回,我的问题是写函数的返回值总是FALSE,让它进行错误处理,还是不能得到正确的程序流向。
下面是我的程序,麻烦帮我看看:
void CTeleArmDlg::WriteCommProc(CString *buf)
{
BOOL fState;
DWORD length=8;
COMSTAT ComStat;
OVERLAPPED m_osWrite;
DWORD dwErrorFlags;
memset(&m_osWrite, 0, sizeof(OVERLAPPED));
// 为重叠写创建事件对象,手工重置,初始化为无信号的
m_osWrite.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL);
ClearCommError(m_hPort,&dwErrorFlags,&ComStat);
fState=WriteFile(m_hPort,buf,length,&length,&m_osWrite);
if(!fState)
{
if(GetLastError()==ERROR_IO_PENDING)
{
while(!GetOverlappedResult(m_hPort,&m_osWrite,&length,TRUE))
{
dwErrorFlags=GetLastError();
if(dwErrorFlags==ERROR_IO_INCOMPLETE)
continue;
}
}
}
}