From 2529866ce930d874f1b28bc5c4fc9783efcf46c0 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Thu, 16 Mar 2017 15:09:02 +0100 Subject: [PATCH] Script execution --- script/OneWire.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/script/OneWire.py b/script/OneWire.py index e416551..0f21e75 100644 --- a/script/OneWire.py +++ b/script/OneWire.py @@ -4,15 +4,14 @@ from datetime import datetime class Detector(ReadonlyRegisterBase): def __init__(self, name): ReadonlyRegisterBase.__init__(self, name) - self.id = None - self.sn = None - self.status = None - self.type = None - self.set_inputs({}) + self.reset() def set_inputs(self, inputs): self.inputs = inputs - self.setCache(inputs.values(), None) + if self.take() != inputs.values(): + self.setCache(inputs.values(), None) + if self.getParent()!=None: + self.getParent().updateCache() if (len(self.take()) == 0): self.setState(State.Offline) else: @@ -20,15 +19,25 @@ class Detector(ReadonlyRegisterBase): def set_input(self, index, val): self.inputs[index] = val - self.set_inputs(self.inputs) + self.set_inputs(self.inputs) + + def reset(self): + self.id = None + self.sn = None + self.status = None + self.type = None + self.set_inputs({}) class Esera(TcpDevice): def __init__(self, name, server, timeout = 1000, retries = 1): TcpDevice.__init__(self, name, server) self.setMode(self.Mode.FullDuplex) self.detectors = [] + for i in range(30): + self.detectors.append(Detector("Detector " + str(i+1))) + self.setChildren(self.detectors) self.completed_initializatiod = False - self.debug = False + self.debug = False def start(self): self.getLogger().info("Starting controller") @@ -49,9 +58,8 @@ class Esera(TcpDevice): self.init_timestamp = time.time() try: self.setState(State.Ready) #So can communicate - self.detectors = [] - for i in range(30): - self.detectors.append(Detector("Detector " + str(i+1))) + for det in self.detectors: + det.reset() self.list() time.sleep(1.0) self.check_started() @@ -63,7 +71,15 @@ class Esera(TcpDevice): def doUpdate(self): self.check_started() - self.req_data() + self.req_data() + + def updateCache(self): + print "Update" + cache = [] + for det in self.detectors: + cache.append(det.take()) + self.setCache(cache, None) + def check_started(self): if not self.completed_initializatiod: