mscomm控件 串口通信 数据掉帧

时间:2021-06-21 19:57:33
大家好,我最近在用mscomm控件做串口通信,但是数据在收发过程中会出现数据掉帧现象。从上位机往下位机发数据的时候,某一帧数据在下位机收不到。我的数据是用modbus协议写的,请问大家有什么好意见吗?
贴一下 发送数据的代码
void CGKtDlg::OnReadregister(void)
{
BYTE  buff[256];
CString temp;
CByteArray   arraySend; 
memset(buff, 0x00, 255);
Sleep(100);
buff[0]=0x01;
buff[1]=0x03;
buff[2]=0x00;
buff[3]=0x0A;    
buff[4]=0x00;
buff[5]=0x02;     
USHORT CRC=MBCRC16((UCHAR *)buff,6);//CRC校验
buff[6]=(CHAR)(CRC & 0xFF);
buff[7]=(CHAR)((CRC & 0xFF00)>>8);

arraySend.RemoveAll();   
arraySend.SetSize(8);   
m_txd="";
for(int i=0;i<8;i++)   
{   
arraySend.SetAt(i,buff[i]);    
}    
m_Comm.put_Output(COleVariant(arraySend));
for(int i=0;i<8;i++)  
{
BYTE bt=*(char *)(buff+i);
temp.Format(_T("%02X "),bt);
m_txd+=temp;
}
m_txd+="\r\n";
int LineNum=TXD.GetLineCount();
    if(LineNum<=14)
 {
   TXD.SetSel(-1,-1); 
   TXD.ReplaceSel(m_txd);
 }
 else
 {
   TXD.SetSel(0,-1);
   TXD.Clear();
   TXD.SetSel(-1,-1); 
   TXD.ReplaceSel(m_txd);
 }
}

1 个解决方案

#1


安装个CommMonitor,监控一下,看看是没发出去还是下位机没收到。

#1


安装个CommMonitor,监控一下,看看是没发出去还是下位机没收到。