如何判断串口状态 大家好,我做了一个小程序当我拔掉串口线的时候,我想让界面的指示灯图片变成灰色可是如何判断串口状态阿 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是这么处理的 switch(GetLastError()) { case ERROR_ACCESS_DENIED: { pOwner->m_bIsRece = FALSE; pOwner->m_hThreadRec = NULL; SetCommMask(pOwner->m_hComm, 0); ResetEvent(pOwner->m_olWait.hEvent); CloseHandle(pOwner->m_hThreadRec); pOwner->Close(); }break; case ERROR_IO_PENDING:GetOverlappedResult(pOwner->m_hComm, &pOwner->m_olWait, &dwLen, true);break; } } 带都上了还要怎么详细呢?那我再多贴点吧void CWEComm::ThreadReceive(CWEComm* pOwner){ if(!SetCommMask(pOwner->m_hComm, EV_RXCHAR|EV_ERR)) return; COMSTAT statCom; DWORD dwError, dwLen, dwMask; while(pOwner->m_bIsRece && pOwner->IsOpen()) { dwMask = 0; if(!WaitCommEvent(pOwner->m_hComm, &dwMask, &pOwner->m_olWait)) { switch(GetLastError()) { case ERROR_ACCESS_DENIED: { pOwner->m_bIsRece = FALSE; pOwner->m_hThreadRec = NULL; SetCommMask(pOwner->m_hComm, 0); ResetEvent(pOwner->m_olWait.hEvent); CloseHandle(pOwner->m_hThreadRec); pOwner->Close(); }break; case ERROR_IO_PENDING:GetOverlappedResult(pOwner->m_hComm, &pOwner->m_olWait, &dwLen, true);break; } } if(dwMask & EV_ERR) ClearCommError(pOwner->m_hComm, &dwError, &statCom); if(dwMask & EV_RXCHAR) { ClearCommError(pOwner->m_hComm, &dwError, &statCom); if(statCom.cbInQue>0) ::SendMessage(pOwner->m_hNotifyWnd, pOwner->m_uMsgID, statCom.cbInQue, 0); } }} 请教各位大侠,API函数MessageBox的具体实现代码是怎样的? 求救:我想把含有多副jpeg图的.bin分解出各张jpeg图,出现一个问题,求教. 如何得到Windows的所有系统用户名? 有人知道如何在程序中控制文本框的位置吗? VS2010中有没有函数可以判断当前程序运行的系统是32位的还是64位的? 用vc++ 实现DIOCM 转 RAW 如何将字符串转换成十六进制输出 CFile::Read的使用 有关View的小问题 新手求助一个mfc statictext的问题 关于MFC中Button颜色的问题 vc连接mysql问题:连接的加密方式
switch(GetLastError())
{
case ERROR_ACCESS_DENIED:
{
pOwner->m_bIsRece = FALSE;
pOwner->m_hThreadRec = NULL; SetCommMask(pOwner->m_hComm, 0);
ResetEvent(pOwner->m_olWait.hEvent);
CloseHandle(pOwner->m_hThreadRec);
pOwner->Close();
}break;
case ERROR_IO_PENDING:GetOverlappedResult(pOwner->m_hComm, &pOwner->m_olWait, &dwLen, true);break;
}
}
那我再多贴点吧
void CWEComm::ThreadReceive(CWEComm* pOwner)
{
if(!SetCommMask(pOwner->m_hComm, EV_RXCHAR|EV_ERR))
return; COMSTAT statCom;
DWORD dwError, dwLen, dwMask; while(pOwner->m_bIsRece && pOwner->IsOpen())
{
dwMask = 0;
if(!WaitCommEvent(pOwner->m_hComm, &dwMask, &pOwner->m_olWait))
{
switch(GetLastError())
{
case ERROR_ACCESS_DENIED:
{
pOwner->m_bIsRece = FALSE;
pOwner->m_hThreadRec = NULL; SetCommMask(pOwner->m_hComm, 0);
ResetEvent(pOwner->m_olWait.hEvent);
CloseHandle(pOwner->m_hThreadRec);
pOwner->Close();
}break;
case ERROR_IO_PENDING:GetOverlappedResult(pOwner->m_hComm, &pOwner->m_olWait, &dwLen, true);break;
}
} if(dwMask & EV_ERR)
ClearCommError(pOwner->m_hComm, &dwError, &statCom); if(dwMask & EV_RXCHAR)
{
ClearCommError(pOwner->m_hComm, &dwError, &statCom);
if(statCom.cbInQue>0)
::SendMessage(pOwner->m_hNotifyWnd, pOwner->m_uMsgID, statCom.cbInQue, 0);
}
}
}