自己寫的串口工具,使用虛擬串口除錯時是可以接受和發送的。但是實際使用兩個真實的COM口除錯時能接受不能發送。發送出來的只有兩三個位元組。程式如下
發送資料相關函式如下:
commSendCnt = 0;
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x01);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x04);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x16);
pParent->m_comm.bSendBuff[commSendCnt + 0] = (BYTE)(check.CRC16((BYTE *)(&pParent->m_comm.bSendBuff[0]),commSendCnt) >> 8);
pParent->m_comm.bSendBuff[commSendCnt + 1] = (BYTE)(check.CRC16((BYTE *)(&pParent->m_comm.bSendBuff[0]),commSendCnt));
pParent->m_comm.WriteComm(commSendCnt + 2);
Sleep(150);
int commReadCnt = pParent->m_comm.readComm();
if(commReadCnt == 0)
{
MessageBox(_T("無回傳資料! "),_T("通訊提示"),MB_OK);
return 0;
}
int CSComm::WriteComm(int sendCnt)
{
DWORD dwErrorFlags,ReaSendCnt;
COMSTAT ComStat;
BOOL sendSta;
PurgeComm(m_hCom,PURGE_TXCLEAR);
PurgeComm(m_hCom,PURGE_RXCLEAR);
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
sendSta = WriteFile(m_hCom,bSendBuff,sendCnt,&ReaSendCnt,NULL);
if(!sendSta)
{
return FALSE;
}
return TRUE;
}
uj5u.com熱心網友回復:
這里有一個開源MFC串口除錯工具,你可以參考一下。https://gitee.com/kerndev/SerialTool
uj5u.com熱心網友回復:
把串口的腳連起來自發自收測驗 你看看波特率什么的都一樣么uj5u.com熱心網友回復:
SetCommState 怎么用的 ?uj5u.com熱心網友回復:
資料中含有 0 因此接收端使用16進制方式查看轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/63987.html
標籤:網絡編程
