Commit a4db3837 authored by Pavel Vainerman's avatar Pavel Vainerman

ModbusTCP: Исправил ошибку предыдущего коммита

parent 5dbcb71b
......@@ -69,20 +69,26 @@ mbErrCode ModbusTCPServer::receive( ModbusRTU::ModbusAddr addr, timeout_t timeou
}
}
// Если получили пакет по TCP
// то вроде задержек с остальной частью быть не должно
// а если пакет, не нам, то обработка пройдёт быстро..
// (поэтому ставим условный timeout)
// не != 0, т.к. в recv стоит assert(timeout)
timeout = 1;
do
if( !qrecv.empty() )
{
// check addr
unsigned char _addr = qrecv.front();
if( _addr != addr )
{
// buf.addr = curQueryHeader.uID;
// res = recv_pdu(buf,mec);
tmProcessing.setTiming(replyTimeout_ms);
ErrorRetMessage em( buf.addr, buf.func, erBadReplyNodeAddress );
buf = em.transport_msg();
send(buf);
printProcessingTime();
usleep(1000);
tcp.disconnect();
return res;
}
}
res = recv( addr, buf, timeout );
if( res!=erNoError && res!=erBadReplyNodeAddress )
if( res!=erNoError ) // && res!=erBadReplyNodeAddress )
{
if( res < erInternalErrorCode )
{
......@@ -92,7 +98,7 @@ mbErrCode ModbusTCPServer::receive( ModbusRTU::ModbusAddr addr, timeout_t timeou
printProcessingTime();
}
usleep(10000);
usleep(1000);
tcp.disconnect();
return res;
}
......@@ -106,8 +112,6 @@ mbErrCode ModbusTCPServer::receive( ModbusRTU::ModbusAddr addr, timeout_t timeou
return erTimeOut;
}
}
}
while( res == erBadReplyNodeAddress );
if( res!=erNoError )
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment