mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
Warnmeldungen überarbeitet
Warnungen erscheinen nur ein Mal, wenn debug=False ist Filter für Warnungen werden nur für RevPiModIO verändert
This commit is contained in:
@@ -122,6 +122,9 @@ Methods</h3>
|
|||||||
<td><a style="color:#0000FF" href="#RevPiModIO._set_cycletime">_set_cycletime</a></td>
|
<td><a style="color:#0000FF" href="#RevPiModIO._set_cycletime">_set_cycletime</a></td>
|
||||||
<td>Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.</td>
|
<td>Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#RevPiModIO._set_debug">_set_debug</a></td>
|
||||||
|
<td>Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.</td>
|
||||||
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#RevPiModIO._set_maxioerrors">_set_maxioerrors</a></td>
|
<td><a style="color:#0000FF" href="#RevPiModIO._set_maxioerrors">_set_maxioerrors</a></td>
|
||||||
<td>Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.</td>
|
<td>Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
@@ -407,6 +410,17 @@ Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
|
|||||||
<dd>
|
<dd>
|
||||||
<class 'int'> in Millisekunden
|
<class 'int'> in Millisekunden
|
||||||
</dd>
|
</dd>
|
||||||
|
</dl><a NAME="RevPiModIO._set_debug" ID="RevPiModIO._set_debug"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
RevPiModIO._set_debug</h3>
|
||||||
|
<b>_set_debug</b>(<i>value</i>)
|
||||||
|
<p>
|
||||||
|
Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.
|
||||||
|
</p><dl>
|
||||||
|
<dt><i>value</i></dt>
|
||||||
|
<dd>
|
||||||
|
Wenn True, werden umfangreiche Medungen angezeigt
|
||||||
|
</dd>
|
||||||
</dl><a NAME="RevPiModIO._set_maxioerrors" ID="RevPiModIO._set_maxioerrors"></a>
|
</dl><a NAME="RevPiModIO._set_maxioerrors" ID="RevPiModIO._set_maxioerrors"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
RevPiModIO._set_maxioerrors</h3>
|
RevPiModIO._set_maxioerrors</h3>
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ revpimodio2.modio.RevPiModIO._get_replace_io_file?5()
|
|||||||
revpimodio2.modio.RevPiModIO._get_simulator?5()
|
revpimodio2.modio.RevPiModIO._get_simulator?5()
|
||||||
revpimodio2.modio.RevPiModIO._gotioerror?5(action, e=None)
|
revpimodio2.modio.RevPiModIO._gotioerror?5(action, e=None)
|
||||||
revpimodio2.modio.RevPiModIO._set_cycletime?5(milliseconds)
|
revpimodio2.modio.RevPiModIO._set_cycletime?5(milliseconds)
|
||||||
|
revpimodio2.modio.RevPiModIO._set_debug?5(value)
|
||||||
revpimodio2.modio.RevPiModIO._set_maxioerrors?5(value)
|
revpimodio2.modio.RevPiModIO._set_maxioerrors?5(value)
|
||||||
revpimodio2.modio.RevPiModIO._simulate_ioctl?5(request, arg=b'')
|
revpimodio2.modio.RevPiModIO._simulate_ioctl?5(request, arg=b'')
|
||||||
revpimodio2.modio.RevPiModIO.autorefresh_all?4()
|
revpimodio2.modio.RevPiModIO.autorefresh_all?4()
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ Auf alle IOs kann der Benutzer Funktionen als Events registrieren. Diese
|
|||||||
fuehrt das Modul bei Datenaenderung aus.
|
fuehrt das Modul bei Datenaenderung aus.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import warnings
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"RevPiModIO", "RevPiModIOSelected", "RevPiModIODriver",
|
"RevPiModIO", "RevPiModIOSelected", "RevPiModIODriver",
|
||||||
"RevPiNetIO", "RevPiNetIOSelected", "RevPiNetIODriver"
|
"RevPiNetIO", "RevPiNetIOSelected", "RevPiNetIODriver"
|
||||||
@@ -35,8 +33,6 @@ INP = 300
|
|||||||
OUT = 301
|
OUT = 301
|
||||||
MEM = 302
|
MEM = 302
|
||||||
|
|
||||||
warnings.simplefilter(action="always")
|
|
||||||
|
|
||||||
|
|
||||||
class DeviceNotFoundError(Exception):
|
class DeviceNotFoundError(Exception):
|
||||||
|
|
||||||
|
|||||||
@@ -443,12 +443,17 @@ class ProcimgWriter(Thread):
|
|||||||
self._maxioerrors
|
self._maxioerrors
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
warnings.warn(
|
if self._modio._debug:
|
||||||
"count {0} io errors on process image".format(self._ioerror),
|
warnings.warn(
|
||||||
RuntimeWarning
|
"count {0} io errors on process image | {1}"
|
||||||
)
|
"".format(self._ioerror, str(e)),
|
||||||
if self._modio._debug and e is not None:
|
RuntimeWarning
|
||||||
warnings.warn(str(e), RuntimeWarning)
|
)
|
||||||
|
else:
|
||||||
|
warnings.warn(
|
||||||
|
"got io error on process image",
|
||||||
|
RuntimeWarning
|
||||||
|
)
|
||||||
|
|
||||||
def get_maxioerrors(self):
|
def get_maxioerrors(self):
|
||||||
"""Gibt die Anzahl der maximal erlaubten Fehler zurueck.
|
"""Gibt die Anzahl der maximal erlaubten Fehler zurueck.
|
||||||
@@ -471,9 +476,8 @@ class ProcimgWriter(Thread):
|
|||||||
# Lockobjekt holen und Fehler werfen, wenn nicht schnell genug
|
# Lockobjekt holen und Fehler werfen, wenn nicht schnell genug
|
||||||
if not self.lck_refresh.acquire(timeout=self._adjwait):
|
if not self.lck_refresh.acquire(timeout=self._adjwait):
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"cycle time of {0} ms exceeded on lock".format(
|
"cycle time of {0} ms exceeded during executing function"
|
||||||
int(self._refresh * 1000)
|
"".format(int(self._refresh * 1000)),
|
||||||
),
|
|
||||||
RuntimeWarning
|
RuntimeWarning
|
||||||
)
|
)
|
||||||
# Verzögerte Events pausieren an dieser Stelle
|
# Verzögerte Events pausieren an dieser Stelle
|
||||||
@@ -546,9 +550,8 @@ class ProcimgWriter(Thread):
|
|||||||
self._adjwait -= 0.001
|
self._adjwait -= 0.001
|
||||||
if self._adjwait < 0:
|
if self._adjwait < 0:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"cycle time of {0} ms exceeded".format(
|
"cycle time of {0} ms exceeded several times - can not"
|
||||||
int(self._refresh * 1000)
|
" hold cycle time!".format(int(self._refresh * 1000)),
|
||||||
),
|
|
||||||
RuntimeWarning
|
RuntimeWarning
|
||||||
)
|
)
|
||||||
self._adjwait = 0
|
self._adjwait = 0
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class RevPiModIO(object):
|
|||||||
# Private Variablen
|
# Private Variablen
|
||||||
self.__cleanupfunc = None
|
self.__cleanupfunc = None
|
||||||
self._buffedwrite = False
|
self._buffedwrite = False
|
||||||
self._debug = debug
|
self._debug = False
|
||||||
self._exit = Event()
|
self._exit = Event()
|
||||||
self._imgwriter = None
|
self._imgwriter = None
|
||||||
self._ioerror = 0
|
self._ioerror = 0
|
||||||
@@ -107,6 +107,9 @@ class RevPiModIO(object):
|
|||||||
# Event für Benutzeraktionen
|
# Event für Benutzeraktionen
|
||||||
self.exitsignal = Event()
|
self.exitsignal = Event()
|
||||||
|
|
||||||
|
# Wert über setter setzen
|
||||||
|
self.debug = debug
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._run_on_pi = S_ISCHR(osstat(self._procimg).st_mode)
|
self._run_on_pi = S_ISCHR(osstat(self._procimg).st_mode)
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -234,7 +237,8 @@ class RevPiModIO(object):
|
|||||||
else:
|
else:
|
||||||
# Device-Type nicht gefunden
|
# Device-Type nicht gefunden
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"device type '{0}' unknown".format(device["type"]),
|
"device type '{0}' on position {1} unknown"
|
||||||
|
"".format(device["type"], device["position"]),
|
||||||
Warning
|
Warning
|
||||||
)
|
)
|
||||||
dev_new = None
|
dev_new = None
|
||||||
@@ -457,13 +461,15 @@ class RevPiModIO(object):
|
|||||||
"reach max io error count {0} on process image"
|
"reach max io error count {0} on process image"
|
||||||
"".format(self._maxioerrors)
|
"".format(self._maxioerrors)
|
||||||
)
|
)
|
||||||
warnings.warn(
|
|
||||||
"got io error during {0} and count {1} errors now"
|
if self._debug:
|
||||||
"".format(action, self._ioerror),
|
warnings.warn(
|
||||||
RuntimeWarning
|
"got io error during '{0}' and count {1} errors now | {2}"
|
||||||
)
|
"".format(action, self._ioerror, str(e)),
|
||||||
if self._debug and e is not None:
|
RuntimeWarning
|
||||||
warnings.warn(str(e), RuntimeWarning)
|
)
|
||||||
|
else:
|
||||||
|
warnings.warn("got io error on process image", RuntimeWarning)
|
||||||
|
|
||||||
def _set_cycletime(self, milliseconds):
|
def _set_cycletime(self, milliseconds):
|
||||||
"""Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
|
"""Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
|
||||||
@@ -476,6 +482,18 @@ class RevPiModIO(object):
|
|||||||
else:
|
else:
|
||||||
self._imgwriter.refresh = milliseconds
|
self._imgwriter.refresh = milliseconds
|
||||||
|
|
||||||
|
def _set_debug(self, value):
|
||||||
|
"""Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.
|
||||||
|
@param value Wenn True, werden umfangreiche Medungen angezeigt"""
|
||||||
|
if not isinstance(value, bool):
|
||||||
|
raise TypeError("value must be <class 'bool'>")
|
||||||
|
self._debug = value
|
||||||
|
|
||||||
|
if value:
|
||||||
|
warnings.filterwarnings("always", module="revpimodio2")
|
||||||
|
else:
|
||||||
|
warnings.filterwarnings("default", module="revpimodio2")
|
||||||
|
|
||||||
def _set_maxioerrors(self, value):
|
def _set_maxioerrors(self, value):
|
||||||
"""Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.
|
"""Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.
|
||||||
@param value Anzahl erlaubte Fehler"""
|
@param value Anzahl erlaubte Fehler"""
|
||||||
@@ -1087,7 +1105,7 @@ class RevPiModIO(object):
|
|||||||
|
|
||||||
return workokay
|
return workokay
|
||||||
|
|
||||||
debug = property(_get_debug)
|
debug = property(_get_debug, _set_debug)
|
||||||
configrsc = property(_get_configrsc)
|
configrsc = property(_get_configrsc)
|
||||||
cycletime = property(_get_cycletime, _set_cycletime)
|
cycletime = property(_get_cycletime, _set_cycletime)
|
||||||
ioerrors = property(_get_ioerrors)
|
ioerrors = property(_get_ioerrors)
|
||||||
|
|||||||
Reference in New Issue
Block a user