Debug Parameter nimmt Werte -1, 0, 1 an.

Bei debug=-1 werden keinerlei Warnungen angezeigt
Bei debug=0 werden alle Warnungen nur ein einziges Mal angezeigt
bei debug=1 werden alle Warnungen immer angezeigt
This commit is contained in:
2019-09-01 13:07:52 +02:00
parent 485aad020f
commit 56b7c252b6
3 changed files with 38 additions and 22 deletions

View File

@@ -485,17 +485,24 @@ class ProcimgWriter(Thread):
except IOError as e: except IOError as e:
self._modio._gotioerror("autorefresh", e, mrk_warn) self._modio._gotioerror("autorefresh", e, mrk_warn)
mrk_warn = False mrk_warn = self._modio._debug == -1
self.lck_refresh.release() self.lck_refresh.release()
continue continue
else: else:
if not mrk_warn: if not mrk_warn:
warnings.warn( if self._modio._debug == 0:
"recover io errors on process image - total count " warnings.warn(
"of {0} errors now".format(self._modio._ioerror), "recover from io errors on process image",
RuntimeWarning RuntimeWarning
) )
else:
warnings.warn(
"recover from io errors on process image - total "
"count of {0} errors now"
"".format(self._modio._ioerror),
RuntimeWarning
)
mrk_warn = True mrk_warn = True
# Alle aufwecken # Alle aufwecken

View File

@@ -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 = False self._debug = 1
self._exit = Event() self._exit = Event()
self._imgwriter = None self._imgwriter = None
self._ioerror = 0 self._ioerror = 0
@@ -408,7 +408,7 @@ class RevPiModIO(object):
def _get_debug(self): def _get_debug(self):
"""Gibt Status des Debugflags zurueck. """Gibt Status des Debugflags zurueck.
@return Status des Debugflags""" @return Status des Debugflags"""
return self._debug return self._debug == 1
def _get_ioerrors(self): def _get_ioerrors(self):
"""Getter function. """Getter function.
@@ -460,18 +460,18 @@ class RevPiModIO(object):
"".format(self._maxioerrors) "".format(self._maxioerrors)
) )
if not show_warn: if not show_warn or self._debug == -1:
return return
if self._debug: if self._debug == 0:
warnings.warn( warnings.warn(
"got io error during '{0}' and count {1} errors now | {2}" "got io error on process image",
"".format(action, self._ioerror, str(e)),
RuntimeWarning RuntimeWarning
) )
else: else:
warnings.warn( warnings.warn(
"got io error on process image", "got io error during '{0}' and count {1} errors now | {2}"
"".format(action, self._ioerror, str(e)),
RuntimeWarning RuntimeWarning
) )
@@ -489,14 +489,22 @@ class RevPiModIO(object):
def _set_debug(self, value): def _set_debug(self, value):
"""Setzt debugging Status um mehr Meldungen zu erhalten oder nicht. """Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.
@param value Wenn True, werden umfangreiche Medungen angezeigt""" @param value Wenn True, werden umfangreiche Medungen angezeigt"""
if not isinstance(value, bool): if type(value) == bool:
raise TypeError("value must be <class 'bool'>") value = int(value)
if not type(value) == int:
# Wert -1 ist zum kompletten deaktivieren versteckt
raise TypeError("value must be <class 'bool'> or <class 'int'>")
if not -1 <= value <= 1:
raise ValueError("value must be True/False or -1, 0, 1")
self._debug = value self._debug = value
if value: if value == -1:
warnings.filterwarnings("always", module="revpimodio2") warnings.filterwarnings("ignore", module="revpimodio2")
else: elif value == 0:
warnings.filterwarnings("default", module="revpimodio2") warnings.filterwarnings("default", module="revpimodio2")
else:
warnings.filterwarnings("always", 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.
@@ -883,13 +891,13 @@ class RevPiModIO(object):
# ImgWriter mit Eventüberwachung aktivieren # ImgWriter mit Eventüberwachung aktivieren
self._imgwriter._collect_events(True) self._imgwriter._collect_events(True)
e = None e = None
runtime = 0 runtime = -1 if self._debug == -1 else 0
while not self._exit.is_set(): while not self._exit.is_set():
# Laufzeit der Eventqueue auf 0 setzen # Laufzeit der Eventqueue auf 0 setzen
if self._imgwriter._eventq.qsize() == 0: if self._imgwriter._eventq.qsize() == 0:
runtime = 0 runtime = -1 if self._debug == -1 else 0
try: try:
tup_fire = self._imgwriter._eventq.get(timeout=1) tup_fire = self._imgwriter._eventq.get(timeout=1)

View File

@@ -516,12 +516,13 @@ class NetFH(Thread):
try: try:
self._slavesock.send(_syssync) self._slavesock.send(_syssync)
data = self._slavesock.recv(2) data = self._slavesock.recv(2)
except IOError as e: except IOError:
self.__sockerr.set() self.__sockerr.set()
else: else:
if data != b'\x06\x16': if data != b'\x06\x16':
warnings.warn( warnings.warn(
"data error in sync of NetFH", RuntimeWarning "data error on network sync",
RuntimeWarning
) )
self.__sockerr.set() self.__sockerr.set()