亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎么判斷串口已發送完畢?(qt5, c++)?

怎么判斷串口已發送完畢?(qt5, c++)?

慕俠2389804 2019-04-11 11:07:05
怎么判斷串口已發送完畢?(qt5, c++)
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

12345678910111213141516171819202122232425262728293031323334寫6個 異步延遲等待1秒肯定能寫完 然后判斷 重疊結構判斷寫的數據 跟 真正寫的數據 是不是相等 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;}

 



查看完整回答
反對 回復 2019-04-15
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

寫6個 異步延遲等待1秒肯定能寫完 然后判斷 重疊結構
判斷寫的數據 跟 真正寫的數據 是不是相等

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;
}



查看完整回答
反對 回復 2019-04-15
  • 2 回答
  • 0 關注
  • 3268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號