Übertragung der replace_io über das Netzwerk begonnen

This commit is contained in:
2019-08-07 12:05:30 +02:00
parent 89f29b0496
commit 80c2550739
6 changed files with 34 additions and 3 deletions

View File

@@ -11,7 +11,6 @@ from threading import Event, Thread
from timeit import default_timer
# NOTE: Sollte dies als Process ausgeführt werden?
class RevPiSlave(Thread):
"""RevPi PLC-Server.
@@ -386,6 +385,29 @@ class RevPiSlaveDev(Thread):
# End-of-Transmission character immer senden
self._devcon.send(b'\x04')
elif cmd == b'RP':
# piCtory Konfiguration senden
proginit.logger.debug(
"transfair replace_io configuration: {0}"
"".format(proginit.pargs.configrsc)
)
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", None)
try:
if replace_ios:
with open(replace_ios, "rb") as fh:
# Komplette piCtory Datei senden
self._devcon.sendall(fh.read())
except Exception as e:
proginit.logger.error(
"error on replace_io transfair: {0}".format(e)
)
break
else:
continue
finally:
# End-of-Transmission character immer senden
self._devcon.send(b'\x04')
elif cmd == b'EX':
# Sauber Verbindung verlassen
dirty = False
@@ -407,6 +429,7 @@ class RevPiSlaveDev(Thread):
break
try:
# FIXME: IOCTL für Dateien implementieren
if proginit.pargs.procimg == "/dev/piControl0":
# Läuft auf RevPi
ioctl(fh_proc, request, arg)

View File

@@ -7,7 +7,9 @@ import logging
import os
import sys
from argparse import ArgumentParser
from configparser import ConfigParser
conf = ConfigParser()
forked = False
globalconffile = None
logapp = "revpipyloadapp.log"

View File

@@ -71,6 +71,7 @@ class RevPiPyLoad():
self.replaceiosmtime = 0
self.evt_loadconfig = Event()
self.globalconfig = ConfigParser()
proginit.conf = self.globalconfig
self.logr = logsystem.LogReader()
self.xsrv = None
self.xml_ps = None
@@ -197,6 +198,7 @@ class RevPiPyLoad():
"loading config file: {0}".format(proginit.globalconffile)
)
self.globalconfig.read(proginit.globalconffile)
proginit.conf = self.globalconfig
# Merker für Subsystem-Neustart nach laden, vor setzen
restart_plcmqtt = self._check_mustrestart_mqtt()
@@ -706,6 +708,8 @@ class RevPiPyLoad():
if self.mqtt and self.th_plcmqtt is not None:
self.th_plcmqtt.reload_revpimodio()
# FIXME: ProcImgServer muss alle Verbindungen vernichten
# XML Prozessabbildserver neu laden
if self.xml_ps is not None:
self.xml_psstop()
@@ -1085,6 +1089,7 @@ class RevPiPyLoad():
# conf-Datei schreiben
with open(proginit.globalconffile, "w") as fh:
self.globalconfig.write(fh)
proginit.conf = self.globalconfig
proginit.logger.info(
"got new config and wrote it to {0}"
"".format(proginit.globalconffile)