mscomm控件 串口通信 数据掉帧

qq_40711973 2018-02-03 06:16:08
大家好,我最近在用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);
}
}
...全文
843 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WaveYang 2018-05-11
  • 打赏
  • 举报
回复
mobus是主从协议, 保证总线上同时只有一个节点发数据。
BCBPLC 2018-04-26
  • 打赏
  • 举报
回复
你要规定一个超时值,超过这时间,就认为通讯超时。 它接收会分几次才能接收完。所以,必须在这规定的时间读到规定的长度。不到的话,你还得继续读。
薛悖 2018-02-23
  • 打赏
  • 举报
回复
安装个CommMonitor,监控一下,看看是没发出去还是下位机没收到。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