diff --git a/config/label_designs/SATIL/R5_30x17_203dpi.nlbl b/config/label_designs/SATIL/R5_30x17_203dpi.nlbl
index 2b3be99..50a477a 100644
Binary files a/config/label_designs/SATIL/R5_30x17_203dpi.nlbl and b/config/label_designs/SATIL/R5_30x17_203dpi.nlbl differ
diff --git a/config/label_templates/st-ten-9/R5_30x17_203dpi.prn b/config/label_templates/st-ten-9/R5_30x17_203dpi.prn
index e362bad..4e45b02 100644
--- a/config/label_templates/st-ten-9/R5_30x17_203dpi.prn
+++ b/config/label_templates/st-ten-9/R5_30x17_203dpi.prn
@@ -21,11 +21,12 @@
^PW256
^LL144
^LS0
-^FT29,119^BQN,2,3
-^FH\^FDLA,{PART}{SN5}{DATE}{TIME}^FS
-^FT237,104^A0I,23,23^FH\^CI28^FD{PART}^FS^CI27
-^FT237,75^A0I,23,23^FH\^CI28^FDNum:{SN5}^FS^CI27
-^FT237,47^A0I,23,23^FH\^CI28^FD{DATE}^FS^CI27
-^FT237,18^A0I,23,23^FH\^CI28^FD{TIME}^FS^CI27
+^FT156,132^BQN,2,3
+^FH\^FDLA,{PART}_{SN5}_{DATE}_{TIME}^FS
+^FT61,47^A0N,23,23^FH\^CI28^FD{PART}^FS^CI27
+^FT19,72^A0N,23,23^FH\^CI28^FDNum:{SN5}^FS^CI27
+^FT19,97^A0N,23,23^FH\^CI28^FD{DATE}^FS^CI27
+^FT19,122^A0N,23,23^FH\^CI28^FD{TIME}^FS^CI27
+^FO19,21^GFA,169,248,8,:Z64:eJxFz7ENAyEMBdCPrnCZEVgjRQQrUaY46RjtRmGElFec4vgbrNA82Rhji+qAnax60ar6pbulaAOkT7dzmsIxBX0v7X3Y2+zrRv656trf6BP9/T/rl+kLopyjQG6fs28fKgMeW1SoRV6Pyis7j56i0BdLa0Ec7g8asjdJ:20D6
^PQ1,0,1,Y
^XZ
diff --git a/config/machine_settings/defaults.ini b/config/machine_settings/defaults.ini
index 971177b..c63aa8d 100644
--- a/config/machine_settings/defaults.ini
+++ b/config/machine_settings/defaults.ini
@@ -124,7 +124,7 @@ warning_img:
pid_mode: 0 # 0=FAST 1=MEDIUM 2=SLOW 4 = FIXED 5 = AUTOMATIC 6 = FLOW 7 = LEAK WITH FLOW
pid_level: 1
pid_speed: 1
-tecna_discharge_enable: no
+tester_discharge_enable: no
tempo_pre_riempimento: 0
pressione_pre_riempimento: 1000
diff --git a/config/machine_settings/st-ten-1-linux.ini b/config/machine_settings/st-ten-1-linux.ini
index 9a43767..ca9bcc0 100644
--- a/config/machine_settings/st-ten-1-linux.ini
+++ b/config/machine_settings/st-ten-1-linux.ini
@@ -43,7 +43,7 @@ pressione_di_test_delta_massimo: 30
tempo_svuotamento: 1
pressione_svuotamento: 100
canale_di_prova: 0
-tecna_discharge_enable: yes
+tester_discharge_enable: yes
[autotest_leak]
enabled: true
diff --git a/config/machine_settings/st-ten-2-linux.ini b/config/machine_settings/st-ten-2-linux.ini
index 7b91d90..f08d687 100644
--- a/config/machine_settings/st-ten-2-linux.ini
+++ b/config/machine_settings/st-ten-2-linux.ini
@@ -48,7 +48,7 @@ pressione_di_test_delta_massimo: 30
tempo_svuotamento: 1
pressione_svuotamento: 100
canale_di_prova: 0
-tecna_discharge_enable: yes
+tester_discharge_enable: yes
[autotest_leak]
enabled: true
diff --git a/config/machine_settings/st-ten-2.ini b/config/machine_settings/st-ten-2.ini
index 7f25cae..66f2020 100644
--- a/config/machine_settings/st-ten-2.ini
+++ b/config/machine_settings/st-ten-2.ini
@@ -48,7 +48,7 @@ pressione_di_test_delta_massimo: 30
tempo_svuotamento: 1
pressione_svuotamento: 100
canale_di_prova: 0
-tecna_discharge_enable: yes
+tester_discharge_enable: yes
[autotest_leak]
enabled: true
diff --git a/config/machine_settings/st-ten-3.ini b/config/machine_settings/st-ten-3.ini
index 11fd7f8..115ad9b 100644
--- a/config/machine_settings/st-ten-3.ini
+++ b/config/machine_settings/st-ten-3.ini
@@ -39,7 +39,7 @@ pressione_di_test_delta_massimo: 30
tempo_svuotamento: 1
pressione_svuotamento: 100
canale_di_prova: 0
-tecna_discharge_enable: yes
+tester_discharge_enable: yes
[autotest_leak]
enabled: true
diff --git a/config/machine_settings/st-ten-8.ini b/config/machine_settings/st-ten-8.ini
index 0d7936a..4f581f2 100644
--- a/config/machine_settings/st-ten-8.ini
+++ b/config/machine_settings/st-ten-8.ini
@@ -52,7 +52,7 @@ label_template_field: modello_etichetta
description_field: descrizione
[recipes_defaults]
-tecna_discharge_enable: yes
+tester_discharge_enable: yes
dimensione_lotto_abilitata: x
tempo_pre_riempimento: 0
pressione_pre_riempimento: 1000
diff --git a/config/machine_settings/st-ten-9.ini b/config/machine_settings/st-ten-9.ini
index 5a18ece..f16601c 100644
--- a/config/machine_settings/st-ten-9.ini
+++ b/config/machine_settings/st-ten-9.ini
@@ -1,8 +1,8 @@
[machine]
-description = ST-TEN-9 SATIL SRL - BANCO COLLAUDO TUBI R5
+description = ST-TEN-9 SATIL SRL - BANCO PROVA TENUTA 10 BAR
[hardware_config]
-archive_synchronizer: present
+archive_synchronizer: absent
label_printer: present
remote_api: absent
tecna_t3: absent
@@ -47,8 +47,8 @@ label_template_field: modello_etichetta
description_field: descrizione
[recipes_defaults]
-tecna_discharge_enable: yes
-dimensione_lotto_abilitata: x
+tester_discharge_enable: yes
+dimensione_lotto_abilitata:
tempo_pre_riempimento: 0
pressione_pre_riempimento: 0
tempo_riempimento: 5
@@ -62,17 +62,17 @@ pressione_di_test_delta_massimo: 20 # -mbar
tempo_svuotamento: 1
pressione_svuotamento: 100
canale_di_prova: 1
-modello_etichetta: satil_30x17.prn
+modello_etichetta: R5_30x17_203dpi.prn
[autotest_leak]
enabled: true
pre_filling_time: 0
-pre_filling_pressure: 1000
+pre_filling_pressure: 0
filling_time: 10
settling_time: 10
settling_pressure_min_percent: 5
settling_pressure_max_percent: 5
-test_pressure: 7000
+test_pressure: 5000
test_time: 10
test_pressure_qpos: 10 #Q+ Upper test leak limit
test_pressure_qneg: 30 #Q- Lower test leak limit
diff --git a/open_osk.bat b/open_osk.bat
new file mode 100644
index 0000000..0816ab6
--- /dev/null
+++ b/open_osk.bat
@@ -0,0 +1 @@
+osk
diff --git a/src/components/furness_controls_fco730_registers.py b/src/components/furness_controls_fco730_registers.py
index a8fd113..381f29a 100644
--- a/src/components/furness_controls_fco730_registers.py
+++ b/src/components/furness_controls_fco730_registers.py
@@ -59,14 +59,23 @@ registers = {
'4': 'ATTESA RESET',
'5': 'ATTESA START',
'6': 'ERRORE',
- '7': 'pressure_high',
- '8': 'pressure_low',
+ '7': 'PRESSIONE ALTA',
+ '8': 'PRESSIONE BASSA',
'9': 'jig_delay',
'10': 'prefilling',
'11': 'SCARICO',
'12': 'reserverd',
'13': 'sequence_delay',
'14': 'jig_open'
+ },
+ "status_result":{
+ '0': 'PASSED',
+ '1': 'NEGATIVE FAIL',
+ '2': 'POSITIVE FAIL',
+ '3': 'RESERVED',
+ '4': 'PRESSURE GROSS FAIL',
+ '5': 'RESET DURING TEST',
+ '6': 'GLOBAL FAIL',
}
}
diff --git a/src/components/furness_controls_leak_tester.py b/src/components/furness_controls_leak_tester.py
index 578645e..7547209 100644
--- a/src/components/furness_controls_leak_tester.py
+++ b/src/components/furness_controls_leak_tester.py
@@ -3,19 +3,22 @@ import sys
import time
from collections import OrderedDict
+from PyQt5.QtCore import QMutex
+
from components.component import Component
from components.furness_controls_fco730_registers import registers as fco730_registers
from components.furness_controls_fco780_registers import registers as fco780_registers
+
if "--sim-furness-controls" in sys.argv:
from components.dummies.serial import serial
else:
import serial
-ETX=b'\x03'
-EOT=b'\x04'
-ENQ=b'\x05'
-ACK=b'\x06'
-NACK=b'\x15'
+ETX = b'\x03'
+EOT = b'\x04'
+ENQ = b'\x05'
+ACK = b'\x06'
+NACK = b'\x15'
class FurnessControlsLeakTester(Component):
@@ -29,14 +32,15 @@ class FurnessControlsLeakTester(Component):
self.timeout = None
self.parity = None
self.conn = None
+ self.lock = QMutex()
self.stopbits = None
self.baudrate = None
self.port = None
self.model = None
self.settings = None
self.commands = None
- self.id1=b'0'
- self.id2=b'1'
+ self.id1 = b'0'
+ self.id2 = b'1'
def config_changed(self):
super().config_changed()
@@ -77,22 +81,30 @@ class FurnessControlsLeakTester(Component):
@Component.reconfig_on_error
def _get(self):
# READ INFO
- current_status=self.get_status()
+ current_status = self.get_status()
info = {
- "Real time test pressure output":current_status["pressure_reading"],
- "Real time differential pressure output":0,
- "Real time pressure line regulator":0,
- "Active alarm flags":0,
- "Active test program number":0,
- "Running test: active phase":current_status["current_stage"],
- "Running test: measured leak":current_status["leak_reading"],
- "Running test: test type":0,
- "Running test: sequence index":0,
- "Digital inputs status (mask)":0,
+ "Real time test pressure output": current_status["pressure_reading"],
+ "Real time differential pressure output": 0,
+ "Real time pressure line regulator": 0,
+ "Active alarm flags": 0,
+ "Active test program number": 0,
+ "Running test: active phase": current_status["current_stage"],
+ "Running test: measured leak": current_status["leak_reading"],
+ "Running test: test type": 0,
+ "Running test: sequence index": 0,
+ "Digital inputs status (mask)": 0,
}
+
+ if current_status['new_result_available'] == '1': # NEW TEST RESULT AVAILABLE
+ last_test_result = self.get_last_result() # READ RESULT TO RESET AVAILABLE FLAG
+ info.update({"Running test: result": last_test_result['status'],
+ "Running test: filling pressure": current_status["pressure_reading"],
+ "Running test: pressure at the end of settling": current_status["pressure_reading"],
+
+ })
for round_me in ["measured leak"]:
if round_me in info.keys():
- info.update({round_me:float(f"{info[round_me]:.2f}")})
+ info.update({round_me: float(f"{info[round_me]:.2f}")})
self.log.debug(str(info))
super()._get([info])
@@ -101,63 +113,99 @@ class FurnessControlsLeakTester(Component):
self.send_command("start_test")
def stop_test(self):
- self.log.warning("stopping test")
- self.current_status = self.get_status()
- if self.current_status['current_stage'] in ('standby','awaiting_start'):
+ self.log.warning("resetting state...")
+ current_status = self.get_status()
+ if current_status['status'] in ('ready_to_start',):
self.log.info("ready to start")
+ elif current_status['status'] in ('pressure_high', 'pressure_low', 'fault'):
+ self.log.info(f"{current_status['status']}, performing self check to reset")
+ elif current_status['status'] == "testing":
+ self.log.info("stop running test")
+ self.send_command("reset_test")
else:
- self.log.warning("not ready to start, performing self check to reset")
- self.send_command("self_check")
+ self.log.error(f"unknown state {current_status['status']}")
+
time.sleep(2)
def get_status(self):
- status_str=str(self.send_enquiry("current_status"),encoding="ascii")
- status_str+='z' # dummy terminator
- status_vars=OrderedDict(
- {
- 'a':'counter',
- 'b':'product_number',
- 'c':'step_number',
- 'd':'new_result_available',
- 'e':'mode',
- 'f':'status',
- 'g':'pressure_reading',
- 'i':'leak_reading',
- 'k':'current_stage',
- 'z':'dummy'
- })
- status_decoded={}
- for tag,param in status_vars.items():
- next_tag=list(status_vars)[list(status_vars.keys()).index(tag) + 1]
- match=re.search(f"{tag}([0-9.-]+){next_tag}",status_str)
- value=None
+ status_str = str(self.send_enquiry("current_status"), encoding="ascii")
+ status_str += 'z' # dummy terminator
+ status_vars = OrderedDict(
+ {
+ 'a': 'counter',
+ 'b': 'product_number',
+ 'c': 'step_number',
+ 'd': 'new_result_available',
+ 'e': 'mode',
+ 'f': 'status',
+ 'g': 'pressure_reading',
+ 'h': 'pressure_units',
+ 'i': 'leak_reading',
+ 'j': 'leak_offset',
+ 'k': 'current_stage',
+ 'z': 'dummy'
+ })
+ status_decoded = {}
+ for tag, param in status_vars.items():
+ next_tag = list(status_vars)[list(status_vars.keys()).index(tag) + 1]
+ match = re.search(f"{tag}([0-9.-]+){next_tag}", status_str)
+ value = None
if match is not None:
- value=match.group(1)
+ value = match.group(1)
if param == 'status':
value = self.enums['status_status'][value]
- if param == 'current_stage':
+ elif param == 'current_stage':
value = self.enums['status_current_stage'][value]
+ elif param == 'pressure_reading':
+ value = f"{float(value) * 1000:.1f}"
- status_decoded[param]=value
- if next_tag =='z':
+ status_decoded[param] = value
+ if next_tag == 'z':
break
return status_decoded
+ def get_last_result(self):
+ res_str = str(self.send_enquiry("last_test_result"), encoding="ascii")
+ res_str += 'z' # dummy terminator
+ status_vars = OrderedDict(
+ {
+ 'a': 'counter',
+ 'b': 'step_number',
+ 'c': 'product_number',
+ 'd': 'status',
+ 'z': 'dummy'
+ })
+ res_decoded = {}
+ for tag, param in status_vars.items():
+ next_tag = list(status_vars)[list(status_vars.keys()).index(tag) + 1]
+ match = re.search(f"{tag}([0-9.-]+){next_tag}", res_str)
+ value = None
+ if match is not None:
+ value = match.group(1)
+ if param == 'status':
+ value = self.enums['status_result'].get(value, 'NOK')
+
+ res_decoded[param] = value
+ if next_tag == 'z':
+ break
+
+ return res_decoded
+
def write_recipe(self, recipe, step, table=None):
# PREPARE DATA
- product_id='"'+recipe.part_number[:16]+'"'
- product_id=product_id.encode("ascii")
- test_press_bar=step.spec["test_pressure"]/1000
- prefill_press_bar=step.spec["pre_filling_pressure"]/1000
- tolerance=int(step.spec["settling_pressure_min_percent"])
- fail_pos=test_press_bar+(int(step.spec["test_pressure_qpos"])/1000)
- fail_neg=test_press_bar+(int(step.spec["test_pressure_qneg"])/1000)
- fill_time=float(step.spec["filling_time"])
- stab_time=float(step.spec["settling_time"])
- test_time=float(step.spec["test_time"])
- prefill_time=float(step.spec["pre_filling_time"])
- vent_time=float(step.spec["flush_time"])
+ product_id = '"' + recipe.part_number[:16] + '"'
+ product_id = product_id.encode("ascii")
+ test_press_bar = step.spec["test_pressure"] / 1000
+ prefill_press_bar = step.spec["pre_filling_pressure"] / 1000
+ tolerance = int(step.spec["settling_pressure_min_percent"])
+ fail_pos = test_press_bar + (int(step.spec["test_pressure_qpos"]) / 1000)
+ fail_neg = test_press_bar + (int(step.spec["test_pressure_qneg"]) / 1000)
+ fill_time = float(step.spec["filling_time"])
+ stab_time = float(step.spec["settling_time"])
+ test_time = float(step.spec["test_time"])
+ prefill_time = float(step.spec["pre_filling_time"])
+ vent_time = float(step.spec["flush_time"])
# SEND RECIPE PARAMETERS
self.send_command("change_cur_prod_50")
self.send_product_tag("product_id", product_id)
@@ -175,57 +223,60 @@ class FurnessControlsLeakTester(Component):
self.send_product_tag("fail_low", f"{fail_neg:3.1f}")
self.send_product_tag("outputs_a_h", f"{int(0b01000000)}")
+ self.get_last_result() # CLEAR POSSIBLE NEW RESULT AVAILABLE FLAG
- def send_command(self,command):
+ def send_command(self, command):
if type(command) is str:
- command=self.commands[command]
- out_bytes= bytearray()
+ command = self.commands[command]
+ out_bytes = bytearray()
out_bytes.extend(EOT)
out_bytes.extend(self.id1)
out_bytes.extend(self.id2)
out_bytes.extend(command)
out_bytes.extend(ETX)
- checksum=self.calc_checksum(out_bytes)
+ checksum = self.calc_checksum(out_bytes)
out_bytes.append(checksum)
-
+ self.lock.lock()
self.conn.write(out_bytes)
- response = self.conn.read(100)
+ response = self.conn.read(1)
+ self.lock.unlock()
if response == ACK:
return True
else:
self.log.error(f"SEND COMMAND({command}):{response}")
return None
- def send_enquiry(self,enquiry):
+ def send_enquiry(self, enquiry):
if type(enquiry) is str:
- enquiry=self.commands[enquiry]
- out_bytes=bytearray(EOT)
+ enquiry = self.commands[enquiry]
+ out_bytes = bytearray(EOT)
out_bytes.extend(self.id1)
out_bytes.extend(self.id2)
out_bytes.extend(enquiry)
out_bytes.extend(ENQ)
checksum = self.calc_checksum(out_bytes)
out_bytes.append(checksum)
-
+ self.lock.lock()
self.conn.write(out_bytes)
response = self.conn.read(100)
+ self.lock.unlock()
if len(response):
read_checksum = response[-1]
else:
read_checksum = None
- calculated_checksum = self.calc_checksum(response[0:-1],start_idx=0)
+ calculated_checksum = self.calc_checksum(response[0:-1], start_idx=0)
if read_checksum != calculated_checksum:
- self.log.error(f"SEND ENQUIRY:{response}")
+ self.log.error(f"ENQUIRY RESPONSE CHECKSUM:{read_checksum}!={calculated_checksum}")
return None
else:
- response = response[:-2] #strip checksum & ETX
+ response = response[:-2] # strip checksum & ETX
return response
- def send_product_tag(self,tag,tag_data):
+ def send_product_tag(self, tag, tag_data):
self.log.info(f"Sending tag:{tag}={tag_data}")
- command=bytearray(self.commands["product_data"])
+ command = bytearray(self.commands["product_data"])
if type(tag_data) is str:
- tag_data=bytearray(tag_data,encoding="ascii")
+ tag_data = bytearray(tag_data, encoding="ascii")
command.extend(self.product_tags[tag])
command.extend(tag_data)
self.send_command(command)
diff --git a/src/components/tecna_marposs_provaset_t3.py b/src/components/tecna_marposs_provaset_t3.py
index 22be9d2..35d10ae 100644
--- a/src/components/tecna_marposs_provaset_t3.py
+++ b/src/components/tecna_marposs_provaset_t3.py
@@ -300,7 +300,7 @@ class TecnaMarpossProvasetT3(ModbusComponent):
"PSQ - Next sequence program PSOUT mode": 0,
"RAMPS: T1 configuration": pid_ramps,
"PID: pressure correction": 100,
- "Various flags": 0b0000000000010000 if self.config["recipes_defaults"]["tecna_discharge_enable"]=="yes" else 0b0000000000000000
+ "Various flags": 0b0000000000010000 if self.config["recipes_defaults"]["tester_discharge_enable"]=="yes" else 0b0000000000000000
}
if self.model == "t3p":
diff --git a/src/ui/about/about.ui b/src/ui/about/about.ui
index 54b403b..4cec820 100644
--- a/src/ui/about/about.ui
+++ b/src/ui/about/about.ui
@@ -78,41 +78,27 @@
-
-
-
- Telefono:
-
-
-
- -
-
-
- +39 0118000876
-
-
-
- -
P.IVA:
- -
+
-
11836090016
- -
+
-
Indirizzo:
- -
+
-
Via Vittime delle Foibe, 10 10036 - Settimo Torinese (TO)
diff --git a/src/ui/imgs/r5.png b/src/ui/imgs/r5.png
new file mode 100644
index 0000000..84d2b0b
Binary files /dev/null and b/src/ui/imgs/r5.png differ
diff --git a/src/ui/login/login.py b/src/ui/login/login.py
index 7a17829..bbc0d52 100755
--- a/src/ui/login/login.py
+++ b/src/ui/login/login.py
@@ -60,4 +60,4 @@ class Login(Widget):
def show_osk(self):
self.password_le.setFocus()
if platform.system().lower() == 'windows':
- subprocess.Popen(["osk.bat"]) # OPEN ON SCREEN KEYBOARD
+ subprocess.Popen(["open_osk.bat"]) # OPEN ON SCREEN KEYBOARD
diff --git a/src/ui/recipe_selection/recipe_selection.py b/src/ui/recipe_selection/recipe_selection.py
index 35cb8c3..352b656 100755
--- a/src/ui/recipe_selection/recipe_selection.py
+++ b/src/ui/recipe_selection/recipe_selection.py
@@ -57,6 +57,13 @@ class Recipe_Selection(Widget):
}
filters = {"archived": False}
step_defaults = self.read_steps(self.config.get("recipes_defaults", noner), noner)
+ custom_label_folder=f"config/label_templates/{str(self.config.machine_id)}/"
+ standard_label_folder=f"config/label_templates/"
+ if os.path.exists(custom_label_folder):
+ label_folder = custom_label_folder
+ else:
+ label_folder = standard_label_folder
+
step_defaults.update({
"vision": {
# "recipe": sorted(glob("*.ini", root_dir="./config/vision/recipes/")), # only in python3.10
@@ -64,7 +71,7 @@ class Recipe_Selection(Widget):
},
"print": {
# "template": sorted(glob("*.prn", root_dir="./config/label_templates/")), # only in python3.10
- "template": sorted(map(os.path.basename, glob("./config/label_templates/*.prn"))),
+ "template": sorted(map(os.path.basename, glob(f"{label_folder}*.prn"))),
},
}),
self.crud = Crud(
diff --git a/src/ui/test/test.py b/src/ui/test/test.py
index 3260f29..f1dd5c1 100755
--- a/src/ui/test/test.py
+++ b/src/ui/test/test.py
@@ -110,6 +110,7 @@ class Test(Widget):
self.cycle_steps = None
self.cycle_index = -1
self.print_step = None
+ self.last_label = None
self.require_discard_piece = False
# SETUP AUTOTEST
self.autotest_request = False
@@ -193,7 +194,7 @@ class Test(Widget):
self.recipe_selection_mode = "barcode"
self.change_recipe()
def reprint_label(self):
- self.print(self.archived, self.print_step.spec.get("template", "EtichettaR5"))
+ self.print(self.last_label, self.print_step.spec.get("template", "EtichettaR5"))
def fail_cycle(self):
self.next(action="fail")
@@ -326,6 +327,7 @@ class Test(Widget):
self.next_timer.start(0)
if self.step.type == "done":
self.archived = self.done()
+ self.last_label=copy.deepcopy(self.archived)
self.next_timer.start(500)
elif self.step.type == "print":
compiled_label = self.print(self.archived, self.step.spec.get("template", "EtichettaR5"))
@@ -532,9 +534,9 @@ class Test(Widget):
self.data.get("recipe",{}).get("spec",{}).pop("available_steps",None)
for leak in ["leak_1","leak_2"]:
if leak in self.data.keys():
- results={k:self.data[leak]["results"]["tecna_t3"][k] for k in ["Running test: result"]}
+ results={k:self.data[leak]["results"][self.tester_component][k] for k in ["Running test: result"]}
- results.update({k:round(float(self.data[leak]["results"]["tecna_t3"][k]),2) for k in ["Running test: filling pressure",
+ results.update({k:round(float(self.data[leak]["results"][self.tester_component][k]),2) for k in ["Running test: filling pressure",
"Running test: measured leak",
"Running test: pressure at the end of settling"]}
)
@@ -586,9 +588,13 @@ class Test(Widget):
def print(self, archived, label):
self.log.info("cycle print")
+ if archived is None:
+ self.log.error("attempting to print empty label")
+ return None
+
if archived.label is not None:
# raise AssertionError("this should never happen")
- self.log.debug("ERROR cycle printed already compiled label")
+ self.log.info("printing already compiled label")
# LABEL PRINT
recipe = archived.test_data.get("recipe", {})
diff --git a/src/ui/test_leak/test_leak.py b/src/ui/test_leak/test_leak.py
index 8f82dd0..d4e61b3 100644
--- a/src/ui/test_leak/test_leak.py
+++ b/src/ui/test_leak/test_leak.py
@@ -108,7 +108,7 @@ class Test_Leak(Test_Test):
if self.step.spec.get("autotest", False): # IF AUTOTESTING UPLOAD RECIPE EVERY TIME
self.recipe_written = False
- if self.parent.config["hardware_config"].get("second_leak_test", None): # IF SECOND LEAK TEST ENABLED UPLOAD RECIPE EVERY TIME
+ if self.parent.config["hardware_config"].get("second_leak_test", "absent") == "present": # IF SECOND LEAK TEST ENABLED UPLOAD RECIPE EVERY TIME
self.recipe_written = False
if not self.recipe_written:
@@ -253,6 +253,10 @@ class Test_Leak(Test_Test):
"ATTESA START",
"END TEST, WAITING THE START OF A NEW TEST"
"FINE TEST",
+ "STANDBY",
+ "PRESSIONE BASSA",
+ "PRESSIONE ALTA",
+ "ERRORE"
}:
self.start_b.setEnabled(True)
diff --git a/src/ui/test_leak/test_leak.ui b/src/ui/test_leak/test_leak.ui
index 1142b44..a40af41 100644
--- a/src/ui/test_leak/test_leak.ui
+++ b/src/ui/test_leak/test_leak.ui
@@ -491,6 +491,7 @@
20
+ 75
true
@@ -961,6 +962,7 @@
20
+ 75
true
@@ -1437,6 +1439,7 @@
20
+ 75
true
@@ -1468,6 +1471,7 @@
12
+ 75
true
@@ -1487,6 +1491,7 @@
12
+ 75
true
@@ -1534,6 +1539,7 @@
12
+ 75
true
@@ -1552,6 +1558,7 @@
20
+ 50
false
@@ -1570,6 +1577,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1589,6 +1597,7 @@ border: 1px solid black;
20
+ 50
false
@@ -1613,6 +1622,7 @@ border: 1px solid black;
20
+ 50
false
@@ -1631,6 +1641,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1644,6 +1655,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1663,6 +1675,7 @@ border: 1px solid black;
20
+ 50
false
@@ -1703,6 +1716,7 @@ border: 1px solid black;
20
+ 50
false
@@ -1720,7 +1734,8 @@ border: 1px solid black;
- 16
+ 20
+ 50
false
@@ -1739,6 +1754,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1752,6 +1768,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1771,6 +1788,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1806,6 +1824,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1828,6 +1847,7 @@ border: 1px solid black;
20
+ 50
false
@@ -1864,6 +1884,7 @@ border: 1px solid black;
48
+ 50
false
@@ -1885,6 +1906,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1901,6 +1923,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1917,6 +1940,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1930,6 +1954,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1946,6 +1971,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1962,6 +1988,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1975,6 +2002,7 @@ border: 1px solid black;
16
+ 50
false
@@ -1991,6 +2019,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2013,6 +2042,7 @@ border: 1px solid black;
20
+ 50
false
@@ -2031,6 +2061,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2044,6 +2075,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2066,6 +2098,7 @@ border: 1px solid black;
20
+ 50
false
@@ -2090,6 +2123,7 @@ border: 1px solid black;
20
+ 50
false
@@ -2108,6 +2142,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2121,6 +2156,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2133,7 +2169,8 @@ border: 1px solid black;
- 16
+ 20
+ 50
false
@@ -2151,7 +2188,8 @@ border: 1px solid black;
- 16
+ 20
+ 50
false
@@ -2170,6 +2208,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2186,6 +2225,7 @@ border: 1px solid black;
16
+ 50
false
@@ -2202,6 +2242,7 @@ border: 1px solid black;
16
+ 50
false