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
5fa48362
Commit
5fa48362
authored
Feb 25, 2014
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(Modbus): дописал использование std::move для функций transport_msg().
parent
a9671a84
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
87 deletions
+85
-87
MTR.h
extensions/include/MTR.h
+36
-36
ModbusTypes.h
include/modbus/ModbusTypes.h
+3
-3
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+46
-48
No files found.
extensions/include/MTR.h
View file @
5fa48362
...
@@ -36,48 +36,48 @@ namespace MTR
...
@@ -36,48 +36,48 @@ namespace MTR
mtT_Str8
mtT_Str8
};
};
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
string
type2str
(
MTRType
t
);
/*!< преоразование строки в тип */
std
::
string
type2str
(
MTRType
t
);
/*!< преоразование строки в тип */
MTRType
str2type
(
const
std
::
string
&
s
);
/*!< преобразование названия в строку */
MTRType
str2type
(
const
std
::
string
&
s
);
/*!< преобразование названия в строку */
int
wsize
(
MTRType
t
);
/*!< длина данных в словах */
int
wsize
(
MTRType
t
);
/*!< длина данных в словах */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// Информация
// Информация
const
ModbusRTU
::
ModbusData
regModelNumber
=
0x01
;
const
ModbusRTU
::
ModbusData
regModelNumber
=
0x01
;
const
ModbusRTU
::
ModbusData
regSerialNumber
=
0x09
;
const
ModbusRTU
::
ModbusData
regSerialNumber
=
0x09
;
std
::
string
getModelNumber
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
);
std
::
string
getModelNumber
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
);
std
::
string
getSerialNumber
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
);
std
::
string
getSerialNumber
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
);
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// Настройки связи (чтение - read03, запись - write06)
// Настройки связи (чтение - read03, запись - write06)
const
ModbusRTU
::
ModbusData
regUpdateConfiguration
=
53
;
const
ModbusRTU
::
ModbusData
regUpdateConfiguration
=
53
;
const
ModbusRTU
::
ModbusData
regAddress
=
55
;
const
ModbusRTU
::
ModbusData
regAddress
=
55
;
const
ModbusRTU
::
ModbusData
regBaudRate
=
56
;
const
ModbusRTU
::
ModbusData
regBaudRate
=
56
;
const
ModbusRTU
::
ModbusData
regStopBit
=
57
;
/* 0 - Stop bit, 1 - Stop bits */
const
ModbusRTU
::
ModbusData
regStopBit
=
57
;
/* 0 - Stop bit, 1 - Stop bits */
const
ModbusRTU
::
ModbusData
regParity
=
58
;
const
ModbusRTU
::
ModbusData
regParity
=
58
;
const
ModbusRTU
::
ModbusData
regDataBits
=
59
;
const
ModbusRTU
::
ModbusData
regDataBits
=
59
;
enum
mtrBaudRate
enum
mtrBaudRate
{
{
br1200
=
0
,
br1200
=
0
,
br2400
=
1
,
br2400
=
1
,
br4800
=
2
,
br4800
=
2
,
br9600
=
3
,
br9600
=
3
,
br19200
=
4
,
br19200
=
4
,
br38400
=
5
,
br38400
=
5
,
br57600
=
6
,
br57600
=
6
,
br115200
=
7
br115200
=
7
};
};
enum
mtrParity
enum
mtrParity
{
{
mpNoParity
=
0
,
mpNoParity
=
0
,
mpOddParity
=
1
,
mpOddParity
=
1
,
mpEvenParity
=
2
mpEvenParity
=
2
};
};
enum
mtrDataBits
enum
mtrDataBits
{
{
db8Bits
=
0
,
db8Bits
=
0
,
db7Bits
=
1
db7Bits
=
1
};
};
bool
setAddress
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
,
ModbusRTU
::
ModbusAddr
newAddr
);
bool
setAddress
(
ModbusRTUMaster
*
mb
,
ModbusRTU
::
ModbusAddr
addr
,
ModbusRTU
::
ModbusAddr
newAddr
);
...
@@ -129,7 +129,7 @@ namespace MTR
...
@@ -129,7 +129,7 @@ namespace MTR
static
MTRType
type
(){
return
mtT1
;
}
static
MTRType
type
(){
return
mtT1
;
}
// ------------------------------------------
// ------------------------------------------
unsigned
short
val
;
unsigned
short
val
;
};
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
T1
&
t
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
T1
&
t
);
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
class
T2
class
T2
...
@@ -162,7 +162,7 @@ namespace MTR
...
@@ -162,7 +162,7 @@ namespace MTR
// ------------------------------------------
// ------------------------------------------
// конструкторы на разные случаи...
// конструкторы на разные случаи...
T3
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
));
}
T3
(){
memset
(
raw
.
v
,
0
,
sizeof
(
raw
.
v
));
}
T3
(
signed
int
i
){
raw
.
val
=
i
;
}
T3
(
signed
int
i
){
raw
.
val
=
i
;
}
T3
(
unsigned
short
v1
,
unsigned
short
v2
)
T3
(
unsigned
short
v1
,
unsigned
short
v2
)
...
@@ -170,7 +170,7 @@ namespace MTR
...
@@ -170,7 +170,7 @@ namespace MTR
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
0
]
=
v1
;
raw
.
v
[
1
]
=
v2
;
raw
.
v
[
1
]
=
v2
;
}
}
T3
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
T3
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
{
{
if
(
size
>=
u2size
)
if
(
size
>=
u2size
)
...
@@ -207,7 +207,7 @@ namespace MTR
...
@@ -207,7 +207,7 @@ namespace MTR
memcpy
(
c
,
&
v1
,
sizeof
(
c
));
memcpy
(
c
,
&
v1
,
sizeof
(
c
));
sval
=
std
::
string
(
c
);
sval
=
std
::
string
(
c
);
}
}
T4
(
const
ModbusRTU
::
ModbusData
*
data
)
:
T4
(
const
ModbusRTU
::
ModbusData
*
data
)
:
raw
(
data
[
0
])
raw
(
data
[
0
])
{
{
...
@@ -215,7 +215,7 @@ namespace MTR
...
@@ -215,7 +215,7 @@ namespace MTR
memcpy
(
c
,
&
(
data
[
0
]),
sizeof
(
c
));
memcpy
(
c
,
&
(
data
[
0
]),
sizeof
(
c
));
sval
=
std
::
string
(
c
);
sval
=
std
::
string
(
c
);
}
}
~
T4
(){}
~
T4
(){}
// ------------------------------------------
// ------------------------------------------
/*! размер в словах */
/*! размер в словах */
...
@@ -257,7 +257,7 @@ namespace MTR
...
@@ -257,7 +257,7 @@ namespace MTR
{
{
raw
.
lval
=
v
;
raw
.
lval
=
v
;
}
}
T5
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
T5
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
{
{
if
(
size
>=
u2size
)
if
(
size
>=
u2size
)
...
@@ -310,7 +310,7 @@ namespace MTR
...
@@ -310,7 +310,7 @@ namespace MTR
{
{
raw
.
lval
=
v
;
raw
.
lval
=
v
;
}
}
T6
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
T6
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
{
{
if
(
size
>=
u2size
)
if
(
size
>=
u2size
)
...
@@ -363,7 +363,7 @@ namespace MTR
...
@@ -363,7 +363,7 @@ namespace MTR
{
{
raw
.
lval
=
v
;
raw
.
lval
=
v
;
}
}
T7
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
T7
(
const
ModbusRTU
::
ModbusData
*
data
,
int
size
)
{
{
if
(
size
>=
u2size
)
if
(
size
>=
u2size
)
...
@@ -421,7 +421,7 @@ namespace MTR
...
@@ -421,7 +421,7 @@ namespace MTR
raw
.
v
[
0
]
=
data
[
1
];
raw
.
v
[
0
]
=
data
[
1
];
}
}
}
}
inline
unsigned
short
day
(){
return
raw
.
u2
.
day
;
}
inline
unsigned
short
day
(){
return
raw
.
u2
.
day
;
}
inline
unsigned
short
mon
(){
return
raw
.
u2
.
mon
;
}
inline
unsigned
short
mon
(){
return
raw
.
u2
.
mon
;
}
inline
unsigned
short
hour
(){
return
raw
.
u2
.
hour
;
}
inline
unsigned
short
hour
(){
return
raw
.
u2
.
hour
;
}
...
@@ -522,7 +522,7 @@ namespace MTR
...
@@ -522,7 +522,7 @@ namespace MTR
raw
.
v
[
1
]
=
data
[
0
];
raw
.
v
[
1
]
=
data
[
0
];
}
}
}
}
inline
unsigned
short
year
(){
return
raw
.
u2
.
year
;
}
inline
unsigned
short
year
(){
return
raw
.
u2
.
year
;
}
inline
unsigned
short
mon
(){
return
raw
.
u2
.
mon
;
}
inline
unsigned
short
mon
(){
return
raw
.
u2
.
mon
;
}
inline
unsigned
short
day
(){
return
raw
.
u2
.
day
;
}
inline
unsigned
short
day
(){
return
raw
.
u2
.
day
;
}
...
@@ -538,7 +538,7 @@ namespace MTR
...
@@ -538,7 +538,7 @@ namespace MTR
};
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
T10
&
t
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
T10
&
t
);
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
class
T16
class
T16
{
{
public
:
public
:
...
@@ -650,7 +650,7 @@ namespace MTR
...
@@ -650,7 +650,7 @@ namespace MTR
// ------------------------------------------
// ------------------------------------------
operator
float
(){
return
raw
.
val
;
}
operator
float
(){
return
raw
.
val
;
}
operator
long
(){
return
lroundf
(
raw
.
val
);
}
operator
long
(){
return
lroundf
(
raw
.
val
);
}
F1mem
raw
;
F1mem
raw
;
};
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
F1
&
t
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
F1
&
t
);
...
...
include/modbus/ModbusTypes.h
View file @
5fa48362
...
@@ -175,16 +175,16 @@ namespace ModbusRTU
...
@@ -175,16 +175,16 @@ namespace ModbusRTU
{
{
ModbusByte
ecode
;
ModbusByte
ecode
;
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- from slave -------
// ------- from slave -------
ErrorRetMessage
(
ModbusMessage
&
m
);
ErrorRetMessage
(
ModbusMessage
&
m
);
ErrorRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ErrorRetMessage
&
operator
=
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
ErrorRetMessage
(
ModbusAddr
_from
,
ModbusByte
_func
,
ModbusByte
ecode
);
ErrorRetMessage
(
ModbusAddr
_from
,
ModbusByte
_func
,
ModbusByte
ecode
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
/*! размер данных(после заголовка) у данного типа сообщения
/*! размер данных(после заголовка) у данного типа сообщения
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
5fa48362
...
@@ -260,7 +260,7 @@ ModbusMessage ErrorRetMessage::transport_msg()
...
@@ -260,7 +260,7 @@ ModbusMessage ErrorRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
// szData();
mm
.
len
=
ind
;
// szData();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ErrorRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ErrorRetMessage
&
m
)
...
@@ -309,7 +309,7 @@ ModbusMessage ReadCoilMessage::transport_msg()
...
@@ -309,7 +309,7 @@ ModbusMessage ReadCoilMessage::transport_msg()
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadCoilMessage
::
ReadCoilMessage
(
ModbusMessage
&
m
)
ReadCoilMessage
::
ReadCoilMessage
(
ModbusMessage
&
m
)
...
@@ -434,7 +434,7 @@ ModbusData DataBits16::mdata()
...
@@ -434,7 +434,7 @@ ModbusData DataBits16::mdata()
udata
|=
1
<<
i
;
udata
|=
1
<<
i
;
}
}
return
udata
;
return
std
::
move
(
udata
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
const
DataBits16
&
DataBits16
::
operator
=
(
const
ModbusData
&
r
)
const
DataBits16
&
DataBits16
::
operator
=
(
const
ModbusData
&
r
)
...
@@ -568,7 +568,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
...
@@ -568,7 +568,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
ReadCoilRetMessage
::
szData
()
size_t
ReadCoilRetMessage
::
szData
()
...
@@ -620,7 +620,7 @@ ModbusMessage ReadInputStatusMessage::transport_msg()
...
@@ -620,7 +620,7 @@ ModbusMessage ReadInputStatusMessage::transport_msg()
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusMessage
::
ReadInputStatusMessage
(
ModbusMessage
&
m
)
ReadInputStatusMessage
::
ReadInputStatusMessage
(
ModbusMessage
&
m
)
...
@@ -768,7 +768,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg()
...
@@ -768,7 +768,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
ReadInputStatusRetMessage
::
szData
()
size_t
ReadInputStatusRetMessage
::
szData
()
...
@@ -823,7 +823,7 @@ ModbusMessage ReadOutputMessage::transport_msg()
...
@@ -823,7 +823,7 @@ ModbusMessage ReadOutputMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputMessage
::
ReadOutputMessage
(
ModbusMessage
&
m
)
ReadOutputMessage
::
ReadOutputMessage
(
ModbusMessage
&
m
)
...
@@ -950,10 +950,10 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
...
@@ -950,10 +950,10 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
bcnt
=
count
*
sizeof
(
ModbusData
);
bcnt
=
count
*
sizeof
(
ModbusData
);
// copy bcnt
// copy bcnt
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
ind
+=
sizeof
(
bcnt
);
ind
+=
sizeof
(
bcnt
);
...
@@ -979,7 +979,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
...
@@ -979,7 +979,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
sizeof
(
bcnt
)
+
bcnt
);
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
sizeof
(
bcnt
)
+
bcnt
);
// crc = SWAPSHORT(crc);
// crc = SWAPSHORT(crc);
// копируем CRC (последний элемент). Без переворачивания...
// копируем CRC (последний элемент). Без переворачивания...
memcpy
(
&
(
mm
.
data
[
ind
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
ind
]),
&
crc
,
szCRC
);
ind
+=
szCRC
;
ind
+=
szCRC
;
...
@@ -987,7 +987,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
...
@@ -987,7 +987,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
ReadOutputRetMessage
::
szData
()
size_t
ReadOutputRetMessage
::
szData
()
...
@@ -1007,8 +1007,6 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputRetMessage* m )
...
@@ -1007,8 +1007,6 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputRetMessage* m )
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputMessage
::
ReadInputMessage
(
ModbusAddr
a
,
ModbusData
s
,
ModbusData
c
)
:
ReadInputMessage
::
ReadInputMessage
(
ModbusAddr
a
,
ModbusData
s
,
ModbusData
c
)
:
start
(
s
),
start
(
s
),
count
(
c
)
count
(
c
)
...
@@ -1042,7 +1040,7 @@ ModbusMessage ReadInputMessage::transport_msg()
...
@@ -1042,7 +1040,7 @@ ModbusMessage ReadInputMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputMessage
::
ReadInputMessage
(
ModbusMessage
&
m
)
ReadInputMessage
::
ReadInputMessage
(
ModbusMessage
&
m
)
...
@@ -1062,7 +1060,7 @@ void ReadInputMessage::init( ModbusMessage& m )
...
@@ -1062,7 +1060,7 @@ void ReadInputMessage::init( ModbusMessage& m )
assert
(
m
.
func
==
fnReadInputRegisters
);
assert
(
m
.
func
==
fnReadInputRegisters
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
,
sizeof
(
*
this
));
// m.len
// переворачиваем слова
// переворачиваем слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
count
=
SWAPSHORT
(
count
);
count
=
SWAPSHORT
(
count
);
...
@@ -1166,10 +1164,10 @@ ModbusMessage ReadInputRetMessage::transport_msg()
...
@@ -1166,10 +1164,10 @@ ModbusMessage ReadInputRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
bcnt
=
count
*
sizeof
(
ModbusData
);
bcnt
=
count
*
sizeof
(
ModbusData
);
// copy bcnt
// copy bcnt
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
ind
+=
sizeof
(
bcnt
);
ind
+=
sizeof
(
bcnt
);
...
@@ -1195,7 +1193,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
...
@@ -1195,7 +1193,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
ReadInputRetMessage
::
szData
()
size_t
ReadInputRetMessage
::
szData
()
...
@@ -1289,7 +1287,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
...
@@ -1289,7 +1287,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
// копируем заголовок
// копируем заголовок
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
// данные (переворачиваем байты)
// данные (переворачиваем байты)
...
@@ -1317,7 +1315,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
...
@@ -1317,7 +1315,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -1477,7 +1475,7 @@ ModbusMessage ForceCoilsRetMessage::transport_msg()
...
@@ -1477,7 +1475,7 @@ ModbusMessage ForceCoilsRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceCoilsRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceCoilsRetMessage
&
m
)
...
@@ -1524,7 +1522,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
...
@@ -1524,7 +1522,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
// копируем заголовок
// копируем заголовок
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
// данные (переворачиваем байты)
// данные (переворачиваем байты)
...
@@ -1559,7 +1557,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
...
@@ -1559,7 +1557,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -1734,7 +1732,7 @@ ModbusMessage WriteOutputRetMessage::transport_msg()
...
@@ -1734,7 +1732,7 @@ ModbusMessage WriteOutputRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
WriteOutputRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
WriteOutputRetMessage
&
m
)
...
@@ -1766,9 +1764,9 @@ ModbusMessage ForceSingleCoilMessage::transport_msg()
...
@@ -1766,9 +1764,9 @@ ModbusMessage ForceSingleCoilMessage::transport_msg()
// пересчитываем CRC по перевёрнутым данным
// пересчитываем CRC по перевёрнутым данным
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
last
);
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
last
);
// копируем CRC (последний элемент). Без переворачивания...
// копируем CRC (последний элемент). Без переворачивания...
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
...
@@ -1904,7 +1902,7 @@ ModbusMessage ForceSingleCoilRetMessage::transport_msg()
...
@@ -1904,7 +1902,7 @@ ModbusMessage ForceSingleCoilRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceSingleCoilRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceSingleCoilRetMessage
&
m
)
...
@@ -1937,9 +1935,9 @@ ModbusMessage WriteSingleOutputMessage::transport_msg()
...
@@ -1937,9 +1935,9 @@ ModbusMessage WriteSingleOutputMessage::transport_msg()
// пересчитываем CRC по перевёрнутым данным
// пересчитываем CRC по перевёрнутым данным
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
last
);
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
last
);
// копируем CRC (последний элемент). Без переворачивания...
// копируем CRC (последний элемент). Без переворачивания...
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
...
@@ -2077,12 +2075,12 @@ ModbusMessage WriteSingleOutputRetMessage::transport_msg()
...
@@ -2077,12 +2075,12 @@ ModbusMessage WriteSingleOutputRetMessage::transport_msg()
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
sizeof
(
d
)
);
ModbusData
crc
=
checkCRC
(
(
ModbusByte
*
)(
&
mm
),
szModbusHeader
+
sizeof
(
d
)
);
// копируем CRC (последний элемент). Без переворачивания...
// копируем CRC (последний элемент). Без переворачивания...
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
last
]),
&
crc
,
szCRC
);
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
WriteSingleOutputRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
WriteSingleOutputRetMessage
&
m
)
...
@@ -2236,7 +2234,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
...
@@ -2236,7 +2234,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
// copy bcnt
// copy bcnt
ModbusData
d
=
SWAPSHORT
(
subf
);
ModbusData
d
=
SWAPSHORT
(
subf
);
...
@@ -2264,7 +2262,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
...
@@ -2264,7 +2262,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
DiagnosticMessage
::
szData
()
size_t
DiagnosticMessage
::
szData
()
...
@@ -2360,7 +2358,7 @@ ModbusMessage MEIMessageRDI::transport_msg()
...
@@ -2360,7 +2358,7 @@ ModbusMessage MEIMessageRDI::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -2566,7 +2564,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
...
@@ -2566,7 +2564,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
mm
.
data
[
0
]
=
type
;
mm
.
data
[
0
]
=
type
;
mm
.
data
[
1
]
=
devID
;
mm
.
data
[
1
]
=
devID
;
mm
.
data
[
2
]
=
conformity
;
mm
.
data
[
2
]
=
conformity
;
...
@@ -2593,7 +2591,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
...
@@ -2593,7 +2591,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
MEIMessageRetRDI
::
szData
()
size_t
MEIMessageRetRDI
::
szData
()
...
@@ -2727,10 +2725,10 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
...
@@ -2727,10 +2725,10 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
bcnt
=
count
*
sizeof
(
ModbusData
);
bcnt
=
count
*
sizeof
(
ModbusData
);
// copy bcnt
// copy bcnt
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
ind
+=
sizeof
(
bcnt
);
ind
+=
sizeof
(
bcnt
);
...
@@ -2759,7 +2757,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
...
@@ -2759,7 +2757,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
JournalCommandRetMessage
::
szData
()
size_t
JournalCommandRetMessage
::
szData
()
...
@@ -2982,7 +2980,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
...
@@ -2982,7 +2980,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
/*
/*
mm.data[0] = hour;
mm.data[0] = hour;
mm.data[1] = min;
mm.data[1] = min;
mm.data[2] = sec;
mm.data[2] = sec;
...
@@ -3000,7 +2998,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
...
@@ -3000,7 +2998,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
memcpy
(
&
(
mm
.
data
[
bcnt
]),
&
crc
,
szCRC
);
memcpy
(
&
(
mm
.
data
[
bcnt
]),
&
crc
,
szCRC
);
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
// bcnt + szCRC
mm
.
len
=
szData
();
// bcnt + szCRC
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
ModbusMessage
&
m
)
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
ModbusMessage
&
m
)
...
@@ -3056,7 +3054,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
...
@@ -3056,7 +3054,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
/*
/*
mm.data[0] = hour;
mm.data[0] = hour;
mm.data[1] = min;
mm.data[1] = min;
mm.data[2] = sec;
mm.data[2] = sec;
...
@@ -3077,7 +3075,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
...
@@ -3077,7 +3075,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
// bcnt + szCRC
mm
.
len
=
szData
();
// bcnt + szCRC
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
RemoteServiceMessage
::
RemoteServiceMessage
(
ModbusMessage
&
m
)
RemoteServiceMessage
::
RemoteServiceMessage
(
ModbusMessage
&
m
)
...
@@ -3176,7 +3174,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
...
@@ -3176,7 +3174,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
bcnt
=
count
*
sizeof
(
ModbusByte
);
bcnt
=
count
*
sizeof
(
ModbusByte
);
...
@@ -3199,7 +3197,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
...
@@ -3199,7 +3197,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadFileRecordMessage
::
ReadFileRecordMessage
(
ModbusMessage
&
m
)
ReadFileRecordMessage
::
ReadFileRecordMessage
(
ModbusMessage
&
m
)
...
@@ -3305,7 +3303,7 @@ ModbusMessage FileTransferMessage::transport_msg()
...
@@ -3305,7 +3303,7 @@ ModbusMessage FileTransferMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
szData
();
mm
.
len
=
szData
();
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
FileTransferMessage
::
FileTransferMessage
(
ModbusMessage
&
m
)
FileTransferMessage
::
FileTransferMessage
(
ModbusMessage
&
m
)
...
@@ -3433,7 +3431,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
...
@@ -3433,7 +3431,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
int
ind
=
0
;
int
ind
=
0
;
bcnt
=
szData
()
-
szCRC
-
1
;
// -1 - это сам байт содержащий количество байт (bcnt)...
bcnt
=
szData
()
-
szCRC
-
1
;
// -1 - это сам байт содержащий количество байт (bcnt)...
...
@@ -3465,7 +3463,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
...
@@ -3465,7 +3463,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
// длина сообщения...
// длина сообщения...
mm
.
len
=
ind
;
mm
.
len
=
ind
;
return
mm
;
return
std
::
move
(
mm
)
;
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
FileTransferRetMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
FileTransferRetMessage
&
m
)
...
...
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