diff --git a/doc/revpimodio2.device.html b/doc/revpimodio2.device.html
index 278215b..5ca0a6f 100644
--- a/doc/revpimodio2.device.html
+++ b/doc/revpimodio2.device.html
@@ -788,13 +788,16 @@ True, wenn Device vorhanden
DeviceList.__delattr__
-__delattr__(key)
+__delattr__(key, delcomplete=True)
Entfernt angegebenes Device.
- key
-
Device zum entfernen
+
- delcomplete
+-
+Wenn True wird Device komplett entfernt
diff --git a/revpimodio2.e4p b/revpimodio2.e4p
index 0d6bbb2..69e2cb4 100644
--- a/revpimodio2.e4p
+++ b/revpimodio2.e4p
@@ -1,7 +1,7 @@
-
+
en_US
@@ -354,7 +354,7 @@
ExcludeFiles
- */test/*,*/setup.py
+ */test/*,*/setup.py,*/test_unit.py
diff --git a/revpimodio2/device.py b/revpimodio2/device.py
index e039eec..11a0ea1 100644
--- a/revpimodio2/device.py
+++ b/revpimodio2/device.py
@@ -29,23 +29,35 @@ class DeviceList(object):
else:
return key in self.__dict_position.values()
- def __delattr__(self, key):
+ def __delattr__(self, key, delcomplete=True):
"""Entfernt angegebenes Device.
- @param key Device zum entfernen"""
- dev_del = getattr(self, key)
+ @param key Device zum entfernen
+ @param delcomplete Wenn True wird Device komplett entfernt"""
+ if delcomplete:
+ # Device finden
+ if type(key) == int:
+ dev_del = self.__dict_position[key]
+ key = dev_del._name
+ else:
+ dev_del = getattr(self, key)
- # Reinigungsjobs
- dev_del.autorefresh(False)
- for io in dev_del:
- delattr(dev_del._modio.io, io._name)
+ # Reinigungsjobs
+ dev_del.autorefresh(False)
+ for io in dev_del:
+ delattr(dev_del._modio.io, io._name)
- del self.__dict_position[dev_del._position]
- object.__delattr__(self, key)
+ # Device aus dict löschen
+ del self.__dict_position[dev_del._position]
+
+ if hasattr(self, key):
+ object.__delattr__(self, key)
def __delitem__(self, key):
"""Entfernt Device an angegebener Position.
@param key Deviceposition zum entfernen"""
- self.__delattr__(self[key]._name)
+ if issubclass(type(key), Device):
+ key = key._position
+ self.__delattr__(key)
def __getitem__(self, key):
"""Gibt angegebenes Device zurueck.
diff --git a/revpimodio2/io.py b/revpimodio2/io.py
index 833e9de..c7a6a0f 100644
--- a/revpimodio2/io.py
+++ b/revpimodio2/io.py
@@ -674,7 +674,19 @@ class IOBase(object):
self._parentdevice._position, self._parentdevice._name
)
)
-
+ if not (RISING <= edge <= BOTH):
+ raise AttributeError(
+ "parameter 'edge' must be revpimodio2.RISING, "
+ "revpimodio2.FALLING or revpimodio2.BOTH"
+ )
+ if not (exitevent is None or type(exitevent) == Event):
+ raise AttributeError(
+ "parameter 'exitevent' must be "
+ )
+ if type(timeout) != int or timeout < 0:
+ raise AttributeError(
+ "parameter 'timeout' must be and greater than 0"
+ )
if edge != BOTH and self._bitaddress < 0:
raise AttributeError(
"parameter 'edge' can be used with bit Inputs only"
diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py
index 8b60ea4..8aba70e 100644
--- a/revpimodio2/modio.py
+++ b/revpimodio2/modio.py
@@ -172,7 +172,7 @@ class RevPiModIO(object):
else:
# Device-Type nicht gefunden
warnings.warn(
- "device type {} unknown",
+ "device type '{}' unknown".format(device["type"]),
Warning
)
dev_new = None
@@ -193,7 +193,7 @@ class RevPiModIO(object):
# Namenszugriff zerstören, wenn doppelte Namen vorhanden sind
for errdev in err_names:
- delattr(self.device, errdev)
+ self.device.__delattr__(errdev, False)
warnings.warn(
"equal device name in pictory configuration. can not "
"build device to access by name. you can access all devices "
@@ -364,6 +364,7 @@ class RevPiModIO(object):
self._imgwriter.refresh = cycletime
# Cycleloop starten
+ self._exit.clear()
self._looprunning = True
cycleinfo = helpermodule.Cycletools(self._imgwriter.refresh)
ec = None