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

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

parent 79cdbd5c
...@@ -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;
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,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"
...@@ -87,11 +88,11 @@ namespace MTR ...@@ -87,11 +88,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; //
...@@ -121,6 +122,7 @@ namespace MTR ...@@ -121,6 +122,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
unsigned short val; unsigned short val;
}; };
std::ostream& operator<<(std::ostream& os, T1& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T2 class T2
{ {
...@@ -137,6 +139,7 @@ namespace MTR ...@@ -137,6 +139,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
signed short val; signed short val;
}; };
std::ostream& operator<<(std::ostream& os, T2& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T3 class T3
{ {
...@@ -181,6 +184,7 @@ namespace MTR ...@@ -181,6 +184,7 @@ namespace MTR
T3mem raw; T3mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T3& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T4 class T4
{ {
...@@ -213,6 +217,7 @@ namespace MTR ...@@ -213,6 +217,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
{ {
...@@ -264,6 +269,7 @@ namespace MTR ...@@ -264,6 +269,7 @@ namespace MTR
double val; double val;
T5mem raw; T5mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T5& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T6 class T6
{ {
...@@ -315,6 +321,7 @@ namespace MTR ...@@ -315,6 +321,7 @@ namespace MTR
double val; double val;
T6mem raw; T6mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T6& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T7 class T7
{ {
...@@ -366,6 +373,7 @@ namespace MTR ...@@ -366,6 +373,7 @@ namespace MTR
double val; double val;
T7mem raw; T7mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T7& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T8 class T8
{ {
...@@ -415,6 +423,7 @@ namespace MTR ...@@ -415,6 +423,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T8mem raw; T8mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T8& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T9 class T9
{ {
...@@ -464,6 +473,7 @@ namespace MTR ...@@ -464,6 +473,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T9mem raw; T9mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T9& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T10 class T10
{ {
...@@ -511,6 +521,7 @@ namespace MTR ...@@ -511,6 +521,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
T10mem raw; T10mem raw;
}; };
std::ostream& operator<<(std::ostream& os, T10& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T16 class T16
...@@ -543,6 +554,7 @@ namespace MTR ...@@ -543,6 +554,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
{ {
...@@ -578,6 +590,7 @@ namespace MTR ...@@ -578,6 +590,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
{ {
...@@ -624,6 +637,7 @@ namespace MTR ...@@ -624,6 +637,7 @@ namespace MTR
F1mem raw; F1mem raw;
}; };
std::ostream& operator<<(std::ostream& os, F1& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T_Str16 class T_Str16
{ {
...@@ -651,6 +665,7 @@ namespace MTR ...@@ -651,6 +665,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
std::string sval; std::string sval;
}; };
std::ostream& operator<<(std::ostream& os, T_Str16& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T_Str8 class T_Str8
...@@ -678,6 +693,7 @@ namespace MTR ...@@ -678,6 +693,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