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
5589b01c
Commit
5589b01c
authored
Feb 01, 2014
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Изменения после проверки cppcheck (performance)
parent
f49163bc
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
138 additions
and
136 deletions
+138
-136
admin.cc
Utilities/Admin/admin.cc
+28
-28
iocalibr.cc
extensions/IOControl/iocalibr.cc
+1
-1
RRDServer.cc
extensions/RRDServer/RRDServer.cc
+1
-1
SMDBServer.cc
extensions/SMDBServer/SMDBServer.cc
+2
-2
SMDBServer.h
extensions/SMDBServer/SMDBServer.h
+3
-3
ModbusTypes.h
include/modbus/ModbusTypes.h
+54
-54
ModbusServer.cc
src/Communications/Modbus/ModbusServer.cc
+11
-10
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+35
-34
UniSetTypes.cc
src/ObjectRepository/UniSetTypes.cc
+3
-3
No files found.
Utilities/Admin/admin.cc
View file @
5589b01c
...
@@ -458,12 +458,12 @@ int omap()
...
@@ -458,12 +458,12 @@ int omap()
int
setValue
(
const
string
&
args
,
UInterface
&
ui
,
Configuration
*
conf
)
int
setValue
(
const
string
&
args
,
UInterface
&
ui
,
Configuration
*
conf
)
{
{
int
err
=
0
;
int
err
=
0
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
conf
);
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
conf
);
cout
<<
"====== setValue ======"
<<
endl
;
cout
<<
"====== setValue ======"
<<
endl
;
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
it
++
)
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
++
it
)
{
{
try
try
{
{
UniversalIO
::
IOType
t
=
conf
->
getIOType
(
it
->
si
.
id
);
UniversalIO
::
IOType
t
=
conf
->
getIOType
(
it
->
si
.
id
);
...
@@ -471,10 +471,10 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -471,10 +471,10 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" iotype: "
<<
t
<<
endl
;
cout
<<
" iotype: "
<<
t
<<
endl
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
if
(
it
->
si
.
node
==
DefaultObjectId
)
if
(
it
->
si
.
node
==
DefaultObjectId
)
it
->
si
.
node
=
conf
->
getLocalNode
();
it
->
si
.
node
=
conf
->
getLocalNode
();
switch
(
t
)
switch
(
t
)
{
{
case
UniversalIO
:
:
DI
:
case
UniversalIO
:
:
DI
:
...
@@ -494,9 +494,9 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -494,9 +494,9 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
{
{
cerr
<<
"(setValue): "
<<
ex
<<
endl
;;
cerr
<<
"(setValue): "
<<
ex
<<
endl
;;
err
=
1
;
err
=
1
;
}
}
}
}
return
err
;
return
err
;
}
}
...
@@ -504,11 +504,11 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -504,11 +504,11 @@ int setValue( const string& args, UInterface &ui, Configuration* conf )
int
getValue
(
const
string
&
args
,
UInterface
&
ui
,
Configuration
*
conf
)
int
getValue
(
const
string
&
args
,
UInterface
&
ui
,
Configuration
*
conf
)
{
{
int
err
=
0
;
int
err
=
0
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
cout
<<
"====== getValue ======"
<<
endl
;
cout
<<
"====== getValue ======"
<<
endl
;
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
it
++
)
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
++
it
)
{
{
try
try
{
{
...
@@ -516,10 +516,10 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -516,10 +516,10 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" iotype: "
<<
t
<<
endl
;
cout
<<
" iotype: "
<<
t
<<
endl
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
if
(
it
->
si
.
node
==
DefaultObjectId
)
if
(
it
->
si
.
node
==
DefaultObjectId
)
it
->
si
.
node
=
conf
->
getLocalNode
();
it
->
si
.
node
=
conf
->
getLocalNode
();
switch
(
t
)
switch
(
t
)
{
{
case
UniversalIO
:
:
DO
:
case
UniversalIO
:
:
DO
:
...
@@ -528,7 +528,7 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -528,7 +528,7 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
case
UniversalIO
:
:
AI
:
case
UniversalIO
:
:
AI
:
cout
<<
" value: "
<<
ui
.
getValue
(
it
->
si
.
id
,
it
->
si
.
node
)
<<
endl
;
cout
<<
" value: "
<<
ui
.
getValue
(
it
->
si
.
id
,
it
->
si
.
node
)
<<
endl
;
break
;
break
;
default:
default:
cerr
<<
"FAILED: Unknown 'iotype' for "
<<
it
->
fname
<<
endl
;
cerr
<<
"FAILED: Unknown 'iotype' for "
<<
it
->
fname
<<
endl
;
err
=
1
;
err
=
1
;
...
@@ -539,9 +539,9 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
...
@@ -539,9 +539,9 @@ int getValue( const string& args, UInterface &ui, Configuration* conf )
{
{
cerr
<<
"(getValue): "
<<
ex
<<
endl
;
cerr
<<
"(getValue): "
<<
ex
<<
endl
;
err
=
1
;
err
=
1
;
}
}
}
}
return
err
;
return
err
;
}
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
...
@@ -551,11 +551,11 @@ int getCalibrate( const std::string& args, UInterface &ui )
...
@@ -551,11 +551,11 @@ int getCalibrate( const std::string& args, UInterface &ui )
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
cout
<<
"====== getCalibrate ======"
<<
endl
;
cout
<<
"====== getCalibrate ======"
<<
endl
;
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
it
++
)
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
++
it
)
{
{
if
(
it
->
si
.
node
==
DefaultObjectId
)
if
(
it
->
si
.
node
==
DefaultObjectId
)
it
->
si
.
node
=
conf
->
getLocalNode
();
it
->
si
.
node
=
conf
->
getLocalNode
();
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n
"
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n
"
;
try
try
...
@@ -568,9 +568,9 @@ int getCalibrate( const std::string& args, UInterface &ui )
...
@@ -568,9 +568,9 @@ int getCalibrate( const std::string& args, UInterface &ui )
{
{
cerr
<<
"(getCalibrate): "
<<
ex
<<
endl
;;
cerr
<<
"(getCalibrate): "
<<
ex
<<
endl
;;
err
=
1
;
err
=
1
;
}
}
}
}
return
err
;
return
err
;
}
}
...
@@ -578,14 +578,14 @@ int getCalibrate( const std::string& args, UInterface &ui )
...
@@ -578,14 +578,14 @@ int getCalibrate( const std::string& args, UInterface &ui )
int
getRawValue
(
const
std
::
string
&
args
,
UInterface
&
ui
)
int
getRawValue
(
const
std
::
string
&
args
,
UInterface
&
ui
)
{
{
int
err
=
0
;
int
err
=
0
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
typedef
std
::
list
<
UniSetTypes
::
ParamSInfo
>
SList
;
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
SList
sl
=
UniSetTypes
::
getSInfoList
(
args
,
UniSetTypes
::
conf
);
cout
<<
"====== getRawValue ======"
<<
endl
;
cout
<<
"====== getRawValue ======"
<<
endl
;
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
it
++
)
for
(
SList
::
iterator
it
=
sl
.
begin
();
it
!=
sl
.
end
();
++
it
)
{
{
if
(
it
->
si
.
node
==
DefaultObjectId
)
if
(
it
->
si
.
node
==
DefaultObjectId
)
it
->
si
.
node
=
conf
->
getLocalNode
();
it
->
si
.
node
=
conf
->
getLocalNode
();
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" name: ("
<<
it
->
si
.
id
<<
") "
<<
it
->
fname
<<
endl
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
cout
<<
" text: "
<<
conf
->
oind
->
getTextName
(
it
->
si
.
id
)
<<
"
\n\n
"
;
try
try
...
@@ -596,7 +596,7 @@ int getRawValue( const std::string& args, UInterface &ui )
...
@@ -596,7 +596,7 @@ int getRawValue( const std::string& args, UInterface &ui )
{
{
cerr
<<
"(getRawValue): "
<<
ex
<<
endl
;;
cerr
<<
"(getRawValue): "
<<
ex
<<
endl
;;
err
=
1
;
err
=
1
;
}
}
}
}
return
err
;
return
err
;
}
}
...
@@ -621,7 +621,7 @@ int logRotate( const string& arg, UInterface &ui )
...
@@ -621,7 +621,7 @@ int logRotate( const string& arg, UInterface &ui )
cout
<<
"(logrotate): name='"
<<
arg
<<
"' не найдено!!!
\n
"
;
cout
<<
"(logrotate): name='"
<<
arg
<<
"' не найдено!!!
\n
"
;
return
1
;
return
1
;
}
}
SystemMessage
sm
(
SystemMessage
::
LogRotate
);
SystemMessage
sm
(
SystemMessage
::
LogRotate
);
TransportMessage
tm
(
sm
.
transport_msg
());
TransportMessage
tm
(
sm
.
transport_msg
());
ui
.
send
(
id
,
tm
);
ui
.
send
(
id
,
tm
);
...
@@ -655,7 +655,7 @@ int configure( const string& arg, UInterface &ui )
...
@@ -655,7 +655,7 @@ int configure( const string& arg, UInterface &ui )
ui
.
send
(
id
,
tm
);
ui
.
send
(
id
,
tm
);
cout
<<
"
\n
Send 'ReConfigure' to "
<<
arg
<<
" OK.
\n
"
;
cout
<<
"
\n
Send 'ReConfigure' to "
<<
arg
<<
" OK.
\n
"
;
}
}
return
0
;
return
0
;
}
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
...
@@ -667,7 +667,7 @@ int oinfo( const string& arg, UInterface &ui )
...
@@ -667,7 +667,7 @@ int oinfo( const string& arg, UInterface &ui )
cout
<<
"(oinfo): Не задан OID!"
<<
endl
;
cout
<<
"(oinfo): Не задан OID!"
<<
endl
;
return
1
;
return
1
;
}
}
UniSetTypes
::
ObjectVar
o
=
ui
.
resolve
(
oid
);
UniSetTypes
::
ObjectVar
o
=
ui
.
resolve
(
oid
);
UniSetObject_i_var
obj
=
UniSetObject_i
::
_narrow
(
o
);
UniSetObject_i_var
obj
=
UniSetObject_i
::
_narrow
(
o
);
if
(
CORBA
::
is_nil
(
obj
))
if
(
CORBA
::
is_nil
(
obj
))
...
@@ -679,7 +679,7 @@ int oinfo( const string& arg, UInterface &ui )
...
@@ -679,7 +679,7 @@ int oinfo( const string& arg, UInterface &ui )
SimpleInfo_var
inf
=
obj
->
getInfo
();
SimpleInfo_var
inf
=
obj
->
getInfo
();
cout
<<
inf
->
info
<<
endl
;
cout
<<
inf
->
info
<<
endl
;
}
}
return
0
;
return
0
;
}
}
...
...
extensions/IOControl/iocalibr.cc
View file @
5589b01c
...
@@ -270,7 +270,7 @@ int main(int argc, char* argv[])
...
@@ -270,7 +270,7 @@ int main(int argc, char* argv[])
}
}
usleep
(
1000000
);
usleep
(
1000000
);
}
}
return
0
;
return
0
;
}
}
...
...
extensions/RRDServer/RRDServer.cc
View file @
5589b01c
...
@@ -74,7 +74,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
...
@@ -74,7 +74,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
throw
SystemError
(
err
.
str
());
throw
SystemError
(
err
.
str
());
}
}
for
(;
it_rra
.
getCurrent
();
it_rra
++
)
for
(;
it_rra
.
getCurrent
();
++
it_rra
)
{
{
string
rra
(
it_rra
.
getProp
(
"rra"
)
);
string
rra
(
it_rra
.
getProp
(
"rra"
)
);
if
(
rra
.
empty
()
)
if
(
rra
.
empty
()
)
...
...
extensions/SMDBServer/SMDBServer.cc
View file @
5589b01c
...
@@ -10,7 +10,7 @@ using namespace UniSetTypes;
...
@@ -10,7 +10,7 @@ using namespace UniSetTypes;
using
namespace
UniSetExtensions
;
using
namespace
UniSetExtensions
;
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
SMDBServer
::
SMDBServer
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmId
,
SharedMemory
*
ic
,
SMDBServer
::
SMDBServer
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmId
,
SharedMemory
*
ic
,
const
string
prefix
)
:
const
string
&
prefix
)
:
DBServer_MySQL
(
objId
),
DBServer_MySQL
(
objId
),
prefix
(
prefix
)
prefix
(
prefix
)
{
{
...
@@ -178,7 +178,7 @@ void SMDBServer::help_print( int argc, const char* const* argv )
...
@@ -178,7 +178,7 @@ void SMDBServer::help_print( int argc, const char* const* argv )
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
SMDBServer
*
SMDBServer
::
init_smdbserver
(
int
argc
,
const
char
*
const
*
argv
,
SMDBServer
*
SMDBServer
::
init_smdbserver
(
int
argc
,
const
char
*
const
*
argv
,
UniSetTypes
::
ObjectId
icID
,
SharedMemory
*
ic
,
UniSetTypes
::
ObjectId
icID
,
SharedMemory
*
ic
,
const
std
::
string
prefix
)
const
std
::
string
&
prefix
)
{
{
string
name
=
conf
->
getArgParam
(
"--"
+
prefix
+
"-name"
,
"DBServer"
);
string
name
=
conf
->
getArgParam
(
"--"
+
prefix
+
"-name"
,
"DBServer"
);
if
(
name
.
empty
()
)
if
(
name
.
empty
()
)
...
...
extensions/SMDBServer/SMDBServer.h
View file @
5589b01c
...
@@ -12,13 +12,13 @@ class SMDBServer:
...
@@ -12,13 +12,13 @@ class SMDBServer:
{
{
public
:
public
:
SMDBServer
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmID
,
SharedMemory
*
ic
=
0
,
SMDBServer
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmID
,
SharedMemory
*
ic
=
0
,
const
std
::
string
prefix
=
"dbserver"
);
const
std
::
string
&
prefix
=
"dbserver"
);
virtual
~
SMDBServer
();
virtual
~
SMDBServer
();
/*! глобальная функция для инициализации объекта */
/*! глобальная функция для инициализации объекта */
static
SMDBServer
*
init_smdbserver
(
int
argc
,
const
char
*
const
*
argv
,
static
SMDBServer
*
init_smdbserver
(
int
argc
,
const
char
*
const
*
argv
,
UniSetTypes
::
ObjectId
shmID
,
SharedMemory
*
ic
=
0
,
UniSetTypes
::
ObjectId
shmID
,
SharedMemory
*
ic
=
0
,
const
std
::
string
prefix
=
"dbserver"
);
const
std
::
string
&
prefix
=
"dbserver"
);
/*! глобальная функция для вывода help-а */
/*! глобальная функция для вывода help-а */
static
void
help_print
(
int
argc
,
const
char
*
const
*
argv
);
static
void
help_print
(
int
argc
,
const
char
*
const
*
argv
);
...
...
include/modbus/ModbusTypes.h
View file @
5589b01c
...
@@ -197,18 +197,18 @@ namespace ModbusRTU
...
@@ -197,18 +197,18 @@ namespace ModbusRTU
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ErrorRetMessage
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ErrorRetMessage
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
struct
DataBits
struct
DataBits
{
{
DataBits
(
ModbusByte
b
);
DataBits
(
ModbusByte
b
);
DataBits
(
std
::
string
s
);
// example "10001111"
DataBits
(
std
::
string
s
);
// example "10001111"
DataBits
();
DataBits
();
const
DataBits
&
operator
=
(
const
ModbusByte
&
r
);
const
DataBits
&
operator
=
(
const
ModbusByte
&
r
);
operator
ModbusByte
();
operator
ModbusByte
();
ModbusByte
mbyte
();
ModbusByte
mbyte
();
bool
operator
[](
const
in
t
i
){
return
b
[
i
];
}
bool
operator
[](
const
size_
t
i
){
return
b
[
i
];
}
std
::
bitset
<
BitsPerByte
>
b
;
std
::
bitset
<
BitsPerByte
>
b
;
};
};
...
@@ -216,33 +216,33 @@ namespace ModbusRTU
...
@@ -216,33 +216,33 @@ namespace ModbusRTU
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
struct
DataBits16
struct
DataBits16
{
{
DataBits16
(
ModbusData
d
);
DataBits16
(
ModbusData
d
);
DataBits16
(
std
::
string
s
);
// example "1000111110001111"
DataBits16
(
const
std
::
string
&
s
);
// example "1000111110001111"
DataBits16
();
DataBits16
();
const
DataBits16
&
operator
=
(
const
ModbusData
&
r
);
const
DataBits16
&
operator
=
(
const
ModbusData
&
r
);
operator
ModbusData
();
operator
ModbusData
();
ModbusData
mdata
();
ModbusData
mdata
();
bool
operator
[](
const
in
t
i
){
return
b
[
i
];
}
bool
operator
[](
const
size_
t
i
){
return
b
[
i
];
}
void
set
(
int
n
,
bool
s
){
b
.
set
(
n
,
s
);
}
void
set
(
int
n
,
bool
s
){
b
.
set
(
n
,
s
);
}
std
::
bitset
<
BitsPerData
>
b
;
std
::
bitset
<
BitsPerData
>
b
;
};
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits16
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits16
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits16
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DataBits16
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
/*! Запрос 0x01 */
/*! Запрос 0x01 */
struct
ReadCoilMessage
:
struct
ReadCoilMessage
:
public
ModbusHeader
public
ModbusHeader
{
{
ModbusData
start
;
ModbusData
start
;
ModbusData
count
;
ModbusData
count
;
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to slave -------
// ------- to slave -------
ReadCoilMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
ReadCoilMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
...
@@ -262,7 +262,7 @@ namespace ModbusRTU
...
@@ -262,7 +262,7 @@ namespace ModbusRTU
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadCoilMessage
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadCoilMessage
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
/*! Ответ на 0x01 */
/*! Ответ на 0x01 */
struct
ReadCoilRetMessage
:
struct
ReadCoilRetMessage
:
public
ModbusHeader
public
ModbusHeader
...
@@ -285,7 +285,7 @@ namespace ModbusRTU
...
@@ -285,7 +285,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
int
getDataLen
(
ModbusMessage
&
m
);
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to master -------
// ------- to master -------
ReadCoilRetMessage
(
ModbusAddr
_from
);
ReadCoilRetMessage
(
ModbusAddr
_from
);
...
@@ -314,7 +314,7 @@ namespace ModbusRTU
...
@@ -314,7 +314,7 @@ namespace ModbusRTU
/*! очистка данных */
/*! очистка данных */
void
clear
();
void
clear
();
/*! проверка на переполнение */
/*! проверка на переполнение */
inline
bool
isFull
()
inline
bool
isFull
()
{
{
...
@@ -322,8 +322,8 @@ namespace ModbusRTU
...
@@ -322,8 +322,8 @@ namespace ModbusRTU
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
};
};
...
@@ -338,7 +338,7 @@ namespace ModbusRTU
...
@@ -338,7 +338,7 @@ namespace ModbusRTU
ModbusData
start
;
ModbusData
start
;
ModbusData
count
;
ModbusData
count
;
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to slave -------
// ------- to slave -------
ReadInputStatusMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
ReadInputStatusMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
...
@@ -379,7 +379,7 @@ namespace ModbusRTU
...
@@ -379,7 +379,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
int
getDataLen
(
ModbusMessage
&
m
);
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to master -------
// ------- to master -------
ReadInputStatusRetMessage
(
ModbusAddr
_from
);
ReadInputStatusRetMessage
(
ModbusAddr
_from
);
...
@@ -408,16 +408,16 @@ namespace ModbusRTU
...
@@ -408,16 +408,16 @@ namespace ModbusRTU
/*! очистка данных */
/*! очистка данных */
void
clear
();
void
clear
();
/*! проверка на переполнение */
/*! проверка на переполнение */
inline
bool
isFull
()
inline
bool
isFull
()
{
{
return
(
(
int
)
bcnt
>=
MAXLENPACKET
);
return
(
(
int
)
bcnt
>=
MAXLENPACKET
);
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
};
};
...
@@ -426,14 +426,14 @@ namespace ModbusRTU
...
@@ -426,14 +426,14 @@ namespace ModbusRTU
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputStatusRetMessage
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputStatusRetMessage
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
/*! Запрос 0x03 */
/*! Запрос 0x03 */
struct
ReadOutputMessage
:
struct
ReadOutputMessage
:
public
ModbusHeader
public
ModbusHeader
{
{
ModbusData
start
;
ModbusData
start
;
ModbusData
count
;
ModbusData
count
;
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to slave -------
// ------- to slave -------
ReadOutputMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
ReadOutputMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
...
@@ -475,7 +475,7 @@ namespace ModbusRTU
...
@@ -475,7 +475,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
int
getDataLen
(
ModbusMessage
&
m
);
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to master -------
// ------- to master -------
ReadOutputRetMessage
(
ModbusAddr
_from
);
ReadOutputRetMessage
(
ModbusAddr
_from
);
...
@@ -487,19 +487,19 @@ namespace ModbusRTU
...
@@ -487,19 +487,19 @@ namespace ModbusRTU
/*! очистка данных */
/*! очистка данных */
void
clear
();
void
clear
();
/*! проверка на переполнение */
/*! проверка на переполнение */
inline
bool
isFull
()
inline
bool
isFull
()
{
{
return
(
count
*
sizeof
(
ModbusData
)
>=
MAXLENPACKET
);
return
(
count
*
sizeof
(
ModbusData
)
>=
MAXLENPACKET
);
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// Это поле не входит в стандарт modbus
// Это поле не входит в стандарт modbus
// оно вспомогательное и игнорируется при
// оно вспомогательное и игнорируется при
// преобразовании в ModbusMessage.
// преобразовании в ModbusMessage.
...
@@ -518,7 +518,7 @@ namespace ModbusRTU
...
@@ -518,7 +518,7 @@ namespace ModbusRTU
ModbusData
start
;
ModbusData
start
;
ModbusData
count
;
ModbusData
count
;
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to slave -------
// ------- to slave -------
ReadInputMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
ReadInputMessage
(
ModbusAddr
addr
,
ModbusData
start
,
ModbusData
count
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
...
@@ -561,7 +561,7 @@ namespace ModbusRTU
...
@@ -561,7 +561,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
int
getDataLen
(
ModbusMessage
&
m
);
ModbusCRC
crc
;
ModbusCRC
crc
;
// ------- to master -------
// ------- to master -------
ReadInputRetMessage
(
ModbusAddr
_from
);
ReadInputRetMessage
(
ModbusAddr
_from
);
...
@@ -573,21 +573,21 @@ namespace ModbusRTU
...
@@ -573,21 +573,21 @@ namespace ModbusRTU
/*! очистка данных */
/*! очистка данных */
void
clear
();
void
clear
();
/*! проверка на переполнение */
/*! проверка на переполнение */
inline
bool
isFull
()
inline
bool
isFull
()
{
{
return
(
count
*
sizeof
(
ModbusData
)
>=
MAXLENPACKET
);
return
(
count
*
sizeof
(
ModbusData
)
>=
MAXLENPACKET
);
}
}
void
swapData
();
void
swapData
();
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// Это поле не входит в стандарт modbus
// Это поле не входит в стандарт modbus
// оно вспомогательное и игнорируется при
// оно вспомогательное и игнорируется при
// преобразовании в ModbusMessage.
// преобразовании в ModbusMessage.
...
@@ -599,7 +599,7 @@ namespace ModbusRTU
...
@@ -599,7 +599,7 @@ namespace ModbusRTU
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputRetMessage
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputRetMessage
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputRetMessage
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
ReadInputRetMessage
*
m
);
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
/*! Запрос на запись 0x0F */
/*! Запрос на запись 0x0F */
struct
ForceCoilsMessage
:
struct
ForceCoilsMessage
:
public
ModbusHeader
public
ModbusHeader
{
{
...
@@ -651,7 +651,7 @@ namespace ModbusRTU
...
@@ -651,7 +651,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -741,7 +741,7 @@ namespace ModbusRTU
...
@@ -741,7 +741,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -828,7 +828,7 @@ namespace ModbusRTU
...
@@ -828,7 +828,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -911,7 +911,7 @@ namespace ModbusRTU
...
@@ -911,7 +911,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -1015,7 +1015,7 @@ namespace ModbusRTU
...
@@ -1015,7 +1015,7 @@ namespace ModbusRTU
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
@@ -1143,7 +1143,7 @@ namespace ModbusRTU
...
@@ -1143,7 +1143,7 @@ namespace ModbusRTU
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
@@ -1211,7 +1211,7 @@ namespace ModbusRTU
...
@@ -1211,7 +1211,7 @@ namespace ModbusRTU
}
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
@@ -1314,7 +1314,7 @@ namespace ModbusRTU
...
@@ -1314,7 +1314,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -1355,7 +1355,7 @@ namespace ModbusRTU
...
@@ -1355,7 +1355,7 @@ namespace ModbusRTU
{
return
(
count
>=
sizeof
(
data
)
);
}
{
return
(
count
>=
sizeof
(
data
)
);
}
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
@@ -1390,7 +1390,7 @@ namespace ModbusRTU
...
@@ -1390,7 +1390,7 @@ namespace ModbusRTU
void
init
(
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -1473,7 +1473,7 @@ namespace ModbusRTU
...
@@ -1473,7 +1473,7 @@ namespace ModbusRTU
void
clear
();
void
clear
();
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
in
t
szData
();
size_
t
szData
();
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
...
src/Communications/Modbus/ModbusServer.cc
View file @
5589b01c
...
@@ -1448,7 +1448,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string &fname,
...
@@ -1448,7 +1448,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string &fname,
}
}
return
ModbusRTU
::
erNoError
;
return
ModbusRTU
::
erNoError
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ModbusRTU
::
mbErrCode
ModbusServer
::
replySetDateTime
(
ModbusRTU
::
SetDateTimeMessage
&
query
,
ModbusRTU
::
mbErrCode
ModbusServer
::
replySetDateTime
(
ModbusRTU
::
SetDateTimeMessage
&
query
,
ModbusRTU
::
SetDateTimeRetMessage
&
reply
,
ModbusRTU
::
SetDateTimeRetMessage
&
reply
,
...
@@ -1462,15 +1462,16 @@ ModbusRTU::mbErrCode ModbusServer::replySetDateTime( ModbusRTU::SetDateTimeMessa
...
@@ -1462,15 +1462,16 @@ ModbusRTU::mbErrCode ModbusServer::replySetDateTime( ModbusRTU::SetDateTimeMessa
if
(
gettimeofday
(
&
set
,
&
tz
)
==
0
)
if
(
gettimeofday
(
&
set
,
&
tz
)
==
0
)
{
{
struct
tm
*
t
=
localtime
(
&
set
.
tv_sec
);
struct
tm
t
;
t
->
tm_sec
=
query
.
sec
;
localtime_r
(
&
set
.
tv_sec
,
&
t
);
t
->
tm_min
=
query
.
min
;
t
.
tm_sec
=
query
.
sec
;
t
->
tm_hour
=
query
.
hour
;
t
.
tm_min
=
query
.
min
;
t
->
tm_mday
=
query
.
day
;
t
.
tm_hour
=
query
.
hour
;
t
->
tm_mon
=
query
.
mon
-
1
;
t
.
tm_mday
=
query
.
day
;
// t->tm_year = (query.century>19) ? query.year + query.century*10 - 1900 : query.year;
t
.
tm_mon
=
query
.
mon
-
1
;
t
->
tm_year
=
(
query
.
century
>
19
)
?
query
.
year
+
2000
-
1900
:
query
.
year
;
// t.tm_year = (query.century>19) ? query.year + query.century*10 - 1900 : query.year;
set
.
tv_sec
=
mktime
(
t
);
t
.
tm_year
=
(
query
.
century
>
19
)
?
query
.
year
+
2000
-
1900
:
query
.
year
;
set
.
tv_sec
=
mktime
(
&
t
);
set
.
tv_usec
=
0
;
set
.
tv_usec
=
0
;
if
(
settimeofday
(
&
set
,
&
tz
)
==
0
)
if
(
settimeofday
(
&
set
,
&
tz
)
==
0
)
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
5589b01c
...
@@ -385,14 +385,14 @@ const DataBits& DataBits::operator=( const ModbusByte& r )
...
@@ -385,14 +385,14 @@ const DataBits& DataBits::operator=( const ModbusByte& r )
{
{
for
(
unsigned
int
i
=
0
;
i
<
b
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
b
.
size
();
i
++
)
b
[
i
]
=
r
&
(
1
<<
i
);
b
[
i
]
=
r
&
(
1
<<
i
);
return
(
*
this
);
return
(
*
this
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
DataBits
&
d
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
DataBits
&
d
)
{
{
os
<<
"["
;
os
<<
"["
;
for
(
unsigned
int
i
=
(
int
)
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
for
(
int
i
=
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
os
<<
d
.
b
[
i
];
os
<<
d
.
b
[
i
];
os
<<
"]"
;
os
<<
"]"
;
...
@@ -404,10 +404,10 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DataBits* d )
...
@@ -404,10 +404,10 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DataBits* d )
return
os
<<
(
*
d
);
return
os
<<
(
*
d
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DataBits16
::
DataBits16
(
std
::
string
s
)
:
DataBits16
::
DataBits16
(
const
std
::
string
&
s
)
:
b
(
s
)
b
(
s
)
{
{
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DataBits16
::
DataBits16
(
ModbusData
d
)
DataBits16
::
DataBits16
(
ModbusData
d
)
...
@@ -439,16 +439,17 @@ ModbusData DataBits16::mdata()
...
@@ -439,16 +439,17 @@ ModbusData DataBits16::mdata()
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
const
DataBits16
&
DataBits16
::
operator
=
(
const
ModbusData
&
r
)
const
DataBits16
&
DataBits16
::
operator
=
(
const
ModbusData
&
r
)
{
{
for
(
unsigned
int
i
=
0
;
i
<
b
.
size
();
i
++
)
const
size_t
sz
=
b
.
size
();
for
(
unsigned
int
i
=
0
;
i
<
sz
;
i
++
)
b
[
i
]
=
r
&
(
1
<<
i
);
b
[
i
]
=
r
&
(
1
<<
i
);
return
(
*
this
);
return
(
*
this
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
DataBits16
&
d
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
DataBits16
&
d
)
{
{
os
<<
"["
;
os
<<
"["
;
for
(
unsigned
int
i
=
(
int
)
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
for
(
int
i
=
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
os
<<
d
.
b
[
i
];
os
<<
d
.
b
[
i
];
os
<<
"]"
;
os
<<
"]"
;
...
@@ -478,14 +479,14 @@ void ReadCoilRetMessage::init( ModbusMessage& m )
...
@@ -478,14 +479,14 @@ void ReadCoilRetMessage::init( ModbusMessage& m )
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
addr
=
m
.
addr
;
addr
=
m
.
addr
;
func
=
m
.
func
;
func
=
m
.
func
;
bcnt
=
m
.
data
[
0
];
bcnt
=
m
.
data
[
0
];
if
(
bcnt
>
MAXLENPACKET
)
if
(
bcnt
>
MAXLENPACKET
)
throw
mbException
(
erPacketTooLong
);
throw
mbException
(
erPacketTooLong
);
memcpy
(
&
data
,
&
(
m
.
data
[
1
]),
bcnt
);
memcpy
(
&
data
,
&
(
m
.
data
[
1
]),
bcnt
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadCoilRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
int
ReadCoilRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
{
{
...
@@ -512,7 +513,7 @@ bool ReadCoilRetMessage::setBit( unsigned char dnum, unsigned char bnum, bool st
...
@@ -512,7 +513,7 @@ bool ReadCoilRetMessage::setBit( unsigned char dnum, unsigned char bnum, bool st
data
[
dnum
]
=
d
;
data
[
dnum
]
=
d
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -520,7 +521,7 @@ bool ReadCoilRetMessage::addData( DataBits d )
...
@@ -520,7 +521,7 @@ bool ReadCoilRetMessage::addData( DataBits d )
{
{
if
(
isFull
()
)
if
(
isFull
()
)
return
false
;
return
false
;
data
[
bcnt
++
]
=
d
.
mbyte
();
data
[
bcnt
++
]
=
d
.
mbyte
();
return
true
;
return
true
;
}
}
...
@@ -532,7 +533,7 @@ bool ReadCoilRetMessage::getData( unsigned char dnum, DataBits& d )
...
@@ -532,7 +533,7 @@ bool ReadCoilRetMessage::getData( unsigned char dnum, DataBits& d )
d
=
data
[
dnum
];
d
=
data
[
dnum
];
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -551,7 +552,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
...
@@ -551,7 +552,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
,
this
,
szModbusHeader
);
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
memcpy
(
&
mm
.
data
,
&
bcnt
,
sizeof
(
bcnt
));
int
ind
=
sizeof
(
bcnt
);
int
ind
=
sizeof
(
bcnt
);
// копируем данные
// копируем данные
...
@@ -570,7 +571,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
...
@@ -570,7 +571,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ReadCoilRetMessage
::
szData
()
size_
t
ReadCoilRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
bcnt
+
szCRC
;
return
sizeof
(
bcnt
)
+
bcnt
+
szCRC
;
...
@@ -639,7 +640,7 @@ void ReadInputStatusMessage::init( ModbusMessage& m )
...
@@ -639,7 +640,7 @@ void ReadInputStatusMessage::init( ModbusMessage& m )
assert
(
m
.
func
==
fnReadInputStatus
);
assert
(
m
.
func
==
fnReadInputStatus
);
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
);
...
@@ -678,14 +679,14 @@ void ReadInputStatusRetMessage::init( ModbusMessage& m )
...
@@ -678,14 +679,14 @@ void ReadInputStatusRetMessage::init( ModbusMessage& m )
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
addr
=
m
.
addr
;
addr
=
m
.
addr
;
func
=
m
.
func
;
func
=
m
.
func
;
bcnt
=
m
.
data
[
0
];
bcnt
=
m
.
data
[
0
];
if
(
bcnt
>
MAXLENPACKET
)
if
(
bcnt
>
MAXLENPACKET
)
throw
mbException
(
erPacketTooLong
);
throw
mbException
(
erPacketTooLong
);
memcpy
(
&
data
,
&
(
m
.
data
[
1
]),
bcnt
);
memcpy
(
&
data
,
&
(
m
.
data
[
1
]),
bcnt
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadInputStatusRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
int
ReadInputStatusRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
{
{
...
@@ -770,7 +771,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg()
...
@@ -770,7 +771,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ReadInputStatusRetMessage
::
szData
()
size_
t
ReadInputStatusRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
bcnt
+
szCRC
;
return
sizeof
(
bcnt
)
+
bcnt
+
szCRC
;
...
@@ -989,7 +990,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
...
@@ -989,7 +990,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ReadOutputRetMessage
::
szData
()
size_
t
ReadOutputRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
...
@@ -1197,7 +1198,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
...
@@ -1197,7 +1198,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ReadInputRetMessage
::
szData
()
size_
t
ReadInputRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
...
@@ -1370,7 +1371,7 @@ bool ForceCoilsMessage::checkFormat()
...
@@ -1370,7 +1371,7 @@ bool ForceCoilsMessage::checkFormat()
return
(
func
==
fnForceMultipleCoils
);
return
(
func
==
fnForceMultipleCoils
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ForceCoilsMessage
::
szData
()
size_
t
ForceCoilsMessage
::
szData
()
{
{
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
...
@@ -1617,7 +1618,7 @@ bool WriteOutputMessage::checkFormat()
...
@@ -1617,7 +1618,7 @@ bool WriteOutputMessage::checkFormat()
return
(
(
bcnt
==
(
quant
*
sizeof
(
ModbusData
)))
&&
(
func
==
fnWriteOutputRegisters
)
);
return
(
(
bcnt
==
(
quant
*
sizeof
(
ModbusData
)))
&&
(
func
==
fnWriteOutputRegisters
)
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
WriteOutputMessage
::
szData
()
size_
t
WriteOutputMessage
::
szData
()
{
{
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
...
@@ -1812,7 +1813,7 @@ bool ForceSingleCoilMessage::checkFormat()
...
@@ -1812,7 +1813,7 @@ bool ForceSingleCoilMessage::checkFormat()
return
(
func
==
fnForceSingleCoil
);
return
(
func
==
fnForceSingleCoil
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ForceSingleCoilMessage
::
szData
()
size_
t
ForceSingleCoilMessage
::
szData
()
{
{
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
}
}
...
@@ -1984,7 +1985,7 @@ bool WriteSingleOutputMessage::checkFormat()
...
@@ -1984,7 +1985,7 @@ bool WriteSingleOutputMessage::checkFormat()
return
(
(
func
==
fnWriteOutputSingleRegister
)
);
return
(
(
func
==
fnWriteOutputSingleRegister
)
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
WriteSingleOutputMessage
::
szData
()
size_
t
WriteSingleOutputMessage
::
szData
()
{
{
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
}
}
...
@@ -2266,7 +2267,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
...
@@ -2266,7 +2267,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
DiagnosticMessage
::
szData
()
size_
t
DiagnosticMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
subf
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
return
sizeof
(
subf
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
...
@@ -2595,7 +2596,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
...
@@ -2595,7 +2596,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
MEIMessageRetRDI
::
szData
()
size_
t
MEIMessageRetRDI
::
szData
()
{
{
// заголовочные поля + фактическое число данных + контрольная сумма
// заголовочные поля + фактическое число данных + контрольная сумма
return
6
+
bcnt
+
szCRC
;
return
6
+
bcnt
+
szCRC
;
...
@@ -2761,7 +2762,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
...
@@ -2761,7 +2762,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
return
mm
;
return
mm
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
JournalCommandRetMessage
::
szData
()
size_
t
JournalCommandRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
...
@@ -3097,12 +3098,12 @@ void RemoteServiceMessage::init( ModbusMessage& m )
...
@@ -3097,12 +3098,12 @@ void RemoteServiceMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
// последний элемент это CRC
// последний элемент это CRC
memcpy
(
&
crc
,
&
(
m
.
data
[
m
.
len
-
szCRC
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
m
.
len
-
szCRC
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
RemoteServiceMessage
::
szData
()
size_
t
RemoteServiceMessage
::
szData
()
{
{
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
...
@@ -3162,7 +3163,7 @@ void RemoteServiceRetMessage::clear()
...
@@ -3162,7 +3163,7 @@ void RemoteServiceRetMessage::clear()
bcnt
=
0
;
bcnt
=
0
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
RemoteServiceRetMessage
::
szData
()
size_
t
RemoteServiceRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusByte
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
ModbusByte
)
+
szCRC
;
...
@@ -3222,10 +3223,10 @@ void ReadFileRecordMessage::init( ModbusMessage& m )
...
@@ -3222,10 +3223,10 @@ void ReadFileRecordMessage::init( ModbusMessage& m )
assert
(
m
.
func
==
fnReadFileRecord
);
assert
(
m
.
func
==
fnReadFileRecord
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
// потом проверяем
// потом проверяем
if
(
!
checkFormat
()
)
if
(
!
checkFormat
()
)
{
{
...
@@ -3249,7 +3250,7 @@ void ReadFileRecordMessage::init( ModbusMessage& m )
...
@@ -3249,7 +3250,7 @@ void ReadFileRecordMessage::init( ModbusMessage& m )
}
}
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
in
t
ReadFileRecordMessage
::
szData
()
size_
t
ReadFileRecordMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
SubRequest
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
SubRequest
)
+
szCRC
;
...
@@ -3419,7 +3420,7 @@ int FileTransferRetMessage::getDataLen( ModbusMessage& m )
...
@@ -3419,7 +3420,7 @@ int FileTransferRetMessage::getDataLen( ModbusMessage& m )
return
m
.
data
[
0
];
return
m
.
data
[
0
];
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
in
t
FileTransferRetMessage
::
szData
()
size_
t
FileTransferRetMessage
::
szData
()
{
{
// фактическое число данных + контрольная сумма
// фактическое число данных + контрольная сумма
return
sizeof
(
ModbusByte
)
*
2
+
sizeof
(
ModbusData
)
*
3
+
dlen
+
szCRC
;
return
sizeof
(
ModbusByte
)
*
2
+
sizeof
(
ModbusData
)
*
3
+
dlen
+
szCRC
;
...
...
src/ObjectRepository/UniSetTypes.cc
View file @
5589b01c
...
@@ -235,12 +235,12 @@ using namespace UniSetTypes;
...
@@ -235,12 +235,12 @@ using namespace UniSetTypes;
std
::
list
<
UniSetTypes
::
ParamSInfo
>
UniSetTypes
::
getSInfoList
(
const
string
&
str
,
Configuration
*
conf
)
std
::
list
<
UniSetTypes
::
ParamSInfo
>
UniSetTypes
::
getSInfoList
(
const
string
&
str
,
Configuration
*
conf
)
{
{
std
::
list
<
UniSetTypes
::
ParamSInfo
>
res
;
std
::
list
<
UniSetTypes
::
ParamSInfo
>
res
;
std
::
list
<
std
::
string
>
l
=
UniSetTypes
::
explode_str
(
str
,
','
);
std
::
list
<
std
::
string
>
l
=
UniSetTypes
::
explode_str
(
str
,
','
);
for
(
std
::
list
<
std
::
string
>::
iterator
it
=
l
.
begin
();
it
!=
l
.
end
();
it
++
)
for
(
std
::
list
<
std
::
string
>::
iterator
it
=
l
.
begin
();
it
!=
l
.
end
();
++
it
)
{
{
UniSetTypes
::
ParamSInfo
item
;
UniSetTypes
::
ParamSInfo
item
;
std
::
list
<
std
::
string
>
p
=
UniSetTypes
::
explode_str
((
*
it
),
'='
);
std
::
list
<
std
::
string
>
p
=
UniSetTypes
::
explode_str
((
*
it
),
'='
);
std
::
string
s
=
""
;
std
::
string
s
=
""
;
if
(
p
.
size
()
==
1
)
if
(
p
.
size
()
==
1
)
...
...
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