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 )
{
T3 t(v1,v2);
cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << (long)t << endl;
<< " --> " << t << endl;
}
else if( !strcmp(type,"T4") )
{
T4 t(v1);
cout << "(T4): v1=" << t.raw
<< " --> " << t.sval << endl;
<< " --> " << t << endl;
}
else if( !strcmp(type,"T5") )
{
T5 t(v1,v2);
cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " ===> " << t.val << endl;
<< " --> " << t << endl;
}
else if( !strcmp(type,"T6") )
{
T6 t(v1,v2);
cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " ===> " << t.val << endl;
<< " --> " << t << endl;
}
else if( !strcmp(type,"T7") )
{
T7 t(v1,v2);
cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
// << " --> " << T7.val << " * 10^-4"
<< " ===> " << t.val
<< " [" << ( t.raw.u2.ic == 0xFF ? "CAP" : "IND" ) << "|"
<< ( t.raw.u2.ie == 0xFF ? "EXP" : "IMP" ) << "]"
<< endl;
<< " ===> " << t << endl;
}
else if( !strcmp(type,"T8") )
{
T8 t(v1,v2);
cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< " " << setw(2) << t.day() << "/" << setw(2) << t.mon()
<< endl;
<< " ===> " << t << endl;
}
else if( !strcmp(type,"T9") )
{
T9 t(v1,v2);
cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec()
<< endl;
<< " ===> " << t << endl;
}
else if( !strcmp(type,"T10") )
{
T10 t(v1,v2);
cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << dec
<< setw(4) << t.year() << "/" << setw(2) << t.mon()
<< "/" << setw(2) << t.day()
<< endl;
<< " ===> " << t << endl;
}
else if( !strcmp(type,"F1") )
{
......
......@@ -273,7 +273,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T3 t(dat,MTR::T3::wsize());
cout << "(T3): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << (long)t << endl;
<< " --> " << t << endl;
return;
}
......@@ -281,7 +281,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T4 t(dat[0]);
cout << "(T4): v1=" << t.raw
<< " --> " << t.sval << endl;
<< " --> " << t << endl;
return;
}
......@@ -289,8 +289,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T5 t(dat,MTR::T5::wsize());
cout << "(T5): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " ===> " << t.val << endl;
<< " --> " << t << endl;
return;
}
......@@ -298,8 +297,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T6 t(dat,MTR::T6::wsize());
cout << "(T6): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " --> " << t.raw.u2.val << " * 10^" << (int)t.raw.u2.exp
<< " ===> " << t.val << endl;
<< " --> " << t << endl;
return;
}
......@@ -307,10 +305,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T7 t(dat,MTR::T7::wsize());
cout << "(T7): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << t.val
<< " [" << ( t.raw.u2.ic == 0xFF ? "CAP" : "IND" ) << "|"
<< ( t.raw.u2.ie == 0xFF ? "EXP" : "IMP" ) << "]"
<< endl;
<< " ===> " << t << endl;
return;
}
......@@ -332,7 +327,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::F1 f(dat,MTR::F1::wsize());
cout << "(F1): v1=" << f.raw.v[0] << " v2=" << f.raw.v[1]
<< " ===> " << f.raw.val << endl;
<< " ===> " << f << endl;
return;
}
......@@ -340,10 +335,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T8 t(dat[0],dat[1]);
cout << "(T8): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< " " << setw(2) << t.day() << "/" << setw(2) << t.mon()
<< endl;
<< " ===> " << t << endl;
return;
}
......@@ -351,10 +343,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T9 t(dat[0],dat[1]);
cout << "(T9): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << hex
<< setw(2) << t.hour() << ":" << setw(2) << t.min()
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec()
<< endl;
<< " ===> " << t << endl;
return;
}
......@@ -363,10 +352,7 @@ void readMTR( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
{
MTR::T10 t(dat[0],dat[1]);
cout << "(T10): v1=" << t.raw.v[0] << " v2=" << t.raw.v[1]
<< " ===> " << setfill('0') << dec
<< setw(4) << t.year() << "/" << setw(2) << t.mon()
<< "/" << setw(2) << t.day()
<< endl;
<< " ===> " << t << endl;
return;
}
......
......@@ -6,6 +6,7 @@
#include <string>
#include <map>
#include <list>
#include <ostream>
#include <cstring>
#include <cmath>
#include "modbus/ModbusTypes.h"
......@@ -87,11 +88,11 @@ namespace MTR
ComPort::Parity get_parity( ModbusRTU::ModbusData data );
ComPort::Speed get_speed( ModbusRTU::ModbusData data );
// -------------------------------------------------------------------------
// .
// Настройка из конф. файла
bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
const std::string mtrconfile, int verbose=0 );
// ---------------------------
//
// вспомогательные функции и типы данных
typedef std::list<ModbusRTU::ModbusData> DataList;
typedef std::map<ModbusRTU::ModbusData,DataList> DataMap;
const int attempts = 3; //
......@@ -121,6 +122,7 @@ namespace MTR
// ------------------------------------------
unsigned short val;
};
std::ostream& operator<<(std::ostream& os, T1& t );
// -------------------------------------------------------------------------
class T2
{
......@@ -137,6 +139,7 @@ namespace MTR
// ------------------------------------------
signed short val;
};
std::ostream& operator<<(std::ostream& os, T2& t );
// -------------------------------------------------------------------------
class T3
{
......@@ -181,6 +184,7 @@ namespace MTR
T3mem raw;
};
std::ostream& operator<<(std::ostream& os, T3& t );
// --------------------------------------------------------------------------
class T4
{
......@@ -213,6 +217,7 @@ namespace MTR
std::string sval;
unsigned short raw;
};
std::ostream& operator<<(std::ostream& os, T4& t );
// --------------------------------------------------------------------------
class T5
{
......@@ -264,6 +269,7 @@ namespace MTR
double val;
T5mem raw;
};
std::ostream& operator<<(std::ostream& os, T5& t );
// --------------------------------------------------------------------------
class T6
{
......@@ -315,6 +321,7 @@ namespace MTR
double val;
T6mem raw;
};
std::ostream& operator<<(std::ostream& os, T6& t );
// --------------------------------------------------------------------------
class T7
{
......@@ -366,6 +373,7 @@ namespace MTR
double val;
T7mem raw;
};
std::ostream& operator<<(std::ostream& os, T7& t );
// --------------------------------------------------------------------------
class T8
{
......@@ -415,6 +423,7 @@ namespace MTR
// ------------------------------------------
T8mem raw;
};
std::ostream& operator<<(std::ostream& os, T8& t );
// --------------------------------------------------------------------------
class T9
{
......@@ -464,6 +473,7 @@ namespace MTR
// ------------------------------------------
T9mem raw;
};
std::ostream& operator<<(std::ostream& os, T9& t );
// -------------------------------------------------------------------------
class T10
{
......@@ -511,6 +521,7 @@ namespace MTR
// ------------------------------------------
T10mem raw;
};
std::ostream& operator<<(std::ostream& os, T10& t );
// --------------------------------------------------------------------------
class T16
......@@ -543,6 +554,7 @@ namespace MTR
unsigned short val;
float fval;
};
std::ostream& operator<<(std::ostream& os, T16& t );
// --------------------------------------------------------------------------
class T17
{
......@@ -578,6 +590,7 @@ namespace MTR
signed short val;
float fval;
};
std::ostream& operator<<(std::ostream& os, T17& t );
// --------------------------------------------------------------------------
class F1
{
......@@ -624,6 +637,7 @@ namespace MTR
F1mem raw;
};
std::ostream& operator<<(std::ostream& os, F1& t );
// --------------------------------------------------------------------------
class T_Str16
{
......@@ -651,6 +665,7 @@ namespace MTR
// ------------------------------------------
std::string sval;
};
std::ostream& operator<<(std::ostream& os, T_Str16& t );
// --------------------------------------------------------------------------
class T_Str8
......@@ -678,6 +693,7 @@ namespace MTR
// ------------------------------------------
std::string sval;
};
std::ostream& operator<<(std::ostream& os, T_Str8& t );
// --------------------------------------------------------------------------
} // end of namespace MTR
// --------------------------------------------------------------------------
......
// --------------------------------------------------------------------------
#include <cmath>
#include <vector>
#include <iomanip>
#include <algorithm>
#include "modbus/ModbusRTUMaster.h"
#include "modbus/ModbusHelpers.h"
......@@ -457,5 +458,76 @@ bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr slaveaddr,
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
// -----------------------------------------------------------------------------
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