From: Philipp Klaus Date: Thu, 10 Aug 2017 11:59:33 +0000 (+0200) Subject: OPUS20: strict 5s interval for scanning X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=94d2899d5cabb93638f882a0b118fad678e15c69;p=mvd_epics.git OPUS20: strict 5s interval for scanning --- diff --git a/LUFFT_OPUS20/lufft_opus20_driver.py b/LUFFT_OPUS20/lufft_opus20_driver.py index 546faac..56a21d8 100644 --- a/LUFFT_OPUS20/lufft_opus20_driver.py +++ b/LUFFT_OPUS20/lufft_opus20_driver.py @@ -27,8 +27,8 @@ class Opus20Driver(Driver): self.tid.start() def scan_all(self): + last_time = time.time() while True: - start = time.time() mapping = [ ('Temperature', 0x0064), @@ -51,4 +51,9 @@ class Opus20Driver(Driver): else: self.setParamStatus(reason, Alarm.COMM_ALARM, Severity.MINOR_ALARM) - time.sleep(self.scan_period - (time.time() - start)) + # if the process was suspended, reset last_time: + if time.time() - last_time > self.scan_period: + last_time = time.time() + + time.sleep(max(0.0, self.scan_period - (time.time() - last_time))) + last_time += self.scan_period