plcarguments können an Python Programm übergeben werden

This commit is contained in:
2017-03-20 13:22:53 +01:00
parent 87bfccbf03
commit 8d195b054e
4 changed files with 21 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ autoreload=1
autostart=1 autostart=1
plcworkdir=/var/lib/revpipyload plcworkdir=/var/lib/revpipyload
plcprogram=program.py plcprogram=program.py
plcarguments=
plcuid=1000 plcuid=1000
plcgid=1000 plcgid=1000
plcslave=0 plcslave=0

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-03-16, 10:59:23 --> <!-- Saved: 2017-03-20, 11:43:28 -->
<!-- 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>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage> <ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType> <ProjectType>Console</ProjectType>
<Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description> <Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description>
<Version>0.2.7</Version> <Version>0.2.8</Version>
<Author>Sven Sager</Author> <Author>Sven Sager</Author>
<Email>akira@narux.de</Email> <Email>akira@narux.de</Email>
<Eol index="-1"/> <Eol index="-1"/>

View File

@@ -51,7 +51,7 @@ from xmlrpc.server import SimpleXMLRPCServer
configrsc = "/opt/KUNBUS/config.rsc" configrsc = "/opt/KUNBUS/config.rsc"
picontrolreset = "/opt/KUNBUS/piControlReset" picontrolreset = "/opt/KUNBUS/piControlReset"
procimg = "/dev/piControl0" procimg = "/dev/piControl0"
pyloadverion = "0.2.7" pyloadverion = "0.2.8"
class LogReader(): class LogReader():
@@ -163,10 +163,11 @@ class RevPiPlc(Thread):
""" """
def __init__(self, program, pversion): def __init__(self, program, arguments, pversion):
"""Instantiiert RevPiPlc-Klasse.""" """Instantiiert RevPiPlc-Klasse."""
super().__init__() super().__init__()
self.autoreload = False self.autoreload = False
self._arguments = arguments
self._evt_exit = Event() self._evt_exit = Event()
self.exitcode = None self.exitcode = None
self._fh = None self._fh = None
@@ -205,9 +206,13 @@ class RevPiPlc(Thread):
def run(self): def run(self):
"""Fuehrt PLC-Programm aus und ueberwacht es.""" """Fuehrt PLC-Programm aus und ueberwacht es."""
if self._pversion == 2: if self._pversion == 2:
lst_proc = shlex.split("/usr/bin/env python2 -u " + self._program) lst_proc = shlex.split("/usr/bin/env python2 -u {} {}".format(
self._program, self._arguments
))
else: else:
lst_proc = shlex.split("/usr/bin/env python3 -u " + self._program) lst_proc = shlex.split("/usr/bin/env python3 -u {} {}".format(
self._program, self._arguments
))
# Ausgaben konfigurieren und ggf. umleiten # Ausgaben konfigurieren und ggf. umleiten
logfile = None logfile = None
@@ -359,6 +364,8 @@ class RevPiPyLoad(proginit.ProgInit):
int(self.globalconfig["DEFAULT"].get("autostart", 0)) int(self.globalconfig["DEFAULT"].get("autostart", 0))
self.plcprog = \ self.plcprog = \
self.globalconfig["DEFAULT"].get("plcprogram", "none.py") self.globalconfig["DEFAULT"].get("plcprogram", "none.py")
self.plcarguments = \
self.globalconfig["DEFAULT"].get("plcarguments", "")
self.plcworkdir = \ self.plcworkdir = \
self.globalconfig["DEFAULT"].get("plcworkdir", ".") self.globalconfig["DEFAULT"].get("plcworkdir", ".")
self.plcslave = \ self.plcslave = \
@@ -449,7 +456,10 @@ class RevPiPyLoad(proginit.ProgInit):
proginit.logger.debug("create PLC watcher") proginit.logger.debug("create PLC watcher")
th_plc = RevPiPlc( th_plc = RevPiPlc(
os.path.join(self.plcworkdir, self.plcprog), self.pythonver) os.path.join(self.plcworkdir, self.plcprog),
self.plcarguments,
self.pythonver
)
th_plc.autoreload = self.autoreload th_plc.autoreload = self.autoreload
th_plc.gid = int(self.globalconfig["DEFAULT"].get("plcgid", 65534)) th_plc.gid = int(self.globalconfig["DEFAULT"].get("plcgid", 65534))
th_plc.uid = int(self.globalconfig["DEFAULT"].get("plcuid", 65534)) th_plc.uid = int(self.globalconfig["DEFAULT"].get("plcuid", 65534))
@@ -561,6 +571,7 @@ class RevPiPyLoad(proginit.ProgInit):
dc["autostart"] = self.autostart dc["autostart"] = self.autostart
dc["plcworkdir"] = self.plcworkdir dc["plcworkdir"] = self.plcworkdir
dc["plcprogram"] = self.plcprog dc["plcprogram"] = self.plcprog
dc["plcarguments"] = self.plcarguments
dc["plcslave"] = self.plcslave dc["plcslave"] = self.plcslave
dc["pythonversion"] = self.pythonver dc["pythonversion"] = self.pythonver
dc["xmlrpc"] = self.xmlrpc dc["xmlrpc"] = self.xmlrpc
@@ -727,6 +738,7 @@ class RevPiPyLoad(proginit.ProgInit):
"autoreload": "[01]", "autoreload": "[01]",
"autostart": "[01]", "autostart": "[01]",
"plcprogram": ".+", "plcprogram": ".+",
"plcarguments": ".*",
"plcslave": "[01]", "plcslave": "[01]",
"pythonversion": "[23]", "pythonversion": "[23]",
"xmlrpc": "[0-3]", "xmlrpc": "[0-3]",

View File

@@ -27,7 +27,7 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpipyload", name="revpipyload",
version="0.2.7", version="0.2.8",
scripts=["data/revpipyload"], scripts=["data/revpipyload"],