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
da6f393f
Commit
da6f393f
authored
Feb 11, 2014
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Добавил в MosbusMaster использование shared_ptr
parent
745b20c7
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
40 additions
and
42 deletions
+40
-42
MBExchange.h
extensions/ModbusMaster/MBExchange.h
+3
-2
MBTCPMaster.cc
extensions/ModbusMaster/MBTCPMaster.cc
+8
-11
MBTCPMaster.h
extensions/ModbusMaster/MBTCPMaster.h
+3
-2
MBTCPMultiMaster.cc
extensions/ModbusMaster/MBTCPMultiMaster.cc
+4
-5
MBTCPMultiMaster.h
extensions/ModbusMaster/MBTCPMultiMaster.h
+2
-2
RTUExchange.cc
extensions/ModbusMaster/RTUExchange.cc
+9
-9
RTUExchange.h
extensions/ModbusMaster/RTUExchange.h
+2
-2
RTUStorage.cc
extensions/ModbusMaster/RTUStorage.cc
+1
-2
RTUStorage.h
extensions/ModbusMaster/RTUStorage.h
+2
-1
rtustate.cc
extensions/ModbusMaster/rtustate.cc
+5
-5
start_fg_mbtcpmulti.sh
extensions/ModbusMaster/start_fg_mbtcpmulti.sh
+1
-1
No files found.
extensions/ModbusMaster/MBExchange.h
View file @
da6f393f
...
...
@@ -5,6 +5,7 @@
#include <string>
#include <map>
#include <vector>
#include <memory>
#include "IONotifyController.h"
#include "UniSetObject_LT.h"
#include "PassiveTimer.h"
...
...
@@ -234,7 +235,7 @@ class MBExchange:
InitList
initRegList
;
/*!< список регистров для инициализации */
UniSetTypes
::
uniset_rwmutex
pollMutex
;
virtual
ModbusClient
*
initMB
(
bool
reopen
=
false
)
=
0
;
virtual
std
::
shared_ptr
<
ModbusClient
>
initMB
(
bool
reopen
=
false
)
=
0
;
virtual
void
poll
();
bool
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
);
...
...
@@ -311,7 +312,7 @@ class MBExchange:
std
::
string
prop_prefix
;
/*!< префикс для считывания параметров обмена */
ModbusClient
*
mb
;
std
::
shared_ptr
<
ModbusClient
>
mb
;
// определение timeout для соединения
PassiveTimer
ptTimeout
;
...
...
extensions/ModbusMaster/MBTCPMaster.cc
View file @
da6f393f
...
...
@@ -14,7 +14,7 @@ MBTCPMaster::MBTCPMaster( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shm
SharedMemory
*
ic
,
const
std
::
string
&
prefix
)
:
MBExchange
(
objId
,
shmId
,
ic
,
prefix
),
force_disconnect
(
true
),
mbtcp
(
0
),
mbtcp
(
nullptr
),
pollThread
(
0
)
{
if
(
objId
==
DefaultObjectId
)
...
...
@@ -76,25 +76,24 @@ pollThread(0)
MBTCPMaster
::~
MBTCPMaster
()
{
delete
pollThread
;
delete
mbtcp
;
//
delete mbtcp;
}
// -----------------------------------------------------------------------------
ModbusClient
*
MBTCPMaster
::
initMB
(
bool
reopen
)
std
::
shared_ptr
<
ModbusClient
>
MBTCPMaster
::
initMB
(
bool
reopen
)
{
if
(
mbtcp
)
{
if
(
!
reopen
)
return
mbtcp
;
delete
mbtcp
;
mb
=
0
;
mbtcp
=
0
;
mbtcp
=
nullptr
;
mb
=
nullptr
;
}
try
{
ost
::
Thread
::
setException
(
ost
::
Thread
::
throwException
);
mbtcp
=
new
ModbusTCPMaster
();
mbtcp
=
std
::
make_shared
<
ModbusTCPMaster
>
();
ost
::
InetAddress
ia
(
iaddr
.
c_str
());
mbtcp
->
connect
(
ia
,
port
);
...
...
@@ -118,10 +117,8 @@ ModbusClient* MBTCPMaster::initMB( bool reopen )
}
catch
(...)
{
if
(
mbtcp
)
delete
mbtcp
;
mb
=
0
;
mbtcp
=
0
;
mb
=
nullptr
;
mbtcp
=
nullptr
;
}
mb
=
mbtcp
;
...
...
extensions/ModbusMaster/MBTCPMaster.h
View file @
da6f393f
...
...
@@ -5,6 +5,7 @@
#include <string>
#include <map>
#include <vector>
#include <memory>
#include "MBExchange.h"
#include "modbus/ModbusTCPMaster.h"
// -----------------------------------------------------------------------------
...
...
@@ -206,7 +207,7 @@ class MBTCPMaster:
protected
:
virtual
void
sysCommand
(
const
UniSetTypes
::
SystemMessage
*
sm
)
override
;
virtual
ModbusClient
*
initMB
(
bool
reopen
=
false
)
override
;
virtual
std
::
shared_ptr
<
ModbusClient
>
initMB
(
bool
reopen
=
false
)
override
;
UniSetTypes
::
uniset_rwmutex
mbMutex
;
std
::
string
iaddr
;
...
...
@@ -218,7 +219,7 @@ class MBTCPMaster:
private
:
MBTCPMaster
();
ModbusTCPMaster
*
mbtcp
;
std
::
shared_ptr
<
ModbusTCPMaster
>
mbtcp
;
// т.к. TCP может "зависнуть" на подключении к недоступному узлу
// делаем опрос в отдельном потоке
...
...
extensions/ModbusMaster/MBTCPMultiMaster.cc
View file @
da6f393f
...
...
@@ -98,7 +98,7 @@ checkThread(0)
}
sinf
.
priority
=
it1
.
getIntProp
(
"priority"
);
sinf
.
mbtcp
=
new
ModbusTCPMaster
();
sinf
.
mbtcp
=
std
::
make_shared
<
ModbusTCPMaster
>
();
sinf
.
recv_timeout
=
it1
.
getPIntProp
(
"recv_timeout"
,
recv_timeout
);
sinf
.
aftersend_pause
=
it1
.
getPIntProp
(
"aftersend_pause"
,
aftersend_pause
);
...
...
@@ -157,13 +157,12 @@ MBTCPMultiMaster::~MBTCPMultiMaster()
delete
checkThread
;
for
(
auto
&
it
:
mblist
)
{
delete
it
.
mbtcp
;
it
.
mbtcp
=
0
;
it
.
mbtcp
=
nullptr
;
mbi
=
mblist
.
rend
();
}
}
// -----------------------------------------------------------------------------
ModbusClient
*
MBTCPMultiMaster
::
initMB
(
bool
reopen
)
std
::
shared_ptr
<
ModbusClient
>
MBTCPMultiMaster
::
initMB
(
bool
reopen
)
{
// просто движемся по кругу (т.к. связь не проверяется)
// движемся в обратном порядке, т.к. сортировка по возрастанию приоритета
...
...
@@ -209,7 +208,7 @@ ModbusClient* MBTCPMultiMaster::initMB( bool reopen )
{
uniset_rwmutex_wrlock
l
(
tcpMutex
);
mbi
=
mblist
.
rend
();
mb
=
0
;
mb
=
nullptr
;
}
return
0
;
...
...
extensions/ModbusMaster/MBTCPMultiMaster.h
View file @
da6f393f
...
...
@@ -229,7 +229,7 @@ class MBTCPMultiMaster:
protected
:
virtual
void
sysCommand
(
const
UniSetTypes
::
SystemMessage
*
sm
)
override
;
virtual
void
initIterators
()
override
;
virtual
ModbusClient
*
initMB
(
bool
reopen
=
false
)
override
;
virtual
std
::
shared_ptr
<
ModbusClient
>
initMB
(
bool
reopen
=
false
)
override
;
void
poll_thread
();
void
check_thread
();
...
...
@@ -250,7 +250,7 @@ class MBTCPMultiMaster:
std
::
string
ip
;
int
port
;
ModbusTCPMaster
*
mbtcp
;
std
::
shared_ptr
<
ModbusTCPMaster
>
mbtcp
;
int
priority
;
bool
respond
;
...
...
extensions/ModbusMaster/RTUExchange.cc
View file @
da6f393f
...
...
@@ -88,16 +88,16 @@ void RTUExchange::help_print( int argc, const char* const* argv )
// -----------------------------------------------------------------------------
RTUExchange
::~
RTUExchange
()
{
delete
mbrtu
;
//
delete mbrtu;
}
// -----------------------------------------------------------------------------
ModbusClient
*
RTUExchange
::
initMB
(
bool
reopen
)
std
::
shared_ptr
<
ModbusClient
>
RTUExchange
::
initMB
(
bool
reopen
)
{
if
(
!
file_exist
(
devname
)
)
{
if
(
mbrtu
)
{
delete
mbrtu
;
//
delete mbrtu;
mb
=
0
;
mbrtu
=
0
;
}
...
...
@@ -109,14 +109,14 @@ ModbusClient* RTUExchange::initMB( bool reopen )
if
(
!
reopen
)
return
mbrtu
;
delete
mbrtu
;
//
delete mbrtu;
mbrtu
=
0
;
mb
=
0
;
}
try
{
mbrtu
=
new
ModbusRTUMaster
(
devname
,
use485F
,
transmitCtl
);
mbrtu
=
std
::
make_shared
<
ModbusRTUMaster
>
(
devname
,
use485F
,
transmitCtl
);
if
(
defSpeed
!=
ComPort
::
ComSpeed0
)
mbrtu
->
setSpeed
(
defSpeed
);
...
...
@@ -134,16 +134,16 @@ ModbusClient* RTUExchange::initMB( bool reopen )
}
catch
(
Exception
&
ex
)
{
if
(
mbrtu
)
delete
mbrtu
;
//
if( mbrtu )
//
delete mbrtu;
mbrtu
=
0
;
dwarn
<<
myname
<<
"(init): "
<<
ex
<<
endl
;
}
catch
(...)
{
if
(
mbrtu
)
delete
mbrtu
;
//
if( mbrtu )
//
delete mbrtu;
mbrtu
=
0
;
dinfo
<<
myname
<<
"(init): catch...."
<<
endl
;
...
...
extensions/ModbusMaster/RTUExchange.h
View file @
da6f393f
...
...
@@ -26,7 +26,7 @@ class RTUExchange:
static
void
help_print
(
int
argc
,
const
char
*
const
*
argv
);
protected
:
ModbusRTUMaster
*
mbrtu
;
std
::
shared_ptr
<
ModbusRTUMaster
>
mbrtu
;
UniSetTypes
::
uniset_mutex
mbMutex
;
std
::
string
devname
;
ComPort
::
Speed
defSpeed
;
...
...
@@ -36,7 +36,7 @@ class RTUExchange:
virtual
void
step
()
override
;
virtual
void
poll
()
override
;
virtual
ModbusClient
*
initMB
(
bool
reopen
=
false
)
override
;
virtual
std
::
shared_ptr
<
ModbusClient
>
initMB
(
bool
reopen
=
false
)
override
;
virtual
bool
initDeviceInfo
(
RTUDeviceMap
&
m
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
)
override
;
private
:
...
...
extensions/ModbusMaster/RTUStorage.cc
View file @
da6f393f
...
...
@@ -33,8 +33,7 @@ RTUStorage::~RTUStorage()
}
// -----------------------------------------------------------------------------
void
RTUStorage
::
poll
(
ModbusRTUMaster
*
mb
)
throw
(
ModbusRTU
::
mbException
)
void
RTUStorage
::
poll
(
const
std
::
shared_ptr
<
ModbusRTUMaster
>
mb
)
throw
(
ModbusRTU
::
mbException
)
{
try
{
...
...
extensions/ModbusMaster/RTUStorage.h
View file @
da6f393f
...
...
@@ -4,6 +4,7 @@
// -----------------------------------------------------------------------------
#include <ostream>
#include <string>
#include <memory>
#include "modbus/ModbusTypes.h"
#include "UniSetTypes.h"
// -----------------------------------------------------------------------------
...
...
@@ -15,7 +16,7 @@ class RTUStorage
RTUStorage
(
ModbusRTU
::
ModbusAddr
addr
);
~
RTUStorage
();
void
poll
(
ModbusRTUMaster
*
mb
)
void
poll
(
const
std
::
shared_ptr
<
ModbusRTUMaster
>
mb
)
throw
(
ModbusRTU
::
mbException
);
inline
ModbusRTU
::
ModbusAddr
getAddress
(){
return
addr
;
}
...
...
extensions/ModbusMaster/rtustate.cc
View file @
da6f393f
...
...
@@ -90,18 +90,18 @@ int main( int argc, char **argv )
<<
endl
;
}
ModbusRTUMaster
mb
(
dev
,
use485
);
std
::
shared_ptr
<
ModbusRTUMaster
>
mb
=
std
::
make_shared
<
ModbusRTUMaster
>
(
dev
,
use485
);
if
(
verb
)
dlog
.
addLevel
(
Debug
::
type
(
Debug
::
CRIT
|
Debug
::
WARN
|
Debug
::
INFO
)
);
mb
.
setTimeout
(
tout
);
mb
.
setSpeed
(
speed
);
mb
.
setLog
(
dlog
);
mb
->
setTimeout
(
tout
);
mb
->
setSpeed
(
speed
);
mb
->
setLog
(
dlog
);
RTUStorage
rtu
(
slaveaddr
);
rtu
.
poll
(
&
mb
);
rtu
.
poll
(
mb
);
cout
<<
rtu
<<
endl
;
for
(
unsigned
int
i
=
0
;
i
<
24
;
i
++
)
...
...
extensions/ModbusMaster/start_fg_mbtcpmulti.sh
View file @
da6f393f
#!/bin/sh
./uniset
2
-start.sh
-f
./uniset2-mbtcpmultimaster
\
./uniset-start.sh
-f
./uniset2-mbtcpmultimaster
\
--confile
test.xml
\
--mbtcp-name
MBMultiMaster1
\
--smemory-id
SharedMemory
\
...
...
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