Commit 1dcf9e34 authored by Pavel Vainerman's avatar Pavel Vainerman

fixed bug in MTR.h

parent 093d74ce
......@@ -1876,7 +1876,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
for( int k=0; k<MTR::T3::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::T3 t(data);
MTR::T3 t(data,MTR::T3::wsize());
delete[] data;
IOBase::processingAsAI( &(*it), (long)t, shm, force );
}
......@@ -1910,7 +1910,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
for( int k=0; k<MTR::T5::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::T5 t(data);
MTR::T5 t(data,MTR::T5::wsize());
delete[] data;
IOBase::processingFasAI( &(*it), (float)t.val, shm, force );
......@@ -1933,7 +1933,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
for( int k=0; k<MTR::T6::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::T6 t(data);
MTR::T6 t(data,MTR::T6::wsize());
delete[] data;
IOBase::processingFasAI( &(*it), (float)t.val, shm, force );
......@@ -1956,7 +1956,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
for( int k=0; k<MTR::T7::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::T7 t(data);
MTR::T7 t(data,MTR::T7::wsize());
delete[] data;
IOBase::processingFasAI( &(*it), (float)t.val, shm, force );
......@@ -1980,7 +1980,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
for( int k=0; k<MTR::F1::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::F1 t(data);
MTR::F1 t(data,MTR::F1::wsize());
delete[] data;
IOBase::processingFasAI( &(*it), (float)t, shm, force );
......
......@@ -16,6 +16,14 @@ static void print_help()
// --------------------------------------------------------------------------
int main( int argc, char **argv )
{
ModbusRTU::ModbusData dt[3];
ModbusRTU::ModbusData* data = dt;
cerr << "sizeof=" << sizeof( (*data) ) << " sizeof dt=" << sizeof(dt) << endl;
return 0;
unsigned short v1 = 0;
unsigned short v2 = 0;
char* type="";
......
......@@ -137,9 +137,9 @@ namespace MTR
raw.v[1] = v2;
}
T3( const ModbusRTU::ModbusData* data )
T3( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -221,9 +221,9 @@ namespace MTR
raw.lval = v;
}
T5( const ModbusRTU::ModbusData* data )
T5( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -272,9 +272,9 @@ namespace MTR
raw.lval = v;
}
T6( const ModbusRTU::ModbusData* data )
T6( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -323,9 +323,9 @@ namespace MTR
raw.lval = v;
}
T7( const ModbusRTU::ModbusData* data )
T7( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -369,9 +369,9 @@ namespace MTR
raw.v[1] = v2;
}
T8( const ModbusRTU::ModbusData* data )
T8( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -418,9 +418,9 @@ namespace MTR
raw.v[1] = v2;
}
T9( const ModbusRTU::ModbusData* data )
T9( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......@@ -466,9 +466,9 @@ namespace MTR
raw.val = f;
}
F1( const ModbusRTU::ModbusData* data )
F1( const ModbusRTU::ModbusData* data, int size )
{
if( sizeof(data) >=u2size )
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
......
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