diff --git a/doc/revpimodio2.device.html b/doc/revpimodio2.device.html
index 0753f3b..7927204 100644
--- a/doc/revpimodio2.device.html
+++ b/doc/revpimodio2.device.html
@@ -106,6 +106,9 @@ Class Methods
Methods
+| __setattr__ |
+Verhindert Ueberschreibung der LEDs. |
+
| __wdtoggle |
WD Ausgang alle 10 Sekunden automatisch toggeln. |
@@ -130,7 +133,13 @@ Static Methods
-
+
+
+Connect.__setattr__
+__setattr__(key, value)
+
+Verhindert Ueberschreibung der LEDs.
+
Connect.__wdtoggle
__wdtoggle()
@@ -227,6 +236,9 @@ Methods
__errorlimit |
Verwaltet das Schreiben der ErrorLimits. |
+| __setattr__ |
+Verhindert Ueberschreibung der LEDs. |
+
| _devconfigure |
Core-Klasse vorbereiten. |
@@ -306,7 +318,13 @@ Byte Slice vom ErrorLimit
Aktuellen ErrorLimit oder None wenn nicht verfuegbar
-
+
+
+Core.__setattr__
+__setattr__(key, value)
+
+Verhindert Ueberschreibung der LEDs.
+
Core._devconfigure
_devconfigure()
diff --git a/revpimodio2/device.py b/revpimodio2/device.py
index a668c62..d87e4e7 100644
--- a/revpimodio2/device.py
+++ b/revpimodio2/device.py
@@ -494,6 +494,16 @@ class Core(Base):
"_slc_temperature", "_slc_errorlimit1", "_slc_errorlimit2", \
"_slc_frequency", "_slc_led", "a1green", "a1red", "a2green", "a2red"
+ def __setattr__(self, key, value):
+ """Verhindert Ueberschreibung der LEDs."""
+ if hasattr(self, key) and key in (
+ "a1green", "a1red", "a2green", "a2red"):
+ raise AttributeError(
+ "direct assignment is not supported - use .value Attribute"
+ )
+ else:
+ object.__setattr__(self, key, value)
+
def _devconfigure(self):
"""Core-Klasse vorbereiten."""
@@ -767,6 +777,17 @@ class Connect(Core):
__slots__ = "__evt_wdtoggle", "__th_wdtoggle", "a3green", "a3red", "wd", \
"x2in", "x2out"
+ def __setattr__(self, key, value):
+ """Verhindert Ueberschreibung der LEDs."""
+ if hasattr(self, key) and key in (
+ "a1green", "a1red", "a2green", "a2red", "a3green", "a3red",
+ "wd", "x2in", "x2out"):
+ raise AttributeError(
+ "direct assignment is not supported - use .value Attribute"
+ )
+ else:
+ object.__setattr__(self, key, value)
+
def __wdtoggle(self):
"""WD Ausgang alle 10 Sekunden automatisch toggeln."""
while not self.__evt_wdtoggle.wait(10):
diff --git a/revpimodio2/helper.py b/revpimodio2/helper.py
index abb8bcc..ab00e1b 100644
--- a/revpimodio2/helper.py
+++ b/revpimodio2/helper.py
@@ -351,12 +351,13 @@ class ProcimgWriter(Thread):
)
else:
# Verzögertes Event in dict einfügen
- tupfire = (
- regfunc, io_event._name, io_event.value
+ tup_fire = (
+ regfunc, io_event._name, io_event.value,
+ io_event,
)
if regfunc.overwrite \
- or tupfire not in self.__dict_delay:
- self.__dict_delay[tupfire] = ceil(
+ or tup_fire not in self.__dict_delay:
+ self.__dict_delay[tup_fire] = ceil(
regfunc.delay / 1000 / self._refresh
)
else:
@@ -374,12 +375,13 @@ class ProcimgWriter(Thread):
)
else:
# Verzögertes Event in dict einfügen
- tupfire = (
- regfunc, io_event._name, io_event.value
+ tup_fire = (
+ regfunc, io_event._name, io_event.value,
+ io_event,
)
if regfunc.overwrite \
- or tupfire not in self.__dict_delay:
- self.__dict_delay[tupfire] = ceil(
+ or tup_fire not in self.__dict_delay:
+ self.__dict_delay[tup_fire] = ceil(
regfunc.delay / 1000 / self._refresh
)
@@ -525,8 +527,7 @@ class ProcimgWriter(Thread):
if self.__eventwork:
for tup_fire in tuple(self.__dict_delay.keys()):
if tup_fire[0].overwrite and \
- getattr(self._modio.io, tup_fire[1]).value != \
- tup_fire[2]:
+ tup_fire[3].value != tup_fire[2]:
del self.__dict_delay[tup_fire]
else:
self.__dict_delay[tup_fire] -= 1
diff --git a/revpimodio2/netio.py b/revpimodio2/netio.py
index d307d3d..ea00e8d 100644
--- a/revpimodio2/netio.py
+++ b/revpimodio2/netio.py
@@ -164,11 +164,12 @@ class NetFH(Thread):
# Hashwerte empfangen
byte_buff = bytearray()
zero_byte = 0
- while not self.__sockend.is_set() and zero_byte < 100 \
- and len(byte_buff) < recv_len:
+ while not self.__sockend.is_set() and len(byte_buff) < recv_len:
data = so.recv(recv_len)
if data == b'':
zero_byte += 1
+ if zero_byte == 100:
+ raise OSError("too many zero bytes on hash load")
byte_buff += data
# Änderung an piCtory prüfen