mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 13:53:53 +01:00
Warn the user faster, if the cycle time is exhausted
This commit is contained in:
@@ -22,7 +22,7 @@ __author__ = "Sven Sager <akira@revpimodio.org>"
|
|||||||
__copyright__ = "Copyright (C) 2020 Sven Sager"
|
__copyright__ = "Copyright (C) 2020 Sven Sager"
|
||||||
__license__ = "LGPLv3"
|
__license__ = "LGPLv3"
|
||||||
__name__ = "revpimodio2"
|
__name__ = "revpimodio2"
|
||||||
__version__ = "2.5.8b"
|
__version__ = "2.5.8c"
|
||||||
|
|
||||||
# Global package values
|
# Global package values
|
||||||
OFF = 0
|
OFF = 0
|
||||||
|
|||||||
@@ -512,6 +512,7 @@ class ProcimgWriter(Thread):
|
|||||||
"""Startet die automatische Prozessabbildsynchronisierung."""
|
"""Startet die automatische Prozessabbildsynchronisierung."""
|
||||||
fh = self._modio._create_myfh()
|
fh = self._modio._create_myfh()
|
||||||
|
|
||||||
|
mrk_delay = self._refresh
|
||||||
mrk_warn = True
|
mrk_warn = True
|
||||||
bytesbuff = bytearray(self._modio._length)
|
bytesbuff = bytearray(self._modio._length)
|
||||||
|
|
||||||
@@ -521,13 +522,14 @@ class ProcimgWriter(Thread):
|
|||||||
while not self._work.is_set():
|
while not self._work.is_set():
|
||||||
ot = default_timer()
|
ot = default_timer()
|
||||||
|
|
||||||
# Lockobjekt holen und Fehler werfen, wenn nicht schnell genug
|
# At this point, we slept and have the rest of delay from last cycle
|
||||||
if not self.lck_refresh.acquire(timeout=self._refresh):
|
if not self.lck_refresh.acquire(timeout=mrk_delay):
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"cycle time of {0} ms exceeded during executing function"
|
"cycle time of {0} ms exceeded in your cycle function"
|
||||||
"".format(int(self._refresh * 1000)),
|
"".format(int(self._refresh * 1000)),
|
||||||
RuntimeWarning
|
RuntimeWarning
|
||||||
)
|
)
|
||||||
|
mrk_delay = self._refresh
|
||||||
# Nur durch cycleloop erreichbar - keine verzögerten Events
|
# Nur durch cycleloop erreichbar - keine verzögerten Events
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -609,15 +611,18 @@ class ProcimgWriter(Thread):
|
|||||||
self._eventq.put(tup_fire, False)
|
self._eventq.put(tup_fire, False)
|
||||||
del self.__dict_delay[tup_fire]
|
del self.__dict_delay[tup_fire]
|
||||||
|
|
||||||
|
mrk_delay = default_timer() % self._refresh
|
||||||
|
# Second default_timer call include calculation time from above
|
||||||
if default_timer() - ot > self._refresh:
|
if default_timer() - ot > self._refresh:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"cycle time of {0} ms exceeded - can not hold cycle time!"
|
"cycle time of {0} ms exceeded - can not hold cycle time!"
|
||||||
"".format(int(self._refresh * 1000)),
|
"".format(int(self._refresh * 1000)),
|
||||||
RuntimeWarning
|
RuntimeWarning
|
||||||
)
|
)
|
||||||
|
mrk_delay = 0.0
|
||||||
else:
|
else:
|
||||||
# Sleep and not .wait (.wait uses system clock)
|
# Sleep and not .wait (.wait uses system clock)
|
||||||
sleep(self._refresh - (default_timer() % self._refresh))
|
sleep(self._refresh - mrk_delay)
|
||||||
|
|
||||||
# Alle am Ende erneut aufwecken
|
# Alle am Ende erneut aufwecken
|
||||||
self._collect_events(False)
|
self._collect_events(False)
|
||||||
|
|||||||
Reference in New Issue
Block a user