Commit a226366c authored by Pavel Vainerman's avatar Pavel Vainerman

(ModbusSlave): исправление ошибки в функции обработки запроса 0x3

parent c6477633
...@@ -85,7 +85,10 @@ MBSlave::MBSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, cons ...@@ -85,7 +85,10 @@ MBSlave::MBSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, cons
mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id", it.getProp("reg_from_id")); mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id", it.getProp("reg_from_id"));
checkMBFunc = conf->getArgInt("--" + prefix + "-check-mbfunc", it.getProp("check_mbfunc")); checkMBFunc = conf->getArgInt("--" + prefix + "-check-mbfunc", it.getProp("check_mbfunc"));
dinfo << myname << "(init): mbregFromID=" << mbregFromID << endl; dinfo << myname << "(init): mbregFromID=" << mbregFromID
<< " checkMBFunc=" << checkMBFunc
<< " default_mbfunc=" << default_mbfunc
<< endl;
respond_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-respond-id", it.getProp("respond_id"))); respond_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-respond-id", it.getProp("respond_id")));
respond_invert = conf->getArgInt("--" + prefix + "-respond-invert", it.getProp("respond_invert")); respond_invert = conf->getArgInt("--" + prefix + "-respond-invert", it.getProp("respond_invert"));
...@@ -1215,7 +1218,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& ...@@ -1215,7 +1218,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
if( query.count <= 1 ) if( query.count <= 1 )
{ {
ModbusRTU::ModbusData d = 0; ModbusRTU::ModbusData d = 0;
ModbusRTU::mbErrCode ret = real_read(query.start, d); ModbusRTU::mbErrCode ret = real_read(query.start, d, query.func);
if( ret == ModbusRTU::erNoError ) if( ret == ModbusRTU::erNoError )
reply.addData(d); reply.addData(d);
......
...@@ -1049,7 +1049,7 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]") ...@@ -1049,7 +1049,7 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]")
ModbusRTU::ModbusData tREG = 130; ModbusRTU::ModbusData tREG = 130;
int num = 10; int num = 10;
SECTION("Test: read03") SECTION("Test: read03 num=10")
{ {
ModbusRTU::ReadOutputRetMessage ret = mb->read03(slaveaddr, tREG, num); ModbusRTU::ReadOutputRetMessage ret = mb->read03(slaveaddr, tREG, num);
for( int i=0; i<num; i++ ) for( int i=0; i<num; i++ )
...@@ -1057,6 +1057,13 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]") ...@@ -1057,6 +1057,13 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]")
REQUIRE( ret.data[i] == (i+1) ); REQUIRE( ret.data[i] == (i+1) );
} }
} }
SECTION("Test: read03 num=1")
{
ModbusRTU::ReadOutputRetMessage ret = mb->read03(slaveaddr, tREG, 1);
REQUIRE( ret.data[0] == 1 );
}
SECTION("Test: read04") SECTION("Test: read04")
{ {
ModbusRTU::ReadInputRetMessage ret = mb->read04(slaveaddr, tREG, num); ModbusRTU::ReadInputRetMessage ret = mb->read04(slaveaddr, tREG, num);
...@@ -1065,6 +1072,13 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]") ...@@ -1065,6 +1072,13 @@ TEST_CASE("read03(04) 10 registers", "[modbus][mbslave][mbtcpslave][readmore]")
REQUIRE( ret.data[i] == (i+1) ); REQUIRE( ret.data[i] == (i+1) );
} }
} }
SECTION("Test: read04 num=1")
{
ModbusRTU::ReadInputRetMessage ret = mb->read04(slaveaddr, tREG, 1);
REQUIRE( ret.data[0] == 1 );
}
} }
// ------------------------------------------------------------- // -------------------------------------------------------------
/*! \todo Доделать тесты на считывание с разными prop_prefix.. */ /*! \todo Доделать тесты на считывание с разными prop_prefix.. */
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