Merge remote-tracking branch 'origin/master'
# Conflicts: # src/components/tecna_marposs_provaset_t3.py
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
|
|
@ -8,7 +8,7 @@
|
|||
height="590"
|
||||
viewBox="0 0 902 590"
|
||||
sodipodi:docname="18JA712CP.svg"
|
||||
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
|
|
@ -26,12 +26,12 @@
|
|||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="1.3830508"
|
||||
inkscape:cx="450.81495"
|
||||
inkscape:cy="295"
|
||||
inkscape:window-width="2490"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="70"
|
||||
inkscape:window-y="27"
|
||||
inkscape:cx="450.45345"
|
||||
inkscape:cy="294.63849"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1" />
|
||||
<g
|
||||
|
|
@ -62,8 +62,8 @@
|
|||
preserveAspectRatio="none"
|
||||
xlink:href="img/arw-yel-down.png"
|
||||
id="sensor_3"
|
||||
x="341.79031"
|
||||
y="208.93405"
|
||||
x="726.4472"
|
||||
y="271.11542"
|
||||
inkscape:label="sensor_3"
|
||||
inkscape:svg-dpi="1" />
|
||||
</g>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 109 KiB |
148
config/instruction_images/st-ten-13/07N131597.svg
Normal file
|
After Width: | Height: | Size: 297 KiB |
29
config/label_templates/203/PAL.prn
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA
|
||||
~TA000
|
||||
~JSN
|
||||
^LT0
|
||||
^MNW
|
||||
^MTT
|
||||
^PON
|
||||
^PMN
|
||||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD22
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
^PA0,1,1,0
|
||||
^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW679
|
||||
^LL200
|
||||
^LS0
|
||||
^FO24,83^GE96,96,48^FS
|
||||
^FO184,83^GE96,96,48^FS
|
||||
^FO344,83^GE96,96,48^FS
|
||||
^FO504,83^GE96,96,48^FS
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
33
config/label_templates/st-ten-11/203/Mclaren_barcode.prn
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA
|
||||
~TA000
|
||||
~JSN
|
||||
^LT0
|
||||
^MNW
|
||||
^MTT
|
||||
^PON
|
||||
^PMN
|
||||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD20
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
^PA0,1,1,0
|
||||
^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW320
|
||||
^LL1039
|
||||
^LS0
|
||||
^FT37,57^A0N,24,23^FH\^CI28^FD{RECIPE}^FS^CI27
|
||||
^FT250,38^A0N,16,15^FH\^CI28^FDVEROX^FS^CI27
|
||||
^FT34,92^A0N,24,23^FH\^CI28^FDFED^FS^CI27
|
||||
^BY2,3,58^FT37,173^BCN,,Y,N
|
||||
^FH\^FD>:{RECIPE}^FS
|
||||
^BY2,3,54^FT82,282^BCN,,Y,N
|
||||
^FH\^FD>:{SN}^FS
|
||||
^FT34,357^A0N,24,23^FH\^CI28^FD{DATE}{SN}^FS^CI27
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD15
|
||||
~SD30
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR2,2~SD25^JUS^LRN^CI0^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW325
|
||||
^LL1119
|
||||
^LS0
|
||||
^FT293,694^A0I,25,21^FH\^FD{DD}/{MO}/{YY}^FS
|
||||
^FT145,694^A0I,25,21^FH\^FD{HH}:{MI}:{SS}^FS
|
||||
^FT291,1032^A0I,25,24^FH\^FDNumero Disegno^FS
|
||||
^FT293,725^A0I,25,24^FH\^FDData/Ora Prova^FS
|
||||
^FT293,771^A0I,25,24^FH\^FDN. Pezzo:^FS
|
||||
^FT185,770^A0I,25,24^FH\^FD{SN5}^FS
|
||||
^BY120,120^FT289,883^BXI,6,200,0,0,1,~
|
||||
^FH\^FD{PART}{MO}{YY}{SN5}^FS
|
||||
^FT291,832^A0I,25,24^FH\^FD{PART}{MO}{YY}{SN5}^FS
|
||||
^LRY^FO144,863^GB168,0,163^FS^LRN
|
||||
^PQ1,0,1,Y^XZ
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA
|
||||
~TA000
|
||||
~JSN
|
||||
^LT0
|
||||
^MNW
|
||||
^MTT
|
||||
^PON
|
||||
^PMN
|
||||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD20
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
^PA0,1,1,0
|
||||
^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW320
|
||||
^LL1039
|
||||
^LS0
|
||||
^FT9,46^A0N,24,23^FH\^CI28^FD{RECIPE}^FS^CI27
|
||||
^FT250,38^A0N,16,15^FH\^CI28^FDVEROX^FS^CI27
|
||||
^FT9,80^A0N,24,23^FH\^CI28^FDFED^FS^CI27
|
||||
^BY2,3,58^FT65,166^BCN,,Y,N
|
||||
^FH\^FD>:{RECIPE}^FS
|
||||
^BY2,3,54^FT131,259^BCN,,Y,N
|
||||
^FH\^FD>:{SN}^FS
|
||||
^FT9,316^A0N,24,23^FH\^CI28^FD{DATE}^FS^CI27
|
||||
^FT109,321^A0N,24,23^FH\^CI28^FD{SN}^FS^CI27
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
^FT207,888^A0N,25,25^FH\^CI28^FD{TSET} s^FS^CI27
|
||||
^FT145,705^A0N,25,25^FH\^CI28^FD{PTEST} mbar^FS^CI27
|
||||
^FT31,236^BXN,6,200,0,0,1,_,1
|
||||
^FH\^FD{BCODE}^FS
|
||||
^FT29,287^A0N,25,25^FH\^CI28^FD{BCODE}^FS^CI27
|
||||
^FH\^FD{PART}{MO}{YY}{SN5}^FS
|
||||
^FT29,287^A0N,25,25^FH\^CI28^FD{PART}{MO}{YY}{SN5}^FS^CI27
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
|
|
|
|||
|
|
@ -92,8 +92,8 @@ settling_pressure_min_percent: 5
|
|||
settling_pressure_max_percent: 5
|
||||
test_pressure: 7000
|
||||
test_time: 10
|
||||
test_pressure_qpos: 10 #Q+ Upper test leak limit
|
||||
test_pressure_qneg: 30 #Q- Lower test leak limit
|
||||
test_pressure_qpos: 22 #Q+ Upper test leak limit
|
||||
test_pressure_qneg: 32 #Q- Lower test leak limit
|
||||
test_pressure_tt_qpos: 1 # Q+ Upper test leak limit (tube-tube)
|
||||
test_pressure_tt_qneg: 5 # Q- Lower test leak limit (tube-tube)
|
||||
flush_time: 1
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ discard_box: absent
|
|||
#enforce_piece_removal: yes
|
||||
|
||||
[tecna_t3]
|
||||
port: /dev/ttyUSB0
|
||||
port: /dev/ttyUSB1
|
||||
model: t3l
|
||||
|
||||
[label_printer]
|
||||
|
|
@ -34,7 +34,7 @@ risoluzione:203
|
|||
id: USB-5862,BID#0
|
||||
|
||||
[fixture_rfid]
|
||||
port: ttyUSB1 #correct way to declare usb in linux
|
||||
port: ttyUSB0 #correct way to declare usb in linux
|
||||
|
||||
[recipe]
|
||||
recipe_name_field: codice_ricetta
|
||||
|
|
@ -73,8 +73,8 @@ pressione_di_test_delta_massimo_2: 30
|
|||
tempo_svuotamento_2: 0
|
||||
pressione_svuotamento_2: 100
|
||||
canale_di_prova_2: 2
|
||||
modello_etichetta: EtichettaR5_Montaggio_1prova.prn
|
||||
pid_pressure_correction: 105
|
||||
modello_etichetta: Errecinque_standard.prn
|
||||
pid_pressure_correction: 98
|
||||
barcode_format: {PART}{MO}{YY}{SN5}
|
||||
|
||||
[autotest_leak]
|
||||
|
|
@ -85,10 +85,10 @@ filling_time: 10
|
|||
settling_time: 10
|
||||
settling_pressure_min_percent: 5
|
||||
settling_pressure_max_percent: 5
|
||||
test_pressure: 7000
|
||||
test_pressure: 5900
|
||||
test_time: 10
|
||||
test_pressure_qpos: 5 #Q+ Upper test leak limit
|
||||
test_pressure_qneg: 17 #Q- Lower test leak limit
|
||||
test_pressure_qpos: 3.5 #Q+ Upper test leak limit
|
||||
test_pressure_qneg: 6.5 #Q- Lower test leak limit
|
||||
test_pressure_tt_qpos: 1 # Q+ Upper test leak limit (tube-tube)
|
||||
test_pressure_tt_qneg: 5 # Q- Lower test leak limit (tube-tube)
|
||||
flush_time: 1
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ settling_pressure_max_percent: 5
|
|||
test_pressure: 7000
|
||||
test_time: 10
|
||||
test_pressure_qpos: 8 #Q+ Upper test leak limit
|
||||
test_pressure_qneg: 12 #Q- Lower test leak limit
|
||||
test_pressure_qneg: 13 #Q- Lower test leak limit
|
||||
test_pressure_tt_qpos: 1 # Q+ Upper test leak limit (tube-tube)
|
||||
test_pressure_tt_qneg: 5 # Q- Lower test leak limit (tube-tube)
|
||||
flush_time: 1
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class Os_Label_Printer(Component):
|
|||
def __init__(self, config=None, name=None):
|
||||
super().__init__(config=config, name=name, threaded=False)
|
||||
self.simulate = False
|
||||
if "--sim-os-label-printer" in sys.argv:
|
||||
if "--sim-printer" in sys.argv:
|
||||
self.simulate = True
|
||||
|
||||
def config_changed(self):
|
||||
|
|
|
|||
|
|
@ -302,8 +302,7 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
|||
recipe_barcode = f"j{recipe.part_number}"[:16].encode("ascii")
|
||||
recipe_barcode += b"\x00" * (24 - len(recipe_barcode))
|
||||
test_flags = 0b0110100001010000 if (step.spec.get("autotest", False) in ["ko_check"]) else 0b0110000001010000
|
||||
pid_mode_text = "AUTO"
|
||||
#pid_mode_text = step.spec["pid_mod_config"] # Get the selected text from the combobox
|
||||
pid_mode_text = step.spec.get("pid_mod_config","AUTO") # Get the selected text from the combobox
|
||||
pid_mode_value = { # Mapping of text to numeric values
|
||||
"AUTO": 5,
|
||||
"FAST": 0,
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ init_db()
|
|||
# register or reset admin
|
||||
admin = Users.get_user("ADMIN")
|
||||
if admin is None or not admin.is_admin:
|
||||
Users.register(username="ADMIN", password="123123", roles=["admin"])
|
||||
Users.register(username="ADMIN", password="78900987", roles=["admin"])
|
||||
# register or reset user
|
||||
Users.register(username="USER", password="user")
|
||||
|
||||
|
|
|
|||
|
|
@ -255,9 +255,11 @@ try:
|
|||
if session is not None:
|
||||
if session.is_admin:
|
||||
self.main_window.admin_m.menuAction().setVisible(True)
|
||||
self.main_window.tag_a.setVisible(True)
|
||||
else:
|
||||
self.main_window.admin_m.menuAction().setVisible(False)
|
||||
# open test
|
||||
self.main_window.tag_a.setVisible(False)
|
||||
# open test
|
||||
self.main_window.open_tab(Test(self.config, self.components, self))
|
||||
self.main_window.centralWidget().request_autotest("login")
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class Login(Widget):
|
|||
# TESTING
|
||||
if "--auto-login-admin" in sys.argv:
|
||||
self.user_cb.setCurrentText("ADMIN")
|
||||
self.password_le.setText("123123")
|
||||
self.password_le.setText("78900987")
|
||||
elif "--auto-login-user" in sys.argv or "--test" in sys.argv:
|
||||
self.user_cb.setCurrentText("USER")
|
||||
self.password_le.setText("user")
|
||||
|
|
|
|||
|
|
@ -170,7 +170,10 @@ class Test(Widget):
|
|||
self.autotesting_reason = None
|
||||
self.autotest_cycle_steps = None
|
||||
if "--no-autotest" not in sys.argv:
|
||||
self.autotest_period = int(8.5 * 60 * 60 * 1000) # 8.5 HOURS
|
||||
if "--test-autotest" in sys.argv:
|
||||
self.autotest_period = int(60 * 1000) # 1 min
|
||||
else:
|
||||
self.autotest_period = int(8.5 * 60 * 60 * 1000) # 8.5 HOURS
|
||||
# self.autotest_period = 12 * 60 * 60 * 1000 # 12 HOURS
|
||||
# if not self.config["autotest_done"]:
|
||||
# self.request_autotest("init")
|
||||
|
|
@ -335,6 +338,7 @@ class Test(Widget):
|
|||
if self.autotest_request is not False and self.autotest_cycle_steps is not None and not self.autotesting and (self.cycle_index == -1 or self.cycle_index + 1 >= len(self.cycle_steps)):
|
||||
# if autotest was requested
|
||||
# and if cycle_steps is not started or has ended
|
||||
self.cycle_index = -1
|
||||
self.autotesting = True
|
||||
self.autotesting_reason = self.autotest_request
|
||||
self.autotest_request = False
|
||||
|
|
@ -808,7 +812,7 @@ class Test(Widget):
|
|||
"OPERATOR": str(archived.user.username),
|
||||
"BADGE_NUM": str(archived.user.badge_number),
|
||||
#BARCODE
|
||||
"BCODE": str(self.step.spec["barcode"]),
|
||||
"BCODE": str(self.step.spec.get("barcode","")),
|
||||
|
||||
# RESULT
|
||||
"RESULT": str("CONFORME" if leak_test_1.get("ok", False) else "SCARTO") + str(" FORZATO" if self.data.get("overridden", False) else ""),
|
||||
|
|
@ -841,7 +845,7 @@ class Test(Widget):
|
|||
|
||||
def print_extra_labels(self):
|
||||
# PRINT EXTRA LABELS IF NEEDED (BEFORE LEAK TEST)
|
||||
if "extra_label_printer" in self.components.keys() and self.print_step is not None:
|
||||
if "extra_label_printer" in self.components.keys() and self.print_step is not None and self.autotesting is False:
|
||||
printer_fields = self.print_step.spec
|
||||
if len(printer_fields["extra_label"]) > 0:
|
||||
labels = printer_fields["extra_label"].split(",")
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class Test_Admin_Permission(Widget):
|
|||
self.cancel_b.clicked.connect(self.cancel)
|
||||
# TESTING
|
||||
if "--auto-accept-test-admin-permission" in sys.argv or "--test" in sys.argv:
|
||||
self.password_le.setText("123123")
|
||||
self.password_le.setText("78900987")
|
||||
self.test_timer = QTimer()
|
||||
self.test_timer.setSingleShot(True)
|
||||
self.test_timer.timeout.connect(self.continue_b.clicked.emit)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class Test_Instructions(Test_Test):
|
|||
self.svg_root = etree.parse(svg_path)
|
||||
self.svg_str = etree.tostring(self.svg_root)
|
||||
self.svg_str=etree.tostring(self.svg_root)
|
||||
self.expected_input_state = True if step.step_type == "instruction" or "instruction_extra" else False
|
||||
self.expected_input_state = True if step.step_type in ("instruction","instruction_extra") else False
|
||||
|
||||
self.monitored_ids=self.svg_root.xpath(f'''.//*[starts-with(@id, 'sensor_')]''')
|
||||
self.warning_ids=self.svg_root.xpath(f'''.//*[starts-with(@id, 'warning_')]''')
|
||||
|
|
|
|||
|
|
@ -103,7 +103,10 @@ class Test_Leak(Test_Test):
|
|||
self.test_num_l.setText("2/2")
|
||||
else:
|
||||
self.test_num_l.setText("1/1")
|
||||
self.template_print_l.setText(f"{self.parent.print_template}")
|
||||
if self.step.spec.get("autotest", False):
|
||||
self.template_print_l.setText(f"AUTOTEST")
|
||||
else:
|
||||
self.template_print_l.setText(f"{self.parent.print_template}")
|
||||
self.recipe_pressure_l.setText(f"{self.step.spec['test_pressure']}")
|
||||
self.leak_min_l.setText(f"{self.step.spec['test_pressure_qneg']}")
|
||||
self.leak_max_l.setText(f"{self.step.spec['test_pressure_qpos']}")
|
||||
|
|
@ -144,7 +147,8 @@ class Test_Leak(Test_Test):
|
|||
super().visualize(None, img=self.status_imgs_full["calibrated-leak"])
|
||||
else:
|
||||
self.display_text(text="COLLEGARE GLI ATTACCHI PNEUMATICI E PREMERE START PER INIZIARE LA PROVA TENUTA")
|
||||
|
||||
self.template_print_l.setVisible(True)
|
||||
self.template_label.setVisible(True)
|
||||
if self.simulate:
|
||||
QApplication.processEvents()
|
||||
time.sleep(2)
|
||||
|
|
|
|||