diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html
index f00c03f..62b049c 100644
--- a/doc/picontrolserver.html
+++ b/doc/picontrolserver.html
@@ -66,6 +66,9 @@ Methods
check_connectedacl |
Prueft bei neuen ACLs bestehende Verbindungen. |
+| disconnect_all |
+Close all device connection. |
+
| newlogfile |
Konfiguriert die FileHandler auf neue Logdatei. |
@@ -104,6 +107,12 @@ RevPiSlave.check_connectedacl
check_connectedacl()
Prueft bei neuen ACLs bestehende Verbindungen.
+
+
+RevPiSlave.disconnect_all
+disconnect_all()
+
+Close all device connection.
RevPiSlave.newlogfile
diff --git a/eric-revpipyload.api b/eric-revpipyload.api
index 2d43877..87afb45 100644
--- a/eric-revpipyload.api
+++ b/eric-revpipyload.api
@@ -33,6 +33,7 @@ mqttserver.__author__?9
mqttserver.__copyright__?9
mqttserver.__license__?9
picontrolserver.RevPiSlave.check_connectedacl?4()
+picontrolserver.RevPiSlave.disconnect_all?4()
picontrolserver.RevPiSlave.newlogfile?4()
picontrolserver.RevPiSlave.run?4()
picontrolserver.RevPiSlave.stop?4()
diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py
index ee91af0..1a2caaa 100644
--- a/revpipyload/picontrolserver.py
+++ b/revpipyload/picontrolserver.py
@@ -70,6 +70,12 @@ class RevPiSlave(Thread):
)
dev._acl = level
+ def disconnect_all(self):
+ """Close all device connection."""
+ # Alle Threads beenden
+ for th in self._th_dev:
+ th.stop()
+
def newlogfile(self):
"""Konfiguriert die FileHandler auf neue Logdatei."""
pass
@@ -80,6 +86,7 @@ class RevPiSlave(Thread):
# Socket öffnen und konfigurieren bis Erfolg oder Ende
self.so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.so.settimeout(2)
while not self._evt_exit.is_set():
try:
self.so.bind((self._bindip, self._port))
@@ -97,9 +104,11 @@ class RevPiSlave(Thread):
self.exitcode = -1
# Verbindung annehmen
- proginit.logger.info("accept new connection for revpinetio")
try:
tup_sock = self.so.accept()
+ proginit.logger.info("accepted new connection for revpinetio")
+ except socket.timeout:
+ continue
except Exception:
if not self._evt_exit.is_set():
proginit.logger.exception("accept exception")
diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py
index a6058a1..1966b34 100755
--- a/revpipyload/revpipyload.py
+++ b/revpipyload/revpipyload.py
@@ -750,8 +750,8 @@ class RevPiPyLoad():
if self.mqtt and self.th_plcmqtt is not None:
self.th_plcmqtt.reload_revpimodio()
- # ProcImgServer anhalten zum neu laden
- self.stop_plcslave()
+ # Alle Verbindungen von ProcImgServer trennen
+ self.th_plcslave.disconnect_all()
# XML Prozessabbildserver neu laden
if self.xml_ps is not None: