ProcimgServer.loadrevpimodio() erstellt um Veränderungen an piCtory zu laden

RevPiPyLoad prüft Änderungsdatum von piCtory und beendet ggf. ProcimgServer
This commit is contained in:
2017-07-02 22:16:34 +02:00
parent abb2cb9512
commit 029dda5f1a
6 changed files with 68 additions and 17 deletions

26
doc/index.html Normal file
View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html><head>
<title>Table of contents</title>
<meta charset="UTF-8">
</head>
<body style="background-color:#FFFFFF;color:#000000">
<h1 style="background-color:#FFFFFF;color:#0000FF">
Table of contents</h1>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Modules</h3>
<table>
<tr>
<td><a style="color:#0000FF" href="procimgserver.html">procimgserver</a></td>
<td>Stellt Funktionen bereit um das Prozessabbild zu ueberwachen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="proginit.html">proginit</a></td>
<td>Main functions of our program.</td>
</tr><tr>
<td><a style="color:#0000FF" href="revpipyload.html">revpipyload</a></td>
<td>Revolution Pi Python PLC Loader.</td>
</tr>
</table>
</body></html>

View File

@@ -69,6 +69,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#ProcimgServer.ios">ios</a></td> <td><a style="color:#0000FF" href="#ProcimgServer.ios">ios</a></td>
<td>Generiert ein dict() der Devices und IOs.</td> <td>Generiert ein dict() der Devices und IOs.</td>
</tr><tr> </tr><tr>
<td><a style="color:#0000FF" href="#ProcimgServer.loadrevpimodio">loadrevpimodio</a></td>
<td>Instantiiert das RevPiModIO Modul.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#ProcimgServer.setvalue">setvalue</a></td> <td><a style="color:#0000FF" href="#ProcimgServer.setvalue">setvalue</a></td>
<td>Setzt einen Wert auf dem RevPi.</td> <td>Setzt einen Wert auf dem RevPi.</td>
</tr><tr> </tr><tr>
@@ -137,7 +140,13 @@ IO Typ inp/out
<dd> <dd>
pickled dict() pickled dict()
</dd> </dd>
</dl><a NAME="ProcimgServer.setvalue" ID="ProcimgServer.setvalue"></a> </dl><a NAME="ProcimgServer.loadrevpimodio" ID="ProcimgServer.loadrevpimodio"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
ProcimgServer.loadrevpimodio</h3>
<b>loadrevpimodio</b>(<i></i>)
<p>
Instantiiert das RevPiModIO Modul.
</p><a NAME="ProcimgServer.setvalue" ID="ProcimgServer.setvalue"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
ProcimgServer.setvalue</h3> ProcimgServer.setvalue</h3>
<b>setvalue</b>(<i>device, io, value</i>) <b>setvalue</b>(<i>device, io, value</i>)

View File

@@ -1,5 +1,6 @@
procimgserver.ProcimgServer.devices?4() procimgserver.ProcimgServer.devices?4()
procimgserver.ProcimgServer.ios?4(type) procimgserver.ProcimgServer.ios?4(type)
procimgserver.ProcimgServer.loadrevpimodio?4()
procimgserver.ProcimgServer.setvalue?4(device, io, value) procimgserver.ProcimgServer.setvalue?4(device, io, value)
procimgserver.ProcimgServer.start?4() procimgserver.ProcimgServer.start?4()
procimgserver.ProcimgServer.stop?4() procimgserver.ProcimgServer.stop?4()

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpipyload --> <!-- eric project file for project revpipyload -->
<!-- Saved: 2017-06-29, 17:52:43 --> <!-- Saved: 2017-07-02, 21:15:03 -->
<!-- Copyright (C) 2017 Sven Sager, akira@narux.de --> <!-- Copyright (C) 2017 Sven Sager, akira@narux.de -->
<Project version="5.1"> <Project version="5.1">
<Language>en_US</Language> <Language>en_US</Language>
@@ -212,12 +212,6 @@
<string>setup.py</string> <string>setup.py</string>
</list> </list>
</value> </value>
<key>
<string>noindex</string>
</key>
<value>
<bool>True</bool>
</value>
<key> <key>
<string>outputDirectory</string> <string>outputDirectory</string>
</key> </key>

