關(guān)于串口句柄的關(guān)閉,不知道大家有沒有解決辦法關(guān)于串口句柄的關(guān)閉,不知道大家有沒有解決方法 我使用串口與裝置進行通訊,通訊過程中,突然裝置重啟,或與裝置之間的串口連接突然中斷 導(dǎo)致我的軟件無法在中斷連接之前關(guān)閉這個已經(jīng)打開的串口句柄,從而使我想再次打開該串口時, 顯示該串口已經(jīng)被占用而無法打開。 不知道各位有沒有好的解決方案呀。。謝謝了 ------解決方案-------------------- 每次打開串口如果顯示被占用就進行關(guān)閉,然后再次打開 ------解決方案-------------------- 打開之前做判斷。。。。。 ------解決方案-------------------- 突然中斷是可以檢測到的 我是這么做的 你參考一下
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); } } } 編輯推薦 |
|