diff --git a/config/label_designs/STANDARD/EtichettaR5_Montaggio.nlbl b/config/label_designs/STANDARD/EtichettaR5_Montaggio.nlbl new file mode 100644 index 0000000..b810204 Binary files /dev/null and b/config/label_designs/STANDARD/EtichettaR5_Montaggio.nlbl differ diff --git a/config/label_designs/STANDARD/EtichettaR5_Montaggio_2prove.nlbl b/config/label_designs/STANDARD/EtichettaR5_Montaggio_2prove.nlbl new file mode 100644 index 0000000..1194762 Binary files /dev/null and b/config/label_designs/STANDARD/EtichettaR5_Montaggio_2prove.nlbl differ diff --git a/config/label_templates/EtichettaR5_Montaggio_2prove.prn b/config/label_templates/EtichettaR5_Montaggio_2prove.prn new file mode 100644 index 0000000..ef7137e --- /dev/null +++ b/config/label_templates/EtichettaR5_Montaggio_2prove.prn @@ -0,0 +1,70 @@ +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 +^LL1119 +^LS0 +^FT57,74^A0N,39,38^FH\^CI28^FDERRECINQUE^FS^CI27 +^FT71,102^A0N,20,20^FB249,1,5,C^FH\^CI28^FDFluid System^FS^CI27 +^FT71,127^A0N,20,20^FB249,1,5,C^FH\^CI28^FDVia Meucci 31/A^FS^CI27 +^FT71,152^A0N,20,20^FB249,1,5,C^FH\^CI28^FD10079 Mappano(TO)^FS^CI27 +^FT85,187^A0N,25,25^FH\^CI28^FDCliente:^FS^CI27 +^FT87,359^A0N,20,18^FH\^CI28^FD{DD}/{MO}/{YY}^FS^CI27 +^FT216,359^A0N,20,18^FH\^CI28^FD{HH}:{MI}:{SS}^FS^CI27 +^FT18,1013^A0N,31,30^FH\^CI28^FDESITO:^FS^CI27 +^FT144,1013^A0N,31,30^FH\^CI28^FDCONFORME^FS^CI27 +^FT85,212^A0N,20,20^FH\^CI28^FD{CLIENT}^FS^CI27 +^FT87,241^A0N,25,25^FH\^CI28^FDNumero Disegno:^FS^CI27 +^FT87,266^A0N,20,20^FH\^CI28^FD{PART}^FS^CI27 +^FT87,333^A0N,26,25^FH\^CI28^FDData/Ora Prova^FS^CI27 +^FT87,386^A0N,25,25^FH\^CI28^FDStazione:^FS^CI27 +^FT88,295^A0N,25,25^FH\^CI28^FDN. Pezzo:^FS^CI27 +^FT223,296^A0N,20,20^FH\^CI28^FD{SN4}^FS^CI27 +^FT87,426^A0N,25,25^FH\^CI28^FDOPERATORE:^FS^CI27 +^FT196,388^A0N,17,13^FH\^CI28^FD{STATION}^FS^CI27 +^FT236,427^A0N,17,13^FH\^CI28^FD{OPERATOR}^FS^CI27 +^FO52,475^GB215,0,8^FS +^FT19,541^A0N,28,28^FH\^CI28^FDProva 2 (Alta)^FS^CI27 +^FT19,568^A0N,23,23^FH\^CI28^FDPress.Max(mbar)^FS^CI27 +^FT207,571^A0N,20,20^FH\^CI28^FD{PSETMAXP2}^FS^CI27 +^FT19,596^A0N,23,23^FH\^CI28^FDPress.Min(mbar)^FS^CI27 +^FT207,599^A0N,20,20^FH\^CI28^FD{PSETMINP2}^FS^CI27 +^FT19,626^A0N,23,23^FH\^CI28^FDCaduta(mbar)^FS^CI27 +^FT207,629^A0N,20,20^FH\^CI28^FD{RESLEAK2}^FS^CI27 +^FT19,668^A0N,28,28^FH\^CI28^FDProva 1 (Bassa)^FS^CI27 +^FT19,695^A0N,23,23^FH\^CI28^FDPress.Max(mbar)^FS^CI27 +^FT207,698^A0N,20,20^FH\^CI28^FD{PSETMAXP}^FS^CI27 +^FT19,723^A0N,23,23^FH\^CI28^FDPress.Min(mbar)^FS^CI27 +^FT207,726^A0N,20,20^FH\^CI28^FD{PSETMINP}^FS^CI27 +^FT19,753^A0N,23,23^FH\^CI28^FDCaduta(mbar)^FS^CI27 +^FT207,756^A0N,20,20^FH\^CI28^FD{RESLEAK}^FS^CI27 +^FT19,851^A0N,23,23^FH\^CI28^FDT.Pulizia(sec)^FS^CI27 +^FT207,854^A0N,20,20^FH\^CI28^FD{PSETMAXP}^FS^CI27 +^FT18,879^A0N,23,23^FH\^CI28^FDT.Riempim.(sec)^FS^CI27 +^FT207,882^A0N,20,20^FH\^CI28^FD{PSETMINP}^FS^CI27 +^FT19,909^A0N,23,23^FH\^CI28^FDT.Stabilizzaz.(sec)^FS^CI27 +^FT207,912^A0N,20,20^FH\^CI28^FD{RESLEAK}^FS^CI27 +^FT19,941^A0N,23,23^FH\^CI28^FDCaduta Tollerata max:^FS^CI27 +^FT18,969^A0N,20,20^FH\^CI28^FD{PMIN} bar^FS^CI27 +^FT12,129^A0R,23,23^FH\^CI28^FD{YY}{MO}{DD}{HH}{MI}{SS}{SN4}^FS^CI27 +^BY1,3,39^FT39,120^BCR,,N,N +^FH\^FD>:{YY}{MO}{DD}{HH}{MI}{SS}{SN4}^FS +^PQ1,0,1,Y +^XZ diff --git a/config/machine_settings/defaults.ini b/config/machine_settings/defaults.ini index dee1d9a..1a5e2f4 100644 --- a/config/machine_settings/defaults.ini +++ b/config/machine_settings/defaults.ini @@ -5,6 +5,7 @@ description = INSERIRE NOME BANCO tecna_t3: present galaxy_camera: absent digital_io: absent +second_leak_test: absent ; archive_synchronizer: present ; label_printer: present ; multicomp: present @@ -50,7 +51,7 @@ archive_endpoint: https://r5portal.it/api/st-ten-save/ images_path: data/images poll_time: 60 hold_time: 1 -service_account_json: data/secrets/errecinque-prodserver-d132c3d469cc.json +service_account_json: config/machine_settings/gcloud_default.json bucket_id: st_ten_img [label_printer] diff --git a/config/machine_settings/gcloud_default.json b/config/machine_settings/gcloud_default.json new file mode 100644 index 0000000..cf0a3d5 --- /dev/null +++ b/config/machine_settings/gcloud_default.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "errecinque-prodserver", + "private_key_id": "9d4024fe9eed43a6eb8ef57b7a1a041ab3eaabc3", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDFf7goe7zRfqFq\nn2OzrzmSICD0/Qmff1KLFYYAOczhJwyCFY7Zx0PagOVG3qTR7DskhrlB0pvynHgi\n6q2A7FIaDQ5xnlLxBQEAIN95sadyUSri2N2wYWlmFwkOW3Vw2xKpQL25cuAWDqmO\njCQHG2w6Luh+IdirYvyGPJE+yKQmuGACy+odTMAz7HVtKWREURO3WBmicJU/3/Yt\nXFeTvB4XQ8Ciqi/DygU2hDcN9I1lQPAtJuOUNzCyhytI5601FOs2hOhWH3MUb9PN\n6OPxfqnqsmCfGI+HD4sVC5Ecct1AC3VrznQ/FUo2YWGirMaeBbI/bRr+CIidGBxD\n5dBjo4kBAgMBAAECggEAEktLfReCJOMuk0xunTYv1mLqvprCRY+TDy5YFmUEPv5h\nnJqf2/km5kJuin8k5AuWamKe3jOiralUAQL9PZ4WWFKpifl9DBWXM0J4ROLhhHez\nieYF+fi5/UKIvJdY9HJcgwhL0rXq/ywORXWigDSIdMbD0ywyMGT3yHzrhNXry6i6\nlSpwaXDK3XiN6X5bwxq0NMVMN8j3sY4mia5J2cYR2eA8aqL1/clfLYjwVAHuHFFr\n30iQv7xB6XYRuF+gF9LTC+lS/RXtWlSORlSOj97KBhsEflYeTQjdkEEjxyD7tJee\nphZRxmFyCKdUEMuNyrtFgyA4CM4r0BT8O7eeoexcWQKBgQDk6yf9u8S+sM+6IqSw\nGDO//SCXuNNgmrrOCDSRJ/MjXVl0E20Sq8bFxvKeL3k0xT6HmSk1+s8r8jJ7Wqjd\nUmNQL+0o1s/vOh/uGuKZ3AW4JSs43BE9SpRwfCxvAgbMolzks3b1VKXAgxJdGj0M\nAPdfTBcDJZGhoA1NxX6Qujug6QKBgQDc3QMdPt/e4RY7VXijOLAhPB3xNP2tJU6m\nARNSN9sQsE6pnRdwjITm3yFuEYisG0GI4I3AZP5gMuneFUp/+ZiBAIPhJyrvVtme\n+Vho91UNKmceFwQ8rO504krEKFZ9wo/Zk4tVicxn3tLb8FghigTHKmakvEfgoDkv\nl8UJVYTYWQKBgDp2N8tcBb3xZ8uQh2CVfbndSlKVGB6GxYhSniIoArcYYvz67RMk\nnWnrChEN7LVmXjbBDb5EZF5Dx1Krb46+OLDE3JteaNIelQL5CL/kae2CSIyH3zs4\n7bngbHSZHuVp3bFmh83VpVMJ5kmypr6HDKXgx8u873lIZ71h35XUid/pAoGAPlGu\nW0YubPkeCMfpLkUEjZwk5raJDZ4FPxn2lbBlA6R7zaghwQQlS++Rwzj3U3itWS3j\nUXItxH8ZNizTxKBsw5mdnJ4sozPiW9UHeTawrPJV/kuISoaREjH33rlzDjEj3cSg\nABbNslFRNfXvKCeFiZ0RMVJfBaav/Bna4vNadKECgYAcEaDng1ID0IZccWbXpnP/\nT9T3LsvQblSBLscE+kmUnQ/rDuOOQvKb+NOCKC7SKtRjFd8fueKGdNkVHkynxAFS\n5HRK+j9qCiSX6egDSD3i0cQWl4Mwtslw1W0deevix4bHSBZ0Qox6dnJeRNzk5pJa\nTetvDvuhucikdiuRwKWIRw==\n-----END PRIVATE KEY-----\n", + "client_email": "vt70-service-account@errecinque-prodserver.iam.gserviceaccount.com", + "client_id": "111871984338900377807", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/vt70-service-account%40errecinque-prodserver.iam.gserviceaccount.com" +} diff --git a/config/machine_settings/st-ten-6.ini b/config/machine_settings/st-ten-6.ini index 2cce4af..4eff422 100644 --- a/config/machine_settings/st-ten-6.ini +++ b/config/machine_settings/st-ten-6.ini @@ -13,6 +13,7 @@ vision_saver: absent vision: absent screwdriver: absent digital_io: present +second_leak_test: present [tecna_t3] port: COM4 @@ -26,6 +27,31 @@ recipe_name_field: codice_ricetta part_number_field: codice_prodotto label_template_field: modello_etichetta description_field: descrizione +tempo_pre_riempimento: 0 +pressione_pre_riempimento: 1000 +tempo_riempimento: 10 +tempo_assestamento: 10 +percentuale_minima_pressione_assestamento: 5 +percentuale_massima_pressione_assestamento: 5 +tempo_di_test: 10 +pressione_di_test_delta_minimo: 30 +pressione_di_test: 15000 +pressione_di_test_delta_massimo: 30 +tempo_svuotamento: 1 +pressione_svuotmento: 100 +prova_tenuta_abilitata_2: x +tempo_pre_riempimento_2: 0 +pressione_pre_riempimento_2: 1000 +tempo_riempimento_2: 5 +tempo_assestamento_2: 5 +percentuale_minima_pressione_assestamento_2: 5 +percentuale_massima_pressione_assestamento_2: 5 +tempo_di_test_2: 5 +pressione_di_test_delta_minimo_2: 200 +pressione_di_test_2: 1000 +pressione_di_test_delta_massimo_2: 200 +tempo_svuotamento_2: 1 +pressione_svuotmento_2: 100 [label_printer] platform: windows diff --git a/designer.sh b/designer.sh index 4e7c252..9a38387 100755 --- a/designer.sh +++ b/designer.sh @@ -2,6 +2,6 @@ cd "$(dirname "$0")" source "./venv/bin/activate" || source "./venv/Scripts/activate" || : #python3 -m pip install --upgrade qt5-tools -"$(python3 -c "import sys; print(sys.path[-1])")/qt5_applications/Qt/bin/designer" $* -#$(pwd)/venv/lib/python3.9/site-packages/qt5_applications/Qt/bin/designer $* +#"$(python3 -c "import sys; print(sys.path[-1])")/qt5_applications/Qt/bin/designer" $* +$(pwd)/venv/lib/python3.9/site-packages/qt5_applications/Qt/bin/designer $* #$(pwd)/venv/lib/python3.8/site-packages/qt5_applications/Qt/bin/designer $* diff --git a/src/components/usb_586x.py b/src/components/usb_586x.py index 8f91ed3..4d1f1e1 100644 --- a/src/components/usb_586x.py +++ b/src/components/usb_586x.py @@ -36,6 +36,7 @@ class USB_586x(Component): def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True): super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded) self.mutex = QMutex() + # DEVICE INFORMATION self.id=config["digital_io"]["id"] if "5860" in self.id: @@ -52,6 +53,19 @@ class USB_586x(Component): # self.info.DeviceNumber = -1 self.info.DeviceMode = 1 self.info.ModuleIndex = 0 + + self.open_device() + + # SET ALL RELAYS OFF + for bit in range(0, self.out_size*8): + self.set_bit(int(bit/8), bit%8, False) + + self.state_delay = 1 + self.last_get = None + self.state_count = None + self.last_out = None + + def open_device(self): # DIGITAL INPUTS CLASS if is_win: self.di_ctrl = InstantDiCtrl(self.info.Description) @@ -90,15 +104,8 @@ class USB_586x(Component): self.do_ctrl = self.do_create() self.di_init_status = self.di_setSelectedDevice(self.di_ctrl, ctypes.byref(self.info)) self.do_init_status = self.do_setSelectedDevice(self.do_ctrl, ctypes.byref(self.info)) - - # SET ALL RELAYS OFF - for bit in range(0, self.out_size*8): - self.set_bit(int(bit/8), bit%8, False) - - self.state_delay = 1 - self.last_get = None - self.state_count = None - self.last_out = None + def close_device(self): + pass @pyqtSlot() def start(self): @@ -173,10 +180,27 @@ class USB_586x(Component): self.mutex.lock() # print("set", byte, bit, not val, flush=True) if is_win: - self.do_write_bit(byte, bit, int(val)) + ret=self.do_write_bit(byte, bit, int(val)) else: - self.do_write_bit(self.do_ctrl, byte, bit, int(val)) + ret=self.do_write_bit(self.do_ctrl, byte, bit, int(val)) self.mutex.unlock() + return ret + + def set_bit_verify(self, byte, bit, val): + + ok = False + retry=0 + max_retry = 3 + while not ok and retry - Configurazione relè + Configurazione elettrovalvole diff --git a/src/ui/print_step_editor/print_step_editor.py b/src/ui/print_step_editor/print_step_editor.py index 60dab37..6ad57dc 100644 --- a/src/ui/print_step_editor/print_step_editor.py +++ b/src/ui/print_step_editor/print_step_editor.py @@ -6,9 +6,9 @@ class Print_Step_Editor(Editor): super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "template": self.label_template_cb, - "LABELTXT_1": self.labeltxt_1, - "LABELTXT_2": self.labeltxt_2, - "LABELTXT_3": self.labeltxt_3, - "LABELTXT_4": self.labeltxt_4, - "LABELTXT_5": self.labeltxt_5, + "labeltxt_1": self.labeltxt_1, + "labeltxt_2": self.labeltxt_2, + "labeltxt_3": self.labeltxt_3, + "labeltxt_4": self.labeltxt_4, + "labeltxt_5": self.labeltxt_5, }) diff --git a/src/ui/recipe_selection/recipe_selection.py b/src/ui/recipe_selection/recipe_selection.py index bad9e3c..7d1e598 100755 --- a/src/ui/recipe_selection/recipe_selection.py +++ b/src/ui/recipe_selection/recipe_selection.py @@ -32,8 +32,11 @@ class Recipe_Selection(Widget): global noner super().__init__() self.config = config + self.second_leak_test_enabled=self.config["hardware_config"]["second_leak_test"] == "present" self.defaults = self.config.get("recipes_defaults", noner) self.unsupported_steps = unsupported_steps + if not self.second_leak_test_enabled: + self.unsupported_steps.add("second_leak_test") session = Users.get_session() if session.is_admin: # readonly = ["id"] @@ -196,10 +199,10 @@ class Recipe_Selection(Widget): "serial": row.get(barcode_serial_field, defaults["codice_a_barre"]), }, "resistance": { - "scale": float(row.get("scala_resistenza", defaults["scala_resistenza"])), - "expected": float(rcsv), - "tolerance_pos": float(self.get_def(row,"tolleranza_resistenza_pos")), - "tolerance_neg": float(self.get_def(row,"tolleranza_resistenza_neg")), + "scale": locale.atof(row.get("scala_resistenza", defaults["scala_resistenza"])), + "expected": locale.atof(rcsv), + "tolerance_pos": locale.atof(self.get_def(row,"tolleranza_resistenza_pos")), + "tolerance_neg": locale.atof(self.get_def(row,"tolleranza_resistenza_neg")), }, "screws": { "quantity": row.get("viti", defaults["viti"]) @@ -222,6 +225,7 @@ class Recipe_Selection(Widget): "test_pressure_max_delta": int(row.get("pressione_di_test_delta_massimo", defaults["pressione_di_test_delta_massimo"])), "flush_time": int(row.get("tempo_svuotamento", defaults["tempo_svuotamento"])), "flush_pressure": int(row.get("pressione_svuotmento", defaults["pressione_svuotmento"])), + "relay_config": int(row.get("config_elettrovalvole", defaults["config_elettrovalvole"])) }, "leak_2": { "pre_filling_time": int(row.get("tempo_pre_riempimento_2", defaults["tempo_pre_riempimento_2"])), @@ -236,6 +240,7 @@ class Recipe_Selection(Widget): "test_pressure_max_delta": int(row.get("pressione_di_test_delta_massimo_2", defaults["pressione_di_test_delta_massimo_2"])), "flush_time": int(row.get("tempo_svuotamento_2", defaults["tempo_svuotamento_2"])), "flush_pressure": int(row.get("pressione_svuotmento_2", defaults["pressione_svuotmento_2"])), + "relay_config": int(row.get("config_elettrovalvole", defaults["config_elettrovalvole"])) }, "vision": { "recipe": row.get("ricetta_visione", defaults["ricetta_visione"]), diff --git a/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py b/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py index dad8b65..70d08c8 100644 --- a/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py +++ b/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py @@ -71,7 +71,7 @@ class Recipe_Spec_And_Step_Editor(Editor): "widget": "leak_editor_2_w", "editor": Leak_Step_Editor(), "tab": self.leak_2_t, - "hidden": True, + "hidden": "second_leak_test" in unsupported_steps, }, "vision": { "type": "vision", diff --git a/src/ui/test/test.py b/src/ui/test/test.py index fa054b3..2f187cd 100755 --- a/src/ui/test/test.py +++ b/src/ui/test/test.py @@ -504,7 +504,12 @@ class Test(Widget): leak_test_1_step_spec = leak_test_1_step.get("spec", {}) leak_test_1_results = leak_test_1.get("results", {}) leak_test_1_results_data = leak_test_1_results.get("data", {}) - printer_fields=archived.test_data.get("print", {}) + leak_test_2 = archived.test_data.get("leak_2", {}).get("0", {}) + leak_test_2_step = leak_test_1.get("step", {}) + leak_test_2_step_spec = leak_test_1_step.get("spec", {}) + leak_test_2_results = leak_test_1.get("results", {}) + leak_test_2_results_data = leak_test_1_results.get("data", {}) + printer_fields=self.step.spec context = { # RECIPE DATA "RECIPE": self.labellify(recipe.get("name", "-")), @@ -517,6 +522,8 @@ class Test(Widget): "TSET": self.labellify(leak_test_1_step_spec.get("settling_time", "-")), "PSETMINP": self.labellify(leak_test_1_step_spec.get("settling_pressure_min_percent", " -")), "PSETMAXP": self.labellify(leak_test_1_step_spec.get("settling_pressure_max_percent", " -")), + "PSETMINP2": self.labellify(leak_test_2_step_spec.get("settling_pressure_min_percent", " -")), + "PSETMAXP2": self.labellify(leak_test_2_step_spec.get("settling_pressure_max_percent", " -")), "TTEST": self.labellify(leak_test_1_step_spec.get("test_time", "-")), "PMIN": self.labellify(leak_test_1_step_spec.get("test_pressure_min_delta", "-")), "PTEST": self.labellify(leak_test_1_step_spec.get("test_pressure", "-")), @@ -529,11 +536,13 @@ class Test(Widget): "RESPSET": self.labellify(leak_test_1_results_data.get("Running test: pressure at the end of settling", "-")), "RESPB": self.labellify(leak_test_1_results_data.get("Running test: burst pressure", "-")), "RESLEAK": self.labellify(leak_test_1_results_data.get("Running test: measured leak", "-")), + "RESLEAK2": self.labellify(leak_test_2_results_data.get("Running test: measured leak", "-")), "RESFLOW": self.labellify(leak_test_1_results_data.get("Running test: calculated leak flow rate", "-")), "RESRVP": self.labellify(leak_test_1_results_data.get("Running test: calculate RVP%", "-")), "RESRES": self.labellify(leak_test_1_results_data.get("Running test: result", "-")), # SERIAL DEFINITION "SN": str(archived.id), + "SN4": f"{archived.id:0>4}", "SN5": f"{archived.id:0>5}", "SN6": f"{archived.id:0>6}", # TIME DEFINITION @@ -557,9 +566,10 @@ class Test(Widget): "RESULT_L2": str("CONFORME" if leak_test_1_results.get("ok", False) else "SCARTO"), } for n in range(5): - field=f"LABELTXT_{n+1}" + field=f"labeltxt_{n+1}" if field in printer_fields.keys(): - context[field]=printer_fields[field] + if printer_fields[field] !="": + context[field.upper()]=printer_fields[field] # PRINT MAIN PRODUCT LABEL compiled_label = self.components["label_printer"].print_label(label, context=context) diff --git a/src/ui/test_connector/test_connector.py b/src/ui/test_connector/test_connector.py index 068dbde..138ba30 100644 --- a/src/ui/test_connector/test_connector.py +++ b/src/ui/test_connector/test_connector.py @@ -51,7 +51,9 @@ class Test_Connector(Test_Test): if data is None: super().get(None, override=override) return - connector_ok = data.lower() == self.step.spec.get("connector", "").lower() + connector_name=self.step.spec.get("connector", "").lower() + connector_names=[connector_name,connector_name.replace("scr","scr0")] + connector_ok = data.lower() in connector_names if connector_ok: self.connector_le.setPalette(self.status_palettes[True]) else: diff --git a/src/ui/test_leak/test_leak.py b/src/ui/test_leak/test_leak.py index 1ec9244..c27a10c 100644 --- a/src/ui/test_leak/test_leak.py +++ b/src/ui/test_leak/test_leak.py @@ -1,8 +1,11 @@ import sys +import time import weakref -from ui.test_test import Test_Test +from PyQt5.QtWidgets import QMessageBox +from ui.test_test import Test_Test +from src.components.Automation.BDaq import ErrorCode class Test_Leak(Test_Test): def __init__(self, components=None, recipe=None, step=None, pieces=None, run_once=False, reset_on_start=True, enable_override=True): @@ -28,6 +31,24 @@ class Test_Leak(Test_Test): self.parent_assembly_widget().set_text(text="WAIT") self.start_b.setEnabled(False) self.stop_b.setEnabled(False) + + # SETUP RELAY + if "digital_io" in self.components.keys(): + if "relay_config" in step.spec.keys(): + relay_config = step.spec["relay_config"] + if relay_config == 1: + ret=self.components["digital_io"].set_bit_verify(0, 0, 1) + else: + ret=self.components["digital_io"].set_bit_verify(0, 0, 0) + + if ret: + time.sleep(1) + # AUTO START SECOND TEST + if relay_config == 1: + self.start_b.setEnabled(True) + self.start_b.click() + else: + QMessageBox.critical(None, "Errore", f"Errore di pilotaggio elettrovalvole") return show def stop(self):