View File

@@ -41,6 +41,9 @@ class ProcimgServer():
self.logger = logger self.logger = logger
self.logger.debug("enter ProcimgServer.__init__()") self.logger.debug("enter ProcimgServer.__init__()")
self.acl = aclmode self.acl = aclmode
self.configrsc = configrsc
self.procimg = procimg
self.rpi = None
# XML-Server übernehmen # XML-Server übernehmen
self.xmlsrv = xmlserver self.xmlsrv = xmlserver
@@ -55,14 +58,7 @@ class ProcimgServer():
"ps_setvalue": self.setvalue, "ps_setvalue": self.setvalue,
} }
# RevPiModIO-Modul Instantiieren self.loadrevpimodio()
self.logger.debug("create revpimodio class")
self.rpi = revpimodio.RevPiModIO(
configrsc=configrsc,
procimg=procimg,
)
self.rpi.devices.syncoutputs(device=0)
self.logger.debug("created revpimodio class")
self.logger.debug("leave ProcimgServer.__init__()") self.logger.debug("leave ProcimgServer.__init__()")
@@ -101,6 +97,20 @@ class ProcimgServer():
]) ])
return Binary(pickle.dumps(dict_ios)) return Binary(pickle.dumps(dict_ios))
def loadrevpimodio(self):
"""Instantiiert das RevPiModIO Modul."""
# RevPiModIO-Modul Instantiieren
if self.rpi is not None:
self.rpi.cleanup()
self.logger.debug("create revpimodio class")
self.rpi = revpimodio.RevPiModIO(
configrsc=self.configrsc,
procimg=self.procimg,
)
self.rpi.devices.syncoutputs(device=0)
self.logger.debug("created revpimodio class")
def setvalue(self, device, io, value): def setvalue(self, device, io, value):
"""Setzt einen Wert auf dem RevPi. """Setzt einen Wert auf dem RevPi.

View File

@@ -477,6 +477,7 @@ class RevPiPyLoad():
# Klassenattribute # Klassenattribute
self._exit = True self._exit = True
self.pictorymtime = os.path.getmtime(configrsc)
self.evt_loadconfig = Event() self.evt_loadconfig = Event()
self.globalconfig = ConfigParser() self.globalconfig = ConfigParser()
self.logr = LogReader() self.logr = LogReader()
@@ -580,7 +581,7 @@ class RevPiPyLoad():
self.xml_ps = None self.xml_ps = None
proginit.logger.warning( proginit.logger.warning(
"can not load revpimodio module. maybe its not installed " "can not load revpimodio module. maybe its not installed "
"or an old version (required at least 0.11.0). if you " "or an old version (required at least 0.15.0). if you "
"like to use the process monitor feature, update/install " "like to use the process monitor feature, update/install "
"revpimodio: 'apt-get install python3-revpimodio'" "revpimodio: 'apt-get install python3-revpimodio'"
) )
@@ -751,6 +752,16 @@ class RevPiPyLoad():
while not self._exit \ while not self._exit \
and not self.evt_loadconfig.is_set(): and not self.evt_loadconfig.is_set():
# piCtory auf Veränderung prüfen
if self.pictorymtime != os.path.getmtime(configrsc):
proginit.logger.warning("piCtory configuration was changed")
self.pictorymtime = os.path.getmtime(configrsc)
if self.xml_ps is not None:
self.xml_psstop()
self.xml_ps.loadrevpimodio()
self.evt_loadconfig.wait(1) self.evt_loadconfig.wait(1)
if not self._exit: if not self._exit: