关于ModbusTCP编程,该怎么处理
关于ModbusTCP编程
int reg_num=(9+2*(sendBuf[10]*256+sendBuf[11]));
int iSend=s.Send(sendBuf,12,0);
if(iSend==SOCKET_ERROR)
{
AfxMessageBox("发送数据失败!");
s.Close ();
return 1;
}
BYTE Recv[260];
int iRecv=s.Receive (Recv,260,0
if(iRecv<9)
{
if(iRecv==0)
{
AfxMessageBox("意外的关闭远端的连接!");
}
else
{
AfxMessageBox("响应帧太短!");
}
}
else//不清楚?????
{
BYTE a=Recv[7]&0x80;
if(a!=0)
{
AfxMessageBox("Modbus意外响应不正确!");
}
else
{
if(iRecv!=reg_num)
{
AfxMessageBox("不正确的响应大小!");
}
else//接受数据的处理????
{
}
}
}
关于通讯还有一些不清楚的,哪位高手能帮忙解释下else语句中几个判断是什么意思?谢啦
------解决方案--------------------
int reg_num=(9+2*(sendBuf[10]*256+sendBuf[11]));
int iSend=s.Send(sendBuf,12,0);
if(iSend==SOCKET_ERROR)
{
AfxMessageBox("发送数据失败!");
s.Close ();
return 1;
}
BYTE Recv[260];
int iRecv=s.Receive (Recv,260,0
if(iRecv<9)
{
if(iRecv==0)
{
AfxMessageBox("意外的关闭远端的连接!");
}
else
{
AfxMessageBox("响应帧太短!");
}
}
else//不清楚?????
{
BYTE a=Recv[7]&0x80;
if(a!=0)
{
AfxMessageBox("Modbus意外响应不正确!");
}
else
{
if(iRecv!=reg_num)
{
AfxMessageBox("不正确的响应大小!");
}
else//接受数据的处理????
{
}
}
}
关于通讯还有一些不清楚的,哪位高手能帮忙解释下else语句中几个判断是什么意思?谢啦
------解决方案--------------------
- C/C++ code
else//不清楚????? 返回报文字节数要大于9 { BYTE a=Recv[7]&0x80; if(a!=0) { AfxMessageBox("Modbus意外响应不正确!"); } else { if(iRecv!=reg_num) { AfxMessageBox("不正确的响应大小!"); } else//接受数据的处理???? 处理数据 { } }