Commit 269f43d1 authored by Pavel Vainerman's avatar Pavel Vainerman

add new MTR type: "T10"

parent 21d51161
...@@ -104,6 +104,15 @@ int main( int argc, const char **argv ) ...@@ -104,6 +104,15 @@ int main( int argc, const char **argv )
<< ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec() << ":" << setw(2) << t.sec() << "." << setw(2) << t.ssec()
<< endl; << 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;
}
else if( !strcmp(type,"F1") ) else if( !strcmp(type,"F1") )
{ {
F1 f(v1,v2); F1 f(v1,v2);
......
...@@ -29,6 +29,7 @@ namespace MTR ...@@ -29,6 +29,7 @@ namespace MTR
mtT7, mtT7,
mtT8, mtT8,
mtT9, mtT9,
mtT10,
mtT16, mtT16,
mtT17, mtT17,
mtF1, mtF1,
...@@ -465,6 +466,54 @@ namespace MTR ...@@ -465,6 +466,54 @@ namespace MTR
T9mem raw; T9mem raw;
}; };
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T10
{
public:
// ------------------------------------------
/*! тип хранения в памяти */
typedef union
{
unsigned short v[u2size];
struct u_T10
{
unsigned short year:16;
unsigned short mon:8;
unsigned short day:8;
}__attribute__( ( packed ) ) u2;
} T10mem;
// ------------------------------------------
// конструкторы на разные случаи...
T10(){ memset(raw.v,0,sizeof(raw.v)); }
T10( unsigned short v1, unsigned short v2 )
{
raw.v[0] = v1;
raw.v[1] = v2;
}
T10( const ModbusRTU::ModbusData* data, int size )
{
if( size >= u2size )
{
for( int i=0; i<u2size; i++ )
raw.v[i] = data[i];
}
}
inline unsigned short year(){ return raw.u2.year; }
inline unsigned short mon(){ return raw.u2.mon; }
inline unsigned short day(){ return raw.u2.day; }
~T10(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return u2size; }
/*! тип значения */
static MTRType type(){ return mtT10; }
// ------------------------------------------
T10mem raw;
};
// --------------------------------------------------------------------------
class T16 class T16
{ {
public: public:
......
...@@ -34,6 +34,8 @@ MTRType str2type( const std::string s ) ...@@ -34,6 +34,8 @@ MTRType str2type( const std::string s )
return mtT8; return mtT8;
if( s == "T9" ) if( s == "T9" )
return mtT9; return mtT9;
if( s == "T10" )
return mtT10;
if( s == "T16" ) if( s == "T16" )
return mtT16; return mtT16;
if( s == "T17" ) if( s == "T17" )
...@@ -68,6 +70,8 @@ string type2str( MTRType t ) ...@@ -68,6 +70,8 @@ string type2str( MTRType t )
return "T8"; return "T8";
if( t == mtT9 ) if( t == mtT9 )
return "T9"; return "T9";
if( t == mtT10 )
return "T10";
if( t == mtT16 ) if( t == mtT16 )
return "T16"; return "T16";
if( t == mtT17 ) if( t == mtT17 )
...@@ -102,6 +106,8 @@ int wsize( MTRType t ) ...@@ -102,6 +106,8 @@ int wsize( MTRType t )
return T8::wsize(); return T8::wsize();
if( t == mtT9 ) if( t == mtT9 )
return T9::wsize(); return T9::wsize();
if( t == mtT10 )
return T10::wsize();
if( t == mtT16 ) if( t == mtT16 )
return T16::wsize(); return T16::wsize();
if( t == mtT17 ) if( t == mtT17 )
......
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