Commit 28e84edc authored by Ilya Polshikov's avatar Ilya Polshikov Committed by Pavel Vainerman

Fixed MTR.

parent cd1a86d1
...@@ -664,12 +664,13 @@ namespace MTR ...@@ -664,12 +664,13 @@ namespace MTR
T_Str16():sval(""){} T_Str16():sval(""){}
T_Str16( const ModbusRTU::ReadInputRetMessage& ret ) T_Str16( const ModbusRTU::ReadInputRetMessage& ret )
{ {
char c[16]; char c[17];
ModbusRTU::ModbusData data[8]; ModbusRTU::ModbusData data[8];
for( int i=0; i<8; i++ ) for( int i=0; i<8; i++ )
data[i] = ModbusRTU::SWAPSHORT(ret.data[i]); data[i] = ModbusRTU::SWAPSHORT(ret.data[i]);
memcpy(c,&data,sizeof(c)); memcpy(c,&data,16);
c[16] = '\0';
sval = std::string(c); sval = std::string(c);
} }
...@@ -693,11 +694,12 @@ namespace MTR ...@@ -693,11 +694,12 @@ namespace MTR
T_Str8():sval(""){} T_Str8():sval(""){}
T_Str8( const ModbusRTU::ReadInputRetMessage& ret ) T_Str8( const ModbusRTU::ReadInputRetMessage& ret )
{ {
char c[8]; char c[9];
ModbusRTU::ModbusData data[4]; ModbusRTU::ModbusData data[4];
for( int i=0; i<4; i++ ) for( int i=0; i<4; i++ )
data[i] = ModbusRTU::SWAPSHORT(ret.data[i]); data[i] = ModbusRTU::SWAPSHORT(ret.data[i]);
memcpy(c,&data,sizeof(c)); memcpy(c,&data,8);
c[8] = '\0';
sval = std::string(c); sval = std::string(c);
} }
......
...@@ -412,7 +412,7 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr, ...@@ -412,7 +412,7 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr,
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
/* if speed is changed we receive a timeout error */ /* if speed is changed we receive a timeout error */
if( reg == 56 && it->first == ModbusRTU::erTimeOut ) if( reg == 56 && ex.err == ModbusRTU::erTimeOut )
{ {
update_communication_params(reg, *it1, mb, addr, verb); update_communication_params(reg, *it1, mb, addr, verb);
// ok = true; // ok = true;
...@@ -431,7 +431,11 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr, ...@@ -431,7 +431,11 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr,
// if( !ok ) // if( !ok )
// return false; // return false;
} }
ModbusRTU::WriteSingleOutputRetMessage ret = mb->write06(addr,53,1);
if( verb )
cout << "(mtr-setup): save parameters " << endl;
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
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