diff --git a/doc/revpimodio2.modio.html b/doc/revpimodio2.modio.html index 8d26ae8..fe4839a 100644 --- a/doc/revpimodio2.modio.html +++ b/doc/revpimodio2.modio.html @@ -122,6 +122,9 @@ Methods _set_cycletime Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung. +_set_debug +Setzt debugging Status um mehr Meldungen zu erhalten oder nicht. + _set_maxioerrors Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff. @@ -407,6 +410,17 @@ Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
in Millisekunden
+ +

+RevPiModIO._set_debug

+_set_debug(value) +

+Setzt debugging Status um mehr Meldungen zu erhalten oder nicht. +

+
value
+
+Wenn True, werden umfangreiche Medungen angezeigt +

RevPiModIO._set_maxioerrors

diff --git a/eric-revpimodio2.api b/eric-revpimodio2.api index 28da249..c92868a 100644 --- a/eric-revpimodio2.api +++ b/eric-revpimodio2.api @@ -157,6 +157,7 @@ revpimodio2.modio.RevPiModIO._get_replace_io_file?5() revpimodio2.modio.RevPiModIO._get_simulator?5() revpimodio2.modio.RevPiModIO._gotioerror?5(action, e=None) revpimodio2.modio.RevPiModIO._set_cycletime?5(milliseconds) +revpimodio2.modio.RevPiModIO._set_debug?5(value) revpimodio2.modio.RevPiModIO._set_maxioerrors?5(value) revpimodio2.modio.RevPiModIO._simulate_ioctl?5(request, arg=b'') revpimodio2.modio.RevPiModIO.autorefresh_all?4() diff --git a/revpimodio2/__init__.py b/revpimodio2/__init__.py index c1d6aa2..d55049f 100644 --- a/revpimodio2/__init__.py +++ b/revpimodio2/__init__.py @@ -12,8 +12,6 @@ Auf alle IOs kann der Benutzer Funktionen als Events registrieren. Diese fuehrt das Modul bei Datenaenderung aus. """ -import warnings - __all__ = [ "RevPiModIO", "RevPiModIOSelected", "RevPiModIODriver", "RevPiNetIO", "RevPiNetIOSelected", "RevPiNetIODriver" @@ -35,8 +33,6 @@ INP = 300 OUT = 301 MEM = 302 -warnings.simplefilter(action="always") - class DeviceNotFoundError(Exception): diff --git a/revpimodio2/helper.py b/revpimodio2/helper.py index abb8bcc..0679bf5 100644 --- a/revpimodio2/helper.py +++ b/revpimodio2/helper.py @@ -443,12 +443,17 @@ class ProcimgWriter(Thread): self._maxioerrors ) ) - warnings.warn( - "count {0} io errors on process image".format(self._ioerror), - RuntimeWarning - ) - if self._modio._debug and e is not None: - warnings.warn(str(e), RuntimeWarning) + if self._modio._debug: + warnings.warn( + "count {0} io errors on process image | {1}" + "".format(self._ioerror, str(e)), + RuntimeWarning + ) + else: + warnings.warn( + "got io error on process image", + RuntimeWarning + ) def get_maxioerrors(self): """Gibt die Anzahl der maximal erlaubten Fehler zurueck. @@ -471,9 +476,8 @@ class ProcimgWriter(Thread): # Lockobjekt holen und Fehler werfen, wenn nicht schnell genug if not self.lck_refresh.acquire(timeout=self._adjwait): warnings.warn( - "cycle time of {0} ms exceeded on lock".format( - int(self._refresh * 1000) - ), + "cycle time of {0} ms exceeded during executing function" + "".format(int(self._refresh * 1000)), RuntimeWarning ) # Verzögerte Events pausieren an dieser Stelle @@ -546,9 +550,8 @@ class ProcimgWriter(Thread): self._adjwait -= 0.001 if self._adjwait < 0: warnings.warn( - "cycle time of {0} ms exceeded".format( - int(self._refresh * 1000) - ), + "cycle time of {0} ms exceeded several times - can not" + " hold cycle time!".format(int(self._refresh * 1000)), RuntimeWarning ) self._adjwait = 0 diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py index a87a661..d64e810 100644 --- a/revpimodio2/modio.py +++ b/revpimodio2/modio.py @@ -80,7 +80,7 @@ class RevPiModIO(object): # Private Variablen self.__cleanupfunc = None self._buffedwrite = False - self._debug = debug + self._debug = False self._exit = Event() self._imgwriter = None self._ioerror = 0 @@ -107,6 +107,9 @@ class RevPiModIO(object): # Event für Benutzeraktionen self.exitsignal = Event() + # Wert über setter setzen + self.debug = debug + try: self._run_on_pi = S_ISCHR(osstat(self._procimg).st_mode) except Exception: @@ -234,7 +237,8 @@ class RevPiModIO(object): else: # Device-Type nicht gefunden warnings.warn( - "device type '{0}' unknown".format(device["type"]), + "device type '{0}' on position {1} unknown" + "".format(device["type"], device["position"]), Warning ) dev_new = None @@ -457,13 +461,15 @@ class RevPiModIO(object): "reach max io error count {0} on process image" "".format(self._maxioerrors) ) - warnings.warn( - "got io error during {0} and count {1} errors now" - "".format(action, self._ioerror), - RuntimeWarning - ) - if self._debug and e is not None: - warnings.warn(str(e), RuntimeWarning) + + if self._debug: + warnings.warn( + "got io error during '{0}' and count {1} errors now | {2}" + "".format(action, self._ioerror, str(e)), + RuntimeWarning + ) + else: + warnings.warn("got io error on process image", RuntimeWarning) def _set_cycletime(self, milliseconds): """Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung. @@ -476,6 +482,18 @@ class RevPiModIO(object): else: 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 ") + self._debug = value + + if value: + warnings.filterwarnings("always", module="revpimodio2") + else: + warnings.filterwarnings("default", module="revpimodio2") + def _set_maxioerrors(self, value): """Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff. @param value Anzahl erlaubte Fehler""" @@ -1087,7 +1105,7 @@ class RevPiModIO(object): return workokay - debug = property(_get_debug) + debug = property(_get_debug, _set_debug) configrsc = property(_get_configrsc) cycletime = property(_get_cycletime, _set_cycletime) ioerrors = property(_get_ioerrors)