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 )
{
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;
}
......
......@@ -7,6 +7,7 @@
#include <string>
#include <map>
#include <list>
#include <ostream>
#include <cstring>
#include <cmath>
#include "modbus/ModbusTypes.h"
......@@ -88,11 +89,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; //
......@@ -122,6 +123,7 @@ namespace MTR
// ------------------------------------------
unsigned short val;
};
std::ostream& operator<<(std::ostream& os, T1& t );
// -------------------------------------------------------------------------
class T2
{
......@@ -138,6 +140,7 @@ namespace MTR
// ------------------------------------------
signed short val;
};
std::ostream& operator<<(std::ostream& os, T2& t );
// -------------------------------------------------------------------------
class T3
{
......@@ -182,6 +185,7 @@ namespace MTR
T3mem raw;
};
std::ostream& operator<<(std::ostream& os, T3& t );
// --------------------------------------------------------------------------
class T4
{
......@@ -214,6 +218,7 @@ namespace MTR
std::string sval;
unsigned short raw;
};
std::ostream& operator<<(std::ostream& os, T4& t );
// --------------------------------------------------------------------------
class T5
{
......@@ -265,6 +270,7 @@ namespace MTR
double val;
T5mem raw;
};
std::ostream& operator<<(std::ostream& os, T5& t );
// --------------------------------------------------------------------------
class T6
{
......@@ -316,6 +322,7 @@ namespace MTR
double val;
T6mem raw;
};
std::ostream& operator<<(std::ostream& os, T6& t );
// --------------------------------------------------------------------------
class T7
{
......@@ -367,6 +374,7 @@ namespace MTR
double val;
T7mem raw;
};
std::ostream& operator<<(std::ostream& os, T7& t );
// --------------------------------------------------------------------------
class T8
{
......@@ -416,6 +424,7 @@ namespace MTR
// ------------------------------------------
T8mem raw;
};
std::ostream& operator<<(std::ostream& os, T8& t );
// --------------------------------------------------------------------------
class T9
{
......@@ -465,6 +474,7 @@ namespace MTR
// ------------------------------------------
T9mem raw;
};
std::ostream& operator<<(std::ostream& os, T9& t );
// -------------------------------------------------------------------------
class T10
{
......@@ -512,6 +522,7 @@ namespace MTR
// ------------------------------------------
T10mem raw;
};
std::ostream& operator<<(std::ostream& os, T10& t );
// --------------------------------------------------------------------------
class T16
......@@ -544,6 +555,7 @@ namespace MTR
unsigned short val;
float fval;
};
std::ostream& operator<<(std::ostream& os, T16& t );
// --------------------------------------------------------------------------
class T17
{
......@@ -579,6 +591,7 @@ namespace MTR
signed short val;
float fval;
};
std::ostream& operator<<(std::ostream& os, T17& t );
// --------------------------------------------------------------------------
class F1
{
......@@ -625,6 +638,7 @@ namespace MTR
F1mem raw;
};
std::ostream& operator<<(std::ostream& os, F1& t );
// --------------------------------------------------------------------------
class T_Str16
{
......@@ -652,6 +666,7 @@ namespace MTR
// ------------------------------------------
std::string sval;
};
std::ostream& operator<<(std::ostream& os, T_Str16& t );
// --------------------------------------------------------------------------
class T_Str8
......@@ -679,6 +694,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