diff --git a/doc/revpimodio2.helper.html b/doc/revpimodio2.helper.html
index 0224b20..83b157c 100644
--- a/doc/revpimodio2.helper.html
+++ b/doc/revpimodio2.helper.html
@@ -429,7 +429,7 @@ Thread
Class Attributes
-| __slots__ |
| ioerrors |
| maxioerrors |
| refresh |
+| __slots__ |
| refresh |
Class Methods
@@ -452,24 +452,12 @@ Methods
_collect_events |
Aktiviert oder Deaktiviert die Eventueberwachung. |
-| _get_ioerrors |
-Ruft aktuelle Anzahl der Fehler ab. |
-
-| _gotioerror |
-IOError Verwaltung fuer autorefresh. |
-
-| get_maxioerrors |
-Gibt die Anzahl der maximal erlaubten Fehler zurueck. |
-
| get_refresh |
Gibt Zykluszeit zurueck. |
| run |
Startet die automatische Prozessabbildsynchronisierung. |
-| set_maxioerrors |
-Setzt die Anzahl der maximal erlaubten Fehler. |
-
| set_refresh |
Setzt die Zykluszeit in Millisekunden. |
@@ -521,39 +509,6 @@ True aktiviert / False deaktiviert
True, wenn Anforderung erfolgreich war
-
-
-ProcimgWriter._get_ioerrors
-_get_ioerrors()
-
-Ruft aktuelle Anzahl der Fehler ab.
-
-- Returns:
--
-Aktuelle Fehleranzahl
-
-
-
-ProcimgWriter._gotioerror
-_gotioerror(e=None)
-
-IOError Verwaltung fuer autorefresh.
-
-- e
--
-Exception to log if debug is enabled
-
-
-
-ProcimgWriter.get_maxioerrors
-get_maxioerrors()
-
-Gibt die Anzahl der maximal erlaubten Fehler zurueck.
-
-- Returns:
--
-Anzahl erlaubte Fehler
-
ProcimgWriter.get_refresh
@@ -571,18 +526,7 @@ ProcimgWriter.run
run()
Startet die automatische Prozessabbildsynchronisierung.
-
-
-ProcimgWriter.set_maxioerrors
-set_maxioerrors(value)
-
-Setzt die Anzahl der maximal erlaubten Fehler.
-
-- value
--
-Anzahl erlaubte Fehler
-
-
+
ProcimgWriter.set_refresh
set_refresh(value)
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..aa88805 100644
--- a/eric-revpimodio2.api
+++ b/eric-revpimodio2.api
@@ -82,15 +82,9 @@ revpimodio2.helper.EventCallback.run?4()
revpimodio2.helper.EventCallback.stop?4()
revpimodio2.helper.EventCallback?1(func, name, value)
revpimodio2.helper.ProcimgWriter._collect_events?5(value)
-revpimodio2.helper.ProcimgWriter._get_ioerrors?5()
-revpimodio2.helper.ProcimgWriter._gotioerror?5(e=None)
-revpimodio2.helper.ProcimgWriter.get_maxioerrors?4()
revpimodio2.helper.ProcimgWriter.get_refresh?4()
-revpimodio2.helper.ProcimgWriter.ioerrors?7
-revpimodio2.helper.ProcimgWriter.maxioerrors?7
revpimodio2.helper.ProcimgWriter.refresh?7
revpimodio2.helper.ProcimgWriter.run?4()
-revpimodio2.helper.ProcimgWriter.set_maxioerrors?4(value)
revpimodio2.helper.ProcimgWriter.set_refresh?4(value)
revpimodio2.helper.ProcimgWriter.stop?4()
revpimodio2.helper.ProcimgWriter?1(parentmodio)
@@ -157,6 +151,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/device.py b/revpimodio2/device.py
index d87e4e7..291e9d8 100644
--- a/revpimodio2/device.py
+++ b/revpimodio2/device.py
@@ -348,12 +348,10 @@ class Device(object):
if not self._modio._imgwriter.is_alive():
# Alte Einstellungen speichern
- imgmaxioerrors = self._modio._imgwriter.maxioerrors
imgrefresh = self._modio._imgwriter.refresh
# ImgWriter mit alten Einstellungen erstellen
self._modio._imgwriter = ProcimgWriter(self._modio)
- self._modio._imgwriter.maxioerrors = imgmaxioerrors
self._modio._imgwriter.refresh = imgrefresh
self._modio._imgwriter.start()
diff --git a/revpimodio2/helper.py b/revpimodio2/helper.py
index ab00e1b..6b132a7 100644
--- a/revpimodio2/helper.py
+++ b/revpimodio2/helper.py
@@ -290,7 +290,7 @@ class ProcimgWriter(Thread):
"""
__slots__ = "__dict_delay", "__eventth", "_eventqth", "__eventwork", \
- "_adjwait", "_eventq", "_ioerror", "_maxioerrors", "_modio", \
+ "_adjwait", "_eventq", "_modio", \
"_refresh", "_work", "daemon", "lck_refresh", "newdata"
def __init__(self, parentmodio):
@@ -303,8 +303,6 @@ class ProcimgWriter(Thread):
self.__eventwork = False
self._adjwait = 0
self._eventq = queue.Queue()
- self._ioerror = 0
- self._maxioerrors = 0
self._modio = parentmodio
self._refresh = 0.05
self._work = Event()
@@ -429,34 +427,6 @@ class ProcimgWriter(Thread):
return True
- def _get_ioerrors(self):
- """Ruft aktuelle Anzahl der Fehler ab.
- @return Aktuelle Fehleranzahl"""
- return self._ioerror
-
- def _gotioerror(self, e=None):
- """IOError Verwaltung fuer autorefresh.
- @param e Exception to log if debug is enabled
- """
- self._ioerror += 1
- if self._maxioerrors != 0 and self._ioerror >= self._maxioerrors:
- raise RuntimeError(
- "reach max io error count {0} on process image".format(
- 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)
-
- def get_maxioerrors(self):
- """Gibt die Anzahl der maximal erlaubten Fehler zurueck.
- @return Anzahl erlaubte Fehler"""
- return self._maxioerrors
-
def get_refresh(self):
"""Gibt Zykluszeit zurueck.
@return Zykluszeit in Millisekunden"""
@@ -473,9 +443,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
@@ -513,7 +482,7 @@ class ProcimgWriter(Thread):
fh.flush()
except IOError as e:
- self._gotioerror(e)
+ self._modio._gotioerror("autorefresh", e)
self.lck_refresh.release()
continue
@@ -547,9 +516,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
@@ -565,17 +533,6 @@ class ProcimgWriter(Thread):
"""Beendet die automatische Prozessabbildsynchronisierung."""
self._work.set()
- def set_maxioerrors(self, value):
- """Setzt die Anzahl der maximal erlaubten Fehler.
- @param value Anzahl erlaubte Fehler"""
- if type(value) == int:
- if value >= 0:
- self._maxioerrors = value
- else:
- raise ValueError("value must be 0 or a positive integer")
- else:
- raise TypeError("value must be ")
-
def set_refresh(self, value):
"""Setzt die Zykluszeit in Millisekunden.
@param value Millisekunden"""
@@ -588,6 +545,4 @@ class ProcimgWriter(Thread):
"refresh time must be 5 to 2000 milliseconds"
)
- ioerrors = property(_get_ioerrors)
- maxioerrors = property(get_maxioerrors, set_maxioerrors)
refresh = property(get_refresh, set_refresh)
diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py
index a87a661..c438bb3 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
@@ -409,10 +413,7 @@ class RevPiModIO(object):
def _get_ioerrors(self):
"""Getter function.
@return Aktuelle Anzahl gezaehlter Fehler"""
- if self._looprunning:
- return self._imgwriter._ioerror
- else:
- return self._ioerror
+ return self._ioerror
def _get_length(self):
"""Getter function.
@@ -457,13 +458,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,12 +479,23 @@ 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"""
if type(value) == int and value >= 0:
self._maxioerrors = value
- self._imgwriter.maxioerrors = value
else:
raise ValueError("value must be 0 or a positive integer")
@@ -963,7 +977,6 @@ class RevPiModIO(object):
def resetioerrors(self):
"""Setzt aktuellen IOError-Zaehler auf 0 zurueck."""
self._ioerror = 0
- self._imgwriter._ioerror = 0
def setdefaultvalues(self, device=None):
"""Alle Outputbuffer werden auf die piCtory default Werte gesetzt.
@@ -1087,7 +1100,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)