Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
b5990858
Commit
b5990858
authored
May 29, 2009
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
optimization
parent
ed3934ef
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
85 additions
and
139 deletions
+85
-139
mtrconv.cc
extentions/RTUExchange/mtrconv.cc
+8
-10
MTR.h
extentions/include/MTR.h
+77
-129
No files found.
extentions/RTUExchange/mtrconv.cc
View file @
b5990858
...
...
@@ -3,12 +3,10 @@
// --------------------------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <cmath>
#include "Configuration.h"
#include "UniSetTypes.h"
#include "MTR.h"
// --------------------------------------------------------------------------
using
namespace
std
;
using
namespace
UniSetTypes
;
using
namespace
MTR
;
// --------------------------------------------------------------------------
static
void
print_help
()
...
...
@@ -45,7 +43,7 @@ int main( int argc, char **argv )
else
if
(
!
strcmp
(
type
,
"T3"
)
)
{
T3
t
(
v1
,
v2
);
cout
<<
"(T3): v1="
<<
t
.
raw
.
u
.
v1
<<
" v2="
<<
t
.
raw
.
u
.
v2
cout
<<
"(T3): v1="
<<
t
.
raw
.
v
[
0
]
<<
" v2="
<<
t
.
raw
.
v
[
1
]
<<
" --> "
<<
(
long
)
t
<<
endl
;
}
else
if
(
!
strcmp
(
type
,
"T4"
)
)
...
...
@@ -57,21 +55,21 @@ int main( int argc, char **argv )
else
if
(
!
strcmp
(
type
,
"T5"
)
)
{
T5
t
(
v1
,
v2
);
cout
<<
"(T5): v1="
<<
t
.
raw
.
u1
.
v1
<<
" v2="
<<
t
.
raw
.
u1
.
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
;
}
else
if
(
!
strcmp
(
type
,
"T6"
)
)
{
T6
t
(
v1
,
v2
);
cout
<<
"(T6): v1="
<<
t
.
raw
.
u1
.
v1
<<
" v2="
<<
t
.
raw
.
u1
.
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
;
}
else
if
(
!
strcmp
(
type
,
"T7"
)
)
{
T7
t
(
v1
,
v2
);
cout
<<
"(T7): v1="
<<
t
.
raw
.
u1
.
v1
<<
" v2="
<<
t
.
raw
.
u1
.
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"
)
<<
"|"
...
...
@@ -81,7 +79,7 @@ int main( int argc, char **argv )
else
if
(
!
strcmp
(
type
,
"T8"
)
)
{
T8
t
(
v1
,
v2
);
cout
<<
"(T8): v1="
<<
t
.
raw
.
u1
.
v1
<<
" v2="
<<
t
.
raw
.
u1
.
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
()
...
...
@@ -90,7 +88,7 @@ int main( int argc, char **argv )
else
if
(
!
strcmp
(
type
,
"T9"
)
)
{
T9
t
(
v1
,
v2
);
cout
<<
"(T9): v1="
<<
t
.
raw
.
u1
.
v1
<<
" v2="
<<
t
.
raw
.
u1
.
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
()
...
...
@@ -99,7 +97,7 @@ int main( int argc, char **argv )
else
if
(
!
strcmp
(
type
,
"F1"
)
)
{
F1
f
(
v1
,
v2
);
cout
<<
"(F1): v1="
<<
f
.
raw
.
u
.
v1
<<
" v2="
<<
f
.
raw
.
u
.
v2
cout
<<
"(F1): v1="
<<
f
.
raw
.
v
[
0
]
<<
" v2="
<<
f
.
raw
.
v
[
1
]
<<
" ===> "
<<
f
.
raw
.
val
<<
endl
;
}
else
...
...
extentions/include/MTR.h
View file @
b5990858
...
...
@@ -81,13 +81,14 @@ namespace MTR
bool
setDataBits
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
,
mtrDataBits
d
);
// -------------------------------------------------------------------------
static
const
int
u2size
=
2
*
sizeof
(
unsigned
short
);
// -------------------------------------------------------------------------
class
T1
{
public
:
T1
()
:
val
(
0
){}
T1
(
unsigned
short
v
)
:
val
(
v
){}
T1
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
:
val
(
ret
.
data
[
0
]){}
T1
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
:
val
(
ret
.
data
[
0
]){}
T1
(
const
ModbusRTU
::
ModbusData
*
data
)
:
val
(
data
[
0
]){}
~
T1
(){}
// ------------------------------------------
/*! */
...
...
@@ -103,8 +104,7 @@ namespace MTR
public
:
T2
()
:
val
(
0
){}
T2
(
signed
short
v
)
:
val
(
v
){}
T2
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
:
val
(
ret
.
data
[
0
]){}
T2
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
:
val
(
ret
.
data
[
0
]){}
T2
(
const
ModbusRTU
::
ModbusData
*
data
)
:
val
(
data
[
0
]){}
~
T2
(){}
// ------------------------------------------
/*! */
...
...
@@ -122,38 +122,32 @@ namespace MTR
/*! */
typedef
union
{
struct
uT3
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u
;
unsigned
short
v
[
u2size
];
signed
int
val
;
// :32
}
T3mem
;
// ------------------------------------------
// ...
T3
(){
raw
.
u
.
v1
=
0
;
raw
.
u
.
v2
=
0
;
}
T3
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T3
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u
.
v1
=
v1
;
raw
.
u
.
v2
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
}
T3
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T3
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u
.
v1
=
ret
.
data
[
0
];
raw
.
u
.
v2
=
ret
.
data
[
1
];
}
T3
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u
.
v1
=
ret
.
data
[
0
];
raw
.
u
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
}
}
~
T3
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT3
;
}
// ------------------------------------------
...
...
@@ -176,18 +170,11 @@ namespace MTR
sval
=
std
::
string
(
c
);
}
T4
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
:
raw
(
ret
.
data
[
0
])
{
char
c
[
3
];
memcpy
(
c
,
&
(
ret
.
data
[
0
]),
sizeof
(
c
));
sval
=
std
::
string
(
c
);
}
T4
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
:
raw
(
ret
.
data
[
0
])
T4
(
const
ModbusRTU
::
ModbusData
*
data
)
:
raw
(
data
[
0
])
{
char
c
[
3
];
memcpy
(
c
,
&
(
ret
.
data
[
0
]),
sizeof
(
c
));
memcpy
(
c
,
&
(
data
[
0
]),
sizeof
(
c
));
sval
=
std
::
string
(
c
);
}
...
...
@@ -209,11 +196,7 @@ namespace MTR
/*! */
typedef
union
{
struct
uT5
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u1
;
unsigned
short
v
[
u2size
];
struct
u_T5
{
unsigned
int
val
:
24
;
...
...
@@ -222,31 +205,28 @@ namespace MTR
}
T5mem
;
// ------------------------------------------
// ...
T5
()
:
val
(
0
){
raw
.
u1
.
v1
=
0
;
raw
.
u1
.
v2
=
0
;
}
T5
()
:
val
(
0
){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T5
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u1
.
v1
=
v1
;
raw
.
u1
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
T5
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T5
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
T5
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
}
~
T5
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT5
;
}
// ------------------------------------------
...
...
@@ -261,11 +241,7 @@ namespace MTR
/*! */
typedef
union
{
struct
uT6
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u1
;
unsigned
short
v
[
u2size
];
struct
u_T6
{
signed
int
val
:
24
;
...
...
@@ -274,31 +250,28 @@ namespace MTR
}
T6mem
;
// ------------------------------------------
// ...
T6
()
:
val
(
0
){
raw
.
u1
.
v1
=
0
;
raw
.
u1
.
v2
=
0
;
}
T6
()
:
val
(
0
){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T6
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u1
.
v1
=
v1
;
raw
.
u1
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
T6
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T6
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
T6
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
raw
.
u2
.
exp
);
}
}
~
T6
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT6
;
}
// ------------------------------------------
...
...
@@ -313,11 +286,7 @@ namespace MTR
/*! */
typedef
union
{
struct
uT7
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u1
;
unsigned
short
v
[
u2size
];
struct
u_T7
{
unsigned
int
val
:
16
;
...
...
@@ -327,31 +296,28 @@ namespace MTR
}
T7mem
;
// ------------------------------------------
// ...
T7
()
:
val
(
0
){
raw
.
u1
.
v1
=
0
;
raw
.
u1
.
v2
=
0
;
}
T7
()
:
val
(
0
){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T7
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u1
.
v1
=
v1
;
raw
.
u1
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
val
=
raw
.
u2
.
val
*
pow
(
10
,
-
4
);
}
T7
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T7
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
-
4
);
}
T7
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
val
=
raw
.
u2
.
val
*
pow
(
10
,
-
4
);
}
}
~
T7
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT7
;
}
// ------------------------------------------
...
...
@@ -366,11 +332,7 @@ namespace MTR
/*! */
typedef
union
{
struct
uT8
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u1
;
unsigned
short
v
[
u2size
];
struct
u_T8
{
unsigned
short
mon
:
8
;
...
...
@@ -381,22 +343,20 @@ namespace MTR
}
T8mem
;
// ------------------------------------------
// ...
T8
(){
raw
.
u1
.
v1
=
0
;
raw
.
u1
.
v2
=
0
;
}
T8
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T8
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u1
.
v1
=
v1
;
raw
.
u1
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
}
T8
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T8
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
}
T8
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
}
}
inline
unsigned
short
day
(){
return
raw
.
u2
.
day
;
}
...
...
@@ -407,7 +367,7 @@ namespace MTR
~
T8
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT8
;
}
// ------------------------------------------
...
...
@@ -421,11 +381,7 @@ namespace MTR
/*! */
typedef
union
{
struct
uT9
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u1
;
unsigned
short
v
[
u2size
];
struct
u_T9
{
unsigned
short
hour
:
8
;
...
...
@@ -436,22 +392,20 @@ namespace MTR
}
T9mem
;
// ------------------------------------------
// ...
T9
(){
raw
.
u1
.
v1
=
0
;
raw
.
u1
.
v2
=
0
;
}
T9
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
T9
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u1
.
v1
=
v1
;
raw
.
u1
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
}
T9
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
T9
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
}
T9
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u1
.
v1
=
ret
.
data
[
0
];
raw
.
u1
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
}
}
inline
unsigned
short
hour
(){
return
raw
.
u2
.
hour
;
}
...
...
@@ -462,7 +416,7 @@ namespace MTR
~
T9
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtT9
;
}
// ------------------------------------------
...
...
@@ -476,37 +430,31 @@ namespace MTR
/*! */
typedef
union
{
struct
uF1
{
unsigned
short
v1
;
unsigned
short
v2
;
}
u
;
unsigned
short
v
[
2
];
float
val
;
//
}
F1mem
;
// ------------------------------------------
// ...
F1
(){
raw
.
u
.
v1
=
0
;
raw
.
u
.
v2
=
0
;
}
F1
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
))
;
}
F1
(
unsigned
short
v1
,
unsigned
short
v2
)
{
raw
.
u
.
v1
=
v1
;
raw
.
u
.
v1
=
v2
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
}
F1
(
const
ModbusRTU
::
ReadOutputRetMessage
&
ret
)
F1
(
const
ModbusRTU
::
ModbusData
*
data
)
{
raw
.
u
.
v1
=
ret
.
data
[
0
];
raw
.
u
.
v2
=
ret
.
data
[
1
];
}
F1
(
const
ModbusRTU
::
ReadInputRetMessage
&
ret
)
if
(
sizeof
(
data
)
>=
u2size
)
{
raw
.
u
.
v1
=
ret
.
data
[
0
];
raw
.
u
.
v2
=
ret
.
data
[
1
];
for
(
int
i
=
0
;
i
<
u2size
;
i
++
)
raw
.
v
[
i
]
=
data
[
i
];
}
}
~
F1
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
2
;
}
static
int
wsize
(){
return
u2size
;
}
/*! */
static
MTRType
type
(){
return
mtF1
;
}
// ------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment