Commit 5a6e8618 authored by Pavel Vainerman's avatar Pavel Vainerman

fixed bug in ModbusTCPSlave

parent a08dc4cb
...@@ -19,7 +19,11 @@ UniSetObject_LT(objId), ...@@ -19,7 +19,11 @@ UniSetObject_LT(objId),
mbslot(0), mbslot(0),
shm(0), shm(0),
initPause(0), initPause(0),
askCount(0),
test_id(DefaultObjectId),
askcount_id(DefaultObjectId),
activated(false), activated(false),
activateTimeout(500),
pingOK(true), pingOK(true),
force(false), force(false),
mbregFromID(false), mbregFromID(false),
...@@ -1076,7 +1080,8 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ...@@ -1076,7 +1080,8 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query,
reply.addData(d); reply.addData(d);
else else
reply.addData(0); reply.addData(0);
pingOK = true; pingOK = true;
return ret; return ret;
} }
......
...@@ -37,14 +37,13 @@ int main(int argc, char **argv) ...@@ -37,14 +37,13 @@ int main(int argc, char **argv)
if( logfilename.empty() ) if( logfilename.empty() )
logfilename = "mbslave.log"; logfilename = "mbslave.log";
conf->initDebug(dlog,"dlog");
std::ostringstream logname; std::ostringstream logname;
string dir(conf->getLogDir()); string dir(conf->getLogDir());
logname << dir << logfilename; logname << dir << logfilename;
unideb.logFile( logname.str().c_str() ); unideb.logFile( logname.str().c_str() );
dlog.logFile( logname.str().c_str() ); dlog.logFile( logname.str().c_str() );
conf->initDebug(dlog,"dlog");
ObjectId shmID = DefaultObjectId; ObjectId shmID = DefaultObjectId;
string sID = conf->getArgParam("--smemory-id"); string sID = conf->getArgParam("--smemory-id");
......
...@@ -66,7 +66,7 @@ mbErrCode ModbusRTUSlave::receive( ModbusRTU::ModbusAddr addr, int timeout ) ...@@ -66,7 +66,7 @@ mbErrCode ModbusRTUSlave::receive( ModbusRTU::ModbusAddr addr, int timeout )
{ {
uniset_mutex_lock lck(recvMutex,timeout); uniset_mutex_lock lck(recvMutex,timeout);
ModbusMessage buf; ModbusMessage buf;
mbErrCode res(erBadReplyNodeAddress); mbErrCode res = erBadReplyNodeAddress;
do do
{ {
res = recv(addr,buf,timeout); res = recv(addr,buf,timeout);
......
...@@ -54,7 +54,7 @@ mbErrCode ModbusTCPServer::receive( ModbusRTU::ModbusAddr addr, int timeout ) ...@@ -54,7 +54,7 @@ mbErrCode ModbusTCPServer::receive( ModbusRTU::ModbusAddr addr, int timeout )
if( tcp.isPending(Socket::pendingInput, timeout) ) if( tcp.isPending(Socket::pendingInput, timeout) )
{ {
memset(&curQueryHeader,0,sizeof(curQueryHeader)); memset(&curQueryHeader,0,sizeof(curQueryHeader));
mbErrCode res = tcp_processing(tcp,curQueryHeader); res = tcp_processing(tcp,curQueryHeader);
if( res!=erNoError ) if( res!=erNoError )
{ {
tcp.disconnect(); tcp.disconnect();
......
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