diff --git a/config/machine_settings/defaults.ini b/config/machine_settings/defaults.ini index 911da11..38347cc 100644 --- a/config/machine_settings/defaults.ini +++ b/config/machine_settings/defaults.ini @@ -34,6 +34,9 @@ printer: [tecna_t3] port: COM3 baudrate: 115200 +admin_pin: 603 +modify_pin: 603 +select_pin: 603 [neo_pixels] port: COM1 diff --git a/src/components/tecna_marposs_provaset_t3.py b/src/components/tecna_marposs_provaset_t3.py index f647b55..62e2048 100644 --- a/src/components/tecna_marposs_provaset_t3.py +++ b/src/components/tecna_marposs_provaset_t3.py @@ -12,12 +12,32 @@ class TecnaMarpossProvasetT3(ModbusComponent): 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, registers=registers) + pin_registers = { + "admin_pin": "PASSWORD: Administrator", # was 1909 + "modify_pin": "PASSWORD: Modify program", # was 0 + "select_pin": "PASSWORD: Select program", # was 0 + } + def config_changed(self): super().config_changed() - # self.set_measure_units() + self.pins = { + "admin_pin": self.config.get("admin_pin", None), + "modify_pin": self.config.get("modify_pin", None), + "select_pin": self.config.get("select_pin", None), + } + self.unlock_tecna() + self.set_measure_units() self.units = self.get_measure_units() self.log.info(f"units: {self.units}") + def unlock_tecna(self, **kwargs): + pins = self.pins.copy() + pins.update(kwargs) + for pin_name, register in self.pin_registers.items(): + pin = pins[pin_name] + if pin is not None: + self.write(register, pin) + _pressure_units = {"mH2O": 0, "mbar": 1, "kPa": 2, "mmHg": 3, "inH2O": 4, "psi": 5, "mmH2O": 6, } # (se fondoscala <=6 bar) _leak_units = {"mmH2O": 0, "mbar": 1, "Pa": 2, "mmHg": 3, "inH2O": 4, "psi": 5, } _leak_flow_units = {"cm3/min": 0, "cm3/h": 1, } @@ -133,9 +153,6 @@ class TecnaMarpossProvasetT3(ModbusComponent): recipe_name = recipe.spec["part_number"][:16].encode("ascii") recipe_name += b"\x00" * (16 - len(recipe_name)) recipe = { - "PASSWORD: Administrator": 603, # was 1909 - "PASSWORD: Modify program": 603, # was 0 - "PASSWORD: Select program": 603, # was 0 "INSTRUMENT SETTING: Various flags": 0b0000000000000000, **{719 + i: (recipe_name[i * 2 + 1] << 8) + recipe_name[i * 2] for i in range(8)}, "Selection number of test table on which you intend to work": table,