Commit e992f042 authored by Pavel Vainerman's avatar Pavel Vainerman

(Utilities): реализовал в mbrtuslave-echo возможность указывать несколько слов…

(Utilities): реализовал в mbrtuslave-echo возможность указывать несколько слов данных (3) для использования в качестве ответа.
parent 85709e9a
...@@ -16,7 +16,9 @@ MBSlave::MBSlave( ModbusRTU::ModbusAddr addr, const std::string dev, const std:: ...@@ -16,7 +16,9 @@ MBSlave::MBSlave( ModbusRTU::ModbusAddr addr, const std::string dev, const std::
// prev(ModbusRTU::erNoError), // prev(ModbusRTU::erNoError),
// askCount(0), // askCount(0),
verbose(false), verbose(false),
replyVal(-1) replyVal(-1),
replyVal2(-1),
replyVal3(-1)
{ {
// int replyTimeout = uni_atoi( conf->getArgParam("--reply-timeout",it.getProp("reply_timeout")).c_str() ); // int replyTimeout = uni_atoi( conf->getArgParam("--reply-timeout",it.getProp("reply_timeout")).c_str() );
// if( replyTimeout <= 0 ) // if( replyTimeout <= 0 )
...@@ -153,7 +155,14 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query, ...@@ -153,7 +155,14 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
bcnt++; bcnt++;
for( int i=0; i<bcnt; i++ ) for( int i=0; i<bcnt; i++ )
reply.addData(replyVal); {
if( i == 1 )
reply.addData(replyVal2);
else if( i == 2 )
reply.addData(replyVal3);
else
reply.addData(replyVal);
}
} }
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
...@@ -180,7 +189,14 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ...@@ -180,7 +189,14 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query,
for( ; num<query.count; num++, reg++ ) for( ; num<query.count; num++, reg++ )
{ {
if( replyVal != -1 ) if( replyVal != -1 )
reply.addData(replyVal); {
if( num == 1 && replyVal2 != -1 )
reply.addData(replyVal2);
else if( num == 2 && replyVal3 != -1 )
reply.addData(replyVal3);
else
reply.addData(replyVal);
}
else else
reply.addData(reg); reply.addData(reg);
} }
...@@ -217,7 +233,14 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ...@@ -217,7 +233,14 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters(
for( ; num<query.count; num++, reg++ ) for( ; num<query.count; num++, reg++ )
{ {
if( replyVal != -1 ) if( replyVal != -1 )
reply.addData(replyVal); {
if( num == 1 && replyVal2 != -1 )
reply.addData(replyVal2);
else if( num == 2 && replyVal3 != -1 )
reply.addData(replyVal3);
else
reply.addData(replyVal);
}
else else
reply.addData(reg); reply.addData(reg);
} }
......
...@@ -148,7 +148,7 @@ int main( int argc, char **argv ) ...@@ -148,7 +148,7 @@ int main( int argc, char **argv )
reg = ModbusRTU::str2mbData(argv[optind]); reg = ModbusRTU::str2mbData(argv[optind]);
if( checkArg(optind+1,argc,argv) ) if( checkArg(optind+1,argc,argv) )
dat = uni_atoi(argv[optind+1]); count = ModbusRTU::str2mbData(argv[optind+1]);
break; break;
case 'o': case 'o':
......
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