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