2 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個贊
12345678910111213141516171819202122232425262728293031323334 | 寫6個 異步延遲等待1秒肯定能寫完 然后判斷 重疊結(jié)構(gòu) 判斷寫的數(shù)據(jù) 跟 真正寫的數(shù)據(jù) 是不是相等 bool CComControl::Send( BYTE * pBuff, DWORD dwBytesSend) { if (!PortOpened()) return false ; BOOL wRes; DWORD dwBytesW; wRes = WriteFile(m_hCom,pBuff,dwBytesSend,&dwBytesW,&m_ovWrite); if (!wRes) { if (GetLastError() == ERROR_IO_PENDING) { WaitForSingleObject(m_ovWrite.hEvent,1000); wRes = GetOverlappedResult(m_hCom,&m_ovWrite,&dwBytesW, false ); if (!wRes || dwBytesW !=dwBytesSend) { ClearInOut(); return false ; } } else { ClearInOut(); return false ; } } return true ; } |

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個贊
寫6個 異步延遲等待1秒肯定能寫完 然后判斷 重疊結(jié)構(gòu)
判斷寫的數(shù)據(jù) 跟 真正寫的數(shù)據(jù) 是不是相等
bool CComControl::Send(BYTE* pBuff,DWORD dwBytesSend)
{
if (!PortOpened()) return false;
BOOL wRes;
DWORD dwBytesW;
wRes = WriteFile(m_hCom,pBuff,dwBytesSend,&dwBytesW,&m_ovWrite);
if (!wRes)
{
if (GetLastError() == ERROR_IO_PENDING)
{
WaitForSingleObject(m_ovWrite.hEvent,1000);
wRes = GetOverlappedResult(m_hCom,&m_ovWrite,&dwBytesW,false);
if (!wRes || dwBytesW !=dwBytesSend)
{
ClearInOut();
return false;
}
}
else
{
ClearInOut();
return false;
}
}
return true;
}
添加回答
舉報