mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
cycleloop säubert das _exit-Event
.wait Parameterprüfung eingebaut Fehler im Devicehandling bei doppelten Namen behoben
This commit is contained in:
@@ -788,13 +788,16 @@ True, wenn Device vorhanden
|
|||||||
</dl><a NAME="DeviceList.__delattr__" ID="DeviceList.__delattr__"></a>
|
</dl><a NAME="DeviceList.__delattr__" ID="DeviceList.__delattr__"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
DeviceList.__delattr__</h3>
|
DeviceList.__delattr__</h3>
|
||||||
<b>__delattr__</b>(<i>key</i>)
|
<b>__delattr__</b>(<i>key, delcomplete=True</i>)
|
||||||
<p>
|
<p>
|
||||||
Entfernt angegebenes Device.
|
Entfernt angegebenes Device.
|
||||||
</p><dl>
|
</p><dl>
|
||||||
<dt><i>key</i></dt>
|
<dt><i>key</i></dt>
|
||||||
<dd>
|
<dd>
|
||||||
Device zum entfernen
|
Device zum entfernen
|
||||||
|
</dd><dt><i>delcomplete</i></dt>
|
||||||
|
<dd>
|
||||||
|
Wenn True wird Device komplett entfernt
|
||||||
</dd>
|
</dd>
|
||||||
</dl><a NAME="DeviceList.__delitem__" ID="DeviceList.__delitem__"></a>
|
</dl><a NAME="DeviceList.__delitem__" ID="DeviceList.__delitem__"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
|||||||
@@ -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 revpimodio2 -->
|
<!-- eric project file for project revpimodio2 -->
|
||||||
<!-- Saved: 2017-11-01, 15:30:36 -->
|
<!-- Saved: 2017-11-02, 13:54:10 -->
|
||||||
<!-- 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>
|
||||||
@@ -354,7 +354,7 @@
|
|||||||
<string>ExcludeFiles</string>
|
<string>ExcludeFiles</string>
|
||||||
</key>
|
</key>
|
||||||
<value>
|
<value>
|
||||||
<string>*/test/*,*/setup.py</string>
|
<string>*/test/*,*/setup.py,*/test_unit.py</string>
|
||||||
</value>
|
</value>
|
||||||
</dict>
|
</dict>
|
||||||
</value>
|
</value>
|
||||||
|
|||||||
@@ -29,23 +29,35 @@ class DeviceList(object):
|
|||||||
else:
|
else:
|
||||||
return key in self.__dict_position.values()
|
return key in self.__dict_position.values()
|
||||||
|
|
||||||
def __delattr__(self, key):
|
def __delattr__(self, key, delcomplete=True):
|
||||||
"""Entfernt angegebenes Device.
|
"""Entfernt angegebenes Device.
|
||||||
@param key Device zum entfernen"""
|
@param key Device zum entfernen
|
||||||
dev_del = getattr(self, key)
|
@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
|
# Reinigungsjobs
|
||||||
dev_del.autorefresh(False)
|
dev_del.autorefresh(False)
|
||||||
for io in dev_del:
|
for io in dev_del:
|
||||||
delattr(dev_del._modio.io, io._name)
|
delattr(dev_del._modio.io, io._name)
|
||||||
|
|
||||||
del self.__dict_position[dev_del._position]
|
# Device aus dict löschen
|
||||||
object.__delattr__(self, key)
|
del self.__dict_position[dev_del._position]
|
||||||
|
|
||||||
|
if hasattr(self, key):
|
||||||
|
object.__delattr__(self, key)
|
||||||
|
|
||||||
def __delitem__(self, key):
|
def __delitem__(self, key):
|
||||||
"""Entfernt Device an angegebener Position.
|
"""Entfernt Device an angegebener Position.
|
||||||
@param key Deviceposition zum entfernen"""
|
@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):
|
def __getitem__(self, key):
|
||||||
"""Gibt angegebenes Device zurueck.
|
"""Gibt angegebenes Device zurueck.
|
||||||
|
|||||||
@@ -674,7 +674,19 @@ class IOBase(object):
|
|||||||
self._parentdevice._position, self._parentdevice._name
|
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 <class 'threading.Event'>"
|
||||||
|
)
|
||||||
|
if type(timeout) != int or timeout < 0:
|
||||||
|
raise AttributeError(
|
||||||
|
"parameter 'timeout' must be <class 'int'> and greater than 0"
|
||||||
|
)
|
||||||
if edge != BOTH and self._bitaddress < 0:
|
if edge != BOTH and self._bitaddress < 0:
|
||||||
raise AttributeError(
|
raise AttributeError(
|
||||||
"parameter 'edge' can be used with bit Inputs only"
|
"parameter 'edge' can be used with bit Inputs only"
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ class RevPiModIO(object):
|
|||||||
else:
|
else:
|
||||||
# Device-Type nicht gefunden
|
# Device-Type nicht gefunden
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"device type {} unknown",
|
"device type '{}' unknown".format(device["type"]),
|
||||||
Warning
|
Warning
|
||||||
)
|
)
|
||||||
dev_new = None
|
dev_new = None
|
||||||
@@ -193,7 +193,7 @@ class RevPiModIO(object):
|
|||||||
|
|
||||||
# Namenszugriff zerstören, wenn doppelte Namen vorhanden sind
|
# Namenszugriff zerstören, wenn doppelte Namen vorhanden sind
|
||||||
for errdev in err_names:
|
for errdev in err_names:
|
||||||
delattr(self.device, errdev)
|
self.device.__delattr__(errdev, False)
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"equal device name in pictory configuration. can not "
|
"equal device name in pictory configuration. can not "
|
||||||
"build device to access by name. you can access all devices "
|
"build device to access by name. you can access all devices "
|
||||||
@@ -364,6 +364,7 @@ class RevPiModIO(object):
|
|||||||
self._imgwriter.refresh = cycletime
|
self._imgwriter.refresh = cycletime
|
||||||
|
|
||||||
# Cycleloop starten
|
# Cycleloop starten
|
||||||
|
self._exit.clear()
|
||||||
self._looprunning = True
|
self._looprunning = True
|
||||||
cycleinfo = helpermodule.Cycletools(self._imgwriter.refresh)
|
cycleinfo = helpermodule.Cycletools(self._imgwriter.refresh)
|
||||||
ec = None
|
ec = None
|
||||||
|
|||||||
Reference in New Issue
Block a user