st-ten-1/src/ui/test_leak/test_leak.py
matteo porta 623e3e3f6f wip
2022-07-27 17:09:17 +02:00

70 lines
2.5 KiB
Python

import weakref
from ui.test_test import Test_Test
class Test_Leak(Test_Test):
def __init__(self, components=None, recipe=None, step=None):
super().__init__(components=components, recipe=recipe, step=step)
self.start_b.clicked.connect(lambda checked, self=weakref.ref(self): self().components["tecna_t3"].start_test())
self.stop_b.clicked.connect(lambda checked, self=weakref.ref(self): self().components["tecna_t3"].stop_test())
def start(self, recipe=None, step=None):
super().start(recipe=recipe, step=step)
# setup test loop
self.components["tecna_t3"].write_recipe(self.recipe, self.step)
self.get_connection = self.components["tecna_t3"].out.connect(self.get)
self.components["tecna_t3"].resume()
def stop(self):
# disable tes loop
self.components["tecna_t3"].stop_test()
self.components["tecna_t3"].pause()
self.disconnect(self.get_connection)
super().stop()
def get(self, data=None, override=False):
if self.done: # avoid proccessing if completed
return
if data is None or data[-1] is None:
super().get(None, override=override)
return
data = data[-1]
if "Running test: result" in data["tecna_t3"]:
result = data["tecna_t3"]["Running test: result"]
ok = type(result) is str and "passed" in result.lower()
else:
result = None
ok = None
super().get([{
"time": data.get("time", None),
"results": {
"ok": ok,
"result": result,
"data": data["tecna_t3"],
},
}], override=override, fail=ok is False)
def visualize(self, data=None):
if data is None:
data = {}
d = data.get("results", {}).get("data", {})
for k, l in {
"Running test: active phase": self.test_phase_l,
"Real time test pressure output": self.circuit_pressure_l,
"Real time differential pressure output": self.leak_l,
"Real time pressure line regulator": self.regulated_pressure_l,
# "Active alarm flags": self._l,
"Running test: test type": self.test_type_l,
"Running test: sequence index": self.sequence_index_l,
}.items():
v = d.get(k, "-")
if type(v) is float:
v = round(v, 2)
l.setText(str(v))
super().visualize(data)
def save_last(self):
if self.last is None:
return