Commit b28df41f authored by Pavel Vainerman's avatar Pavel Vainerman

(MTR): попытка исправить ошибку обмена с MTR (обратный порядок слов)

parent c2ece263
...@@ -242,12 +242,12 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -242,12 +242,12 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
if( cmd == cmdRead03 ) if( cmd == cmdRead03 )
{ {
ModbusRTU::ReadOutputRetMessage ret = mb->read03(addr,reg,count); ModbusRTU::ReadOutputRetMessage ret = mb->read03(addr,reg,count);
memcpy(dat,ret.data,ret.count); memcpy(dat,ret.data,sizeof(ModbusRTU::ModbusData)*ret.count);
} }
else if( cmd == cmdRead04 ) else if( cmd == cmdRead04 )
{ {
ModbusRTU::ReadInputRetMessage ret = mb->read04(addr,reg,count); ModbusRTU::ReadInputRetMessage ret = mb->read04(addr,reg,count);
memcpy(dat,ret.data,ret.count); memcpy(dat,ret.data,sizeof(ModbusRTU::ModbusData)*ret.count);
} }
else else
{ {
...@@ -333,7 +333,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -333,7 +333,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
if( mtrType == MTR::mtT8 ) if( mtrType == MTR::mtT8 )
{ {
MTR::T8 t(dat[0],dat[1]); MTR::T8 t(dat,MTR::T8::wsize());
cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << t << endl; << " ===> " << t << endl;
return; return;
...@@ -341,7 +341,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -341,7 +341,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
if( mtrType == MTR::mtT9 ) if( mtrType == MTR::mtT9 )
{ {
MTR::T9 t(dat[0],dat[1]); MTR::T9 t(dat,MTR::T9::wsize());
cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << t << endl; << " ===> " << t << endl;
...@@ -350,7 +350,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -350,7 +350,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
if( mtrType == MTR::mtT10 ) if( mtrType == MTR::mtT10 )
{ {
MTR::T10 t(dat[0],dat[1]); MTR::T10 t(dat,MTR::T10::wsize());
cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << t << endl; << " ===> " << t << endl;
......
...@@ -167,8 +167,9 @@ namespace MTR ...@@ -167,8 +167,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // У MTR обратный порядок слов в ответе
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
} }
} }
...@@ -253,8 +254,9 @@ namespace MTR ...@@ -253,8 +254,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
val = raw.u2.val * pow(10,raw.u2.exp); val = raw.u2.val * pow(10,raw.u2.exp);
} }
} }
...@@ -305,8 +307,9 @@ namespace MTR ...@@ -305,8 +307,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
val = raw.u2.val * pow(10,raw.u2.exp); val = raw.u2.val * pow(10,raw.u2.exp);
} }
} }
...@@ -357,8 +360,9 @@ namespace MTR ...@@ -357,8 +360,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
val = raw.u2.val * pow(10,-4); val = raw.u2.val * pow(10,-4);
} }
} }
...@@ -404,8 +408,9 @@ namespace MTR ...@@ -404,8 +408,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[1] = data[0];
raw.v[0] = data[1];
} }
} }
...@@ -454,8 +459,9 @@ namespace MTR ...@@ -454,8 +459,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
} }
} }
...@@ -503,8 +509,9 @@ namespace MTR ...@@ -503,8 +509,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
} }
} }
...@@ -620,8 +627,9 @@ namespace MTR ...@@ -620,8 +627,9 @@ namespace MTR
{ {
if( size >= u2size ) if( size >= u2size )
{ {
for( int i=0; i<u2size; i++ ) // При получении данных от MTR слова необходимо перевернуть
raw.v[i] = data[i]; raw.v[0] = data[1];
raw.v[1] = data[0];
} }
} }
......
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