Commit 25e93944 authored by Pavel Vainerman's avatar Pavel Vainerman

(MTR): переопределил operator<<(std::ostream& os,..) для типов.

parent 8d81b712
...@@ -52,64 +52,50 @@ int main( int argc, const char **argv ) ...@@ -52,64 +52,50 @@ int main( int argc, const char **argv )
{ {
T3 t(v1,v2); T3 t(v1,v2);
cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << (long)t << endl; << " --> " << t << endl;
} }
else if( !strcmp(type,"T4") ) else if( !strcmp(type,"T4") )
{ {
T4 t(v1); T4 t(v1);
cout << "(T4): v1=" << t.raw cout << "(T4): v1=" << t.raw
<< " --> " << t.sval << endl; << " --> " << t << endl;
} }
else if( !strcmp(type,"T5") ) else if( !strcmp(type,"T5") )
{ {
T5 t(v1,v2); T5 t(v1,v2);
cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp << " --> " << t << endl;
<< " ===> " << t.val << endl;
} }
else if( !strcmp(type,"T6") ) else if( !strcmp(type,"T6") )
{ {
T6 t(v1,v2); T6 t(v1,v2);
cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp << " --> " << t << endl;
<< " ===> " << t.val << endl;
} }
else if( !strcmp(type,"T7") ) else if( !strcmp(type,"T7") )
{ {
T7 t(v1,v2); T7 t(v1,v2);
cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
// << " --> " << T7.val << " * 10^-4" // << " --> " << T7.val << " * 10^-4"
<< " ===> " << t.val << " ===> " << t << endl;
<< " [" << ( t.raw.u2.ic == 0xFF ? "CAP" : "IND" ) << "|"
<< ( t.raw.u2.ie == 0xFF ? "EXP" : "IMP" ) << "]"
<< endl;
} }
else if( !strcmp(type,"T8") ) else if( !strcmp(type,"T8") )
{ {
T8 t(v1,v2); T8 t(v1,v2);
cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex << " ===> " << t << endl;
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< " " << setw(2) << t.day() << "/" << setw(2) << t.mon()
<< endl;
} }
else if( !strcmp(type,"T9") ) else if( !strcmp(type,"T9") )
{ {
T9 t(v1,v2); T9 t(v1,v2);
cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex << " ===> " << t << endl;
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec()
<< endl;
} }
else if( !strcmp(type,"T10") ) else if( !strcmp(type,"T10") )
{ {
T10 t(v1,v2); T10 t(v1,v2);
cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << dec << " ===> " << t << endl;
<< setw(4) << t.year() << "/" << setw(2) << t.mon()
<< "/" << setw(2) << t.day()
<< endl;
} }
else if( !strcmp(type,"F1") ) else if( !strcmp(type,"F1") )
{ {
......
...@@ -273,7 +273,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -273,7 +273,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T3 t(dat,MTR::T3::wsize()); MTR::T3 t(dat,MTR::T3::wsize());
cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << (long)t << endl; << " --> " << t << endl;
return; return;
} }
...@@ -281,7 +281,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -281,7 +281,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T4 t(dat[0]); MTR::T4 t(dat[0]);
cout << "(T4): v1=" << t.raw cout << "(T4): v1=" << t.raw
<< " --> " << t.sval << endl; << " --> " << t << endl;
return; return;
} }
...@@ -289,8 +289,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -289,8 +289,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T5 t(dat,MTR::T5::wsize()); MTR::T5 t(dat,MTR::T5::wsize());
cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp << " --> " << t << endl;
<< " ===> " << t.val << endl;
return; return;
} }
...@@ -298,8 +297,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -298,8 +297,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T6 t(dat,MTR::T6::wsize()); MTR::T6 t(dat,MTR::T6::wsize());
cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp << " --> " << t << endl;
<< " ===> " << t.val << endl;
return; return;
} }
...@@ -307,10 +305,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -307,10 +305,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T7 t(dat,MTR::T7::wsize()); MTR::T7 t(dat,MTR::T7::wsize());
cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << t.val << " ===> " << t << endl;
<< " [" << ( t.raw.u2.ic == 0xFF ? "CAP" : "IND" ) << "|"
<< ( t.raw.u2.ie == 0xFF ? "EXP" : "IMP" ) << "]"
<< endl;
return; return;
} }
...@@ -332,7 +327,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -332,7 +327,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::F1 f(dat,MTR::F1::wsize()); MTR::F1 f(dat,MTR::F1::wsize());
cout << "(F1): v1=" << f.raw.v[0] << " v2=" << f.raw.v[1] cout << "(F1): v1=" << f.raw.v[0] << " v2=" << f.raw.v[1]
<< " ===> " << f.raw.val << endl; << " ===> " << f << endl;
return; return;
} }
...@@ -340,10 +335,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -340,10 +335,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T8 t(dat[0],dat[1]); MTR::T8 t(dat[0],dat[1]);
cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex << " ===> " << t << endl;
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< " " << setw(2) << t.day() << "/" << setw(2) << t.mon()
<< endl;
return; return;
} }
...@@ -351,10 +343,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -351,10 +343,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T9 t(dat[0],dat[1]); MTR::T9 t(dat[0],dat[1]);
cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex << " ===> " << t << endl;
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec()
<< endl;
return; return;
} }
...@@ -363,10 +352,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ...@@ -363,10 +352,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{ {
MTR::T10 t(dat[0],dat[1]); MTR::T10 t(dat[0],dat[1]);
cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1] cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << dec << " ===> " << t << endl;
<< setw(4) << t.year() << "/" << setw(2) << t.mon()
<< "/" << setw(2) << t.day()
<< endl;
return; return;
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <string> #include <string>
#include <map> #include <map>
#include <list> #include <list>
#include <ostream>
#include <cstring> #include <cstring>
#include <cmath> #include <cmath>
#include "modbus/ModbusTypes.h" #include "modbus/ModbusTypes.h"
...@@ -88,11 +89,11 @@ namespace MTR ...@@ -88,11 +89,11 @@ namespace MTR
ComPort::Parity get_parity( ModbusRTU::ModbusData data ); ComPort::Parity get_parity( ModbusRTU::ModbusData data );
ComPort::Speed get_speed( ModbusRTU::ModbusData data ); ComPort::Speed get_speed( ModbusRTU::ModbusData data );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// . // Настройка из конф. файла
bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
const std::string mtrconfile, int verbose=0 ); const std::string mtrconfile, int verbose=0 );
// --------------------------- // ---------------------------
// // вспомогательные функции и типы данных
typedef std::list<ModbusRTU::ModbusData> DataList; typedef std::list<ModbusRTU::ModbusData> DataList;
typedef std::map<ModbusRTU::ModbusData,DataList> DataMap; typedef std::map<ModbusRTU::ModbusData,DataList> DataMap;
const int attempts = 3; // const int attempts = 3; //
...@@ -122,6 +123,7 @@ namespace MTR ...@@ -122,6 +123,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
unsigned short val; unsigned short val;
}; };
std::ostream& operator<<(std::ostream& os, T1& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T2 class T2
{ {
...@@ -138,6 +140,7 @@ namespace MTR ...@@ -138,6 +140,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
signed short val; signed short val;
}; };
std::ostream& operator<<(std::ostream& os, T2& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T3 class T3
{ {
...@@ -182,6 +185,7 @@ namespace MTR ...@@ -182,6 +185,7 @@ namespace MTR
T3mem raw; T3mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T3& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T4 class T4
{ {
...@@ -214,6 +218,7 @@ namespace MTR ...@@ -214,6 +218,7 @@ namespace MTR
std::string sval; std::string sval;
unsigned short raw; unsigned short raw;
}; };
std::ostream& operator<<(std::ostream& os, T4& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T5 class T5
{ {
...@@ -265,6 +270,7 @@ namespace MTR ...@@ -265,6 +270,7 @@ namespace MTR
double val; double val;
T5mem raw; T5mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T5& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T6 class T6
{ {
...@@ -316,6 +322,7 @@ namespace MTR ...@@ -316,6 +322,7 @@ namespace MTR
double val; double val;
T6mem raw; T6mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T6& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T7 class T7
{ {
...@@ -367,6 +374,7 @@ namespace MTR ...@@ -367,6 +374,7 @@ namespace MTR
double val; double val;
T7mem raw; T7mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T7& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T8 class T8
{ {
...@@ -416,6 +424,7 @@ namespace MTR ...@@ -416,6 +424,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T8mem raw; T8mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T8& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T9 class T9
{ {
...@@ -465,6 +474,7 @@ namespace MTR ...@@ -465,6 +474,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T9mem raw; T9mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T9& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T10 class T10
{ {
...@@ -512,6 +522,7 @@ namespace MTR ...@@ -512,6 +522,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T10mem raw; T10mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T10& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T16 class T16
...@@ -544,6 +555,7 @@ namespace MTR ...@@ -544,6 +555,7 @@ namespace MTR
unsigned short val; unsigned short val;
float fval; float fval;
}; };
std::ostream& operator<<(std::ostream& os, T16& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T17 class T17
{ {
...@@ -579,6 +591,7 @@ namespace MTR ...@@ -579,6 +591,7 @@ namespace MTR
signed short val; signed short val;
float fval; float fval;
}; };
std::ostream& operator<<(std::ostream& os, T17& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class F1 class F1
{ {
...@@ -625,6 +638,7 @@ namespace MTR ...@@ -625,6 +638,7 @@ namespace MTR
F1mem raw; F1mem raw;
}; };
std::ostream& operator<<(std::ostream& os, F1& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T_Str16 class T_Str16
{ {
...@@ -652,6 +666,7 @@ namespace MTR ...@@ -652,6 +666,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
std::string sval; std::string sval;
}; };
std::ostream& operator<<(std::ostream& os, T_Str16& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T_Str8 class T_Str8
...@@ -679,6 +694,7 @@ namespace MTR ...@@ -679,6 +694,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
std::string sval; std::string sval;
}; };
std::ostream& operator<<(std::ostream& os, T_Str8& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
} // end of namespace MTR } // end of namespace MTR
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
......
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <cmath> #include <cmath>
#include <vector> #include <vector>
#include <iomanip>
#include <algorithm> #include <algorithm>
#include "modbus/ModbusRTUMaster.h" #include "modbus/ModbusRTUMaster.h"
#include "modbus/ModbusHelpers.h" #include "modbus/ModbusHelpers.h"
...@@ -457,5 +458,76 @@ bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr slaveaddr, ...@@ -457,5 +458,76 @@ bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr slaveaddr,
return false; return false;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
std::ostream& operator<<(std::ostream& os, MTR::T1& t )
{
return os << t.val;
}
std::ostream& operator<<(std::ostream& os, MTR::T2& t )
{
return os << t.val;
}
std::ostream& operator<<(std::ostream& os, MTR::T3& t )
{
return os << (long)(t);
}
std::ostream& operator<<(std::ostream& os, MTR::T4& t )
{
return os << t.sval;
}
std::ostream& operator<<(std::ostream& os, MTR::T5& t )
{
return os << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " [" << t.val << "]";
}
std::ostream& operator<<(std::ostream& os, MTR::T6& t )
{
return os << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " [" << t.val << "]";
}
std::ostream& operator<<(std::ostream& os, MTR::T7& t )
{
return os << t.val
<< " [" << ( t.raw.u2.ic == 0xFF ? "CAP" : "IND" ) << "|"
<< ( t.raw.u2.ie == 0xFF ? "EXP" : "IMP" ) << "]";
}
std::ostream& operator<<(std::ostream& os, MTR::T8& t )
{
return os << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< " " << setw(2) << t.day() << "/" << setw(2) << t.mon();
}
std::ostream& operator<<(std::ostream& os, MTR::T9& t )
{
return os << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec();
}
std::ostream& operator<<(std::ostream& os, MTR::T10& t )
{
return os << setfill('0') << dec
<< setw(4) << t.year() << "/" << setw(2) << t.mon()
<< "/" << setw(2) << t.day();
}
std::ostream& operator<<(std::ostream& os, MTR::T16& t )
{
return os << t.fval;
}
std::ostream& operator<<(std::ostream& os, MTR::T17& t )
{
return os << t.fval;
}
std::ostream& operator<<(std::ostream& os, MTR::F1& t )
{
return os << t.raw.val;
}
std::ostream& operator<<(std::ostream& os, MTR::T_Str8& t )
{
return os << t.sval;
}
std::ostream& operator<<(std::ostream& os, MTR::T_Str16& t )
{
return os << t.sval;
}
// ------------------------------------------------------------------------------------------
} // end of namespace MTR } // end of namespace MTR
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
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