From d63a7011fc8c9d69bb4842917d9fdb26a03b53d7 Mon Sep 17 00:00:00 2001 From: David Perl Date: Wed, 7 Aug 2024 09:20:09 +0100 Subject: [PATCH] rename I24 to i24 --- pyproject.toml | 4 +- src/mx_bluesky/I24/__init__.py | 0 src/mx_bluesky/I24/serial/__init__.py | 49 - src/mx_bluesky/I24/serial/blueapi_config.yaml | 12 - src/mx_bluesky/I24/serial/dcid.py | 415 -- .../serial/extruder/EX-gui-edm/DetStage.edl | 139 - .../EX-gui-edm/DiamondExtruder-I24-py3v1.edl | 2274 -------- .../EX-gui-edm/microdrop_alignment.edl | 1084 ---- .../I24/serial/extruder/__init__.py | 0 .../extruder/i24ssx_Extruder_Collect_py3v2.py | 511 -- .../FT-gui-edm/CustomChip_py3v1.edl | 833 --- .../fixed_target/FT-gui-edm/DetStage.edl | 139 - .../FT-gui-edm/DiamondChipI24-py3v1.edl | 4095 -------------- .../FT-gui-edm/ME14E-GeneralPurpose.edl | 4960 ----------------- .../FT-gui-edm/MappingLite-oxford_py3v1.edl | 2667 --------- .../fixed_target/FT-gui-edm/PMAC_Command.edl | 103 - .../FT-gui-edm/Shutter_Control.edl | 108 - .../FT-gui-edm/microdrop_alignment.edl | 1083 ---- .../fixed_target/FT-gui-edm/nudgechip.edl | 1171 ---- .../FT-gui-edm/pumpprobe-py3v1.edl | 1743 ------ .../fixed_target/FT-gui-edm/short1-laser.png | Bin 9740 -> 0 bytes .../fixed_target/FT-gui-edm/short2-laser.png | Bin 10189 -> 0 bytes .../I24/serial/fixed_target/__init__.py | 0 .../I24/serial/fixed_target/ft_utils.py | 55 - .../fixed_target/i24ssx_Chip_Collect_py3v1.py | 797 --- .../fixed_target/i24ssx_Chip_Manager_py3v1.py | 1031 ---- .../fixed_target/i24ssx_Chip_Mapping_py3v1.py | 161 - .../fixed_target/i24ssx_Chip_StartUp_py3v1.py | 321 -- .../serial/fixed_target/i24ssx_moveonclick.py | 199 - src/mx_bluesky/I24/serial/log.py | 157 - .../I24/serial/parameters/__init__.py | 15 - .../I24/serial/parameters/constants.py | 48 - .../parameters/experiment_parameters.py | 124 - .../parameters/fixed_target/cs/cs_maker.json | 9 - .../fixed_target/cs/motor_direction.txt | 10 - .../pvar_files/minichip-oxford.pvar | 19 - .../fixed_target/pvar_files/oxford.pvar | 85 - src/mx_bluesky/I24/serial/parameters/utils.py | 40 - src/mx_bluesky/I24/serial/run_extruder.sh | 19 - src/mx_bluesky/I24/serial/run_fixed_target.sh | 22 - src/mx_bluesky/I24/serial/run_serial.py | 36 - src/mx_bluesky/I24/serial/run_ssx.sh | 28 - .../I24/serial/set_visit_directory.sh | 56 - .../I24/serial/setup_beamline/__init__.py | 14 - .../I24/serial/setup_beamline/ca.py | 54 - .../I24/serial/setup_beamline/pv.py | 409 -- .../I24/serial/setup_beamline/pv_abstract.py | 73 - .../serial/setup_beamline/setup_beamline.py | 493 -- .../serial/setup_beamline/setup_detector.py | 107 - .../setup_beamline/setup_zebra_plans.py | 456 -- src/mx_bluesky/I24/serial/start_blueapi.sh | 28 - src/mx_bluesky/I24/serial/write_nexus.py | 102 - tests/I24/serial/__init__.py | 0 tests/I24/serial/conftest.py | 127 - tests/I24/serial/extruder/__init__.py | 0 .../serial/extruder/test_extruder_collect.py | 293 - tests/I24/serial/fixed_target/__init__.py | 0 tests/I24/serial/fixed_target/conftest.py | 23 - .../serial/fixed_target/test_chip_manager.py | 337 -- .../serial/fixed_target/test_chip_startup.py | 41 - .../serial/fixed_target/test_ft_collect.py | 243 - .../serial/fixed_target/test_moveonclick.py | 67 - tests/I24/serial/parameters/test_utils.py | 38 - tests/I24/serial/setup_beamline/__init__.py | 0 .../serial/setup_beamline/test_pv_abstract.py | 11 - .../setup_beamline/test_setup_beamline.py | 57 - .../setup_beamline/test_setup_detector.py | 53 - .../serial/setup_beamline/test_zebra_plans.py | 182 - tests/I24/serial/test_dcid.py | 30 - tests/I24/serial/test_log.py | 68 - 70 files changed, 2 insertions(+), 27926 deletions(-) delete mode 100644 src/mx_bluesky/I24/__init__.py delete mode 100644 src/mx_bluesky/I24/serial/__init__.py delete mode 100644 src/mx_bluesky/I24/serial/blueapi_config.yaml delete mode 100644 src/mx_bluesky/I24/serial/dcid.py delete mode 100644 src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DetStage.edl delete mode 100644 src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl delete mode 100644 src/mx_bluesky/I24/serial/extruder/EX-gui-edm/microdrop_alignment.edl delete mode 100644 src/mx_bluesky/I24/serial/extruder/__init__.py delete mode 100755 src/mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DetStage.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/nudgechip.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/short1-laser.png delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/short2-laser.png delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/__init__.py delete mode 100644 src/mx_bluesky/I24/serial/fixed_target/ft_utils.py delete mode 100755 src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py delete mode 100755 src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py delete mode 100755 src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py delete mode 100755 src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py delete mode 100755 src/mx_bluesky/I24/serial/fixed_target/i24ssx_moveonclick.py delete mode 100644 src/mx_bluesky/I24/serial/log.py delete mode 100644 src/mx_bluesky/I24/serial/parameters/__init__.py delete mode 100644 src/mx_bluesky/I24/serial/parameters/constants.py delete mode 100644 src/mx_bluesky/I24/serial/parameters/experiment_parameters.py delete mode 100644 src/mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json delete mode 100644 src/mx_bluesky/I24/serial/parameters/fixed_target/cs/motor_direction.txt delete mode 100644 src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar delete mode 100755 src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/oxford.pvar delete mode 100644 src/mx_bluesky/I24/serial/parameters/utils.py delete mode 100755 src/mx_bluesky/I24/serial/run_extruder.sh delete mode 100755 src/mx_bluesky/I24/serial/run_fixed_target.sh delete mode 100644 src/mx_bluesky/I24/serial/run_serial.py delete mode 100755 src/mx_bluesky/I24/serial/run_ssx.sh delete mode 100755 src/mx_bluesky/I24/serial/set_visit_directory.sh delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/__init__.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/ca.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/pv.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/pv_abstract.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/setup_beamline.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/setup_detector.py delete mode 100644 src/mx_bluesky/I24/serial/setup_beamline/setup_zebra_plans.py delete mode 100644 src/mx_bluesky/I24/serial/start_blueapi.sh delete mode 100644 src/mx_bluesky/I24/serial/write_nexus.py delete mode 100644 tests/I24/serial/__init__.py delete mode 100644 tests/I24/serial/conftest.py delete mode 100644 tests/I24/serial/extruder/__init__.py delete mode 100644 tests/I24/serial/extruder/test_extruder_collect.py delete mode 100644 tests/I24/serial/fixed_target/__init__.py delete mode 100644 tests/I24/serial/fixed_target/conftest.py delete mode 100644 tests/I24/serial/fixed_target/test_chip_manager.py delete mode 100644 tests/I24/serial/fixed_target/test_chip_startup.py delete mode 100644 tests/I24/serial/fixed_target/test_ft_collect.py delete mode 100644 tests/I24/serial/fixed_target/test_moveonclick.py delete mode 100644 tests/I24/serial/parameters/test_utils.py delete mode 100644 tests/I24/serial/setup_beamline/__init__.py delete mode 100644 tests/I24/serial/setup_beamline/test_pv_abstract.py delete mode 100644 tests/I24/serial/setup_beamline/test_setup_beamline.py delete mode 100644 tests/I24/serial/setup_beamline/test_setup_detector.py delete mode 100644 tests/I24/serial/setup_beamline/test_zebra_plans.py delete mode 100644 tests/I24/serial/test_dcid.py delete mode 100644 tests/I24/serial/test_log.py diff --git a/pyproject.toml b/pyproject.toml index b54281d47..8e826e0a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,8 +51,8 @@ dev = [ [project.scripts] mx_bluesky = "mx_bluesky.__main__:main" -run_extruder = "mx_bluesky.I24.serial.run_serial:run_extruder" -run_fixed_target = "mx_bluesky.I24.serial.run_serial:run_fixed_target" +run_extruder = "mx_bluesky.i24.serial.run_serial:run_extruder" +run_fixed_target = "mx_bluesky.i24.serial.run_serial:run_fixed_target" [project.urls] GitHub = "https://github.com/DiamondLightSource/mx_bluesky" diff --git a/src/mx_bluesky/I24/__init__.py b/src/mx_bluesky/I24/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/mx_bluesky/I24/serial/__init__.py b/src/mx_bluesky/I24/serial/__init__.py deleted file mode 100644 index 40cc6e7de..000000000 --- a/src/mx_bluesky/I24/serial/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -from .extruder.i24ssx_Extruder_Collect_py3v2 import ( - enter_hutch, - initialise_extruder, - laser_check, - run_extruder_plan, -) -from .fixed_target.i24ssx_Chip_Collect_py3v1 import run_fixed_target_plan -from .fixed_target.i24ssx_Chip_Manager_py3v1 import ( - block_check, - cs_maker, - cs_reset, - define_current_chip, - fiducial, - initialise_stages, - laser_control, - load_lite_map, - load_stock_map, - moveto, - moveto_preset, - pumpprobe_calc, - save_screen_map, - upload_parameters, - write_parameter_file, -) -from .setup_beamline.setup_detector import setup_detector_stage - -__all__ = [ - "setup_detector_stage", - "run_extruder_plan", - "initialise_extruder", - "enter_hutch", - "laser_check", - "run_fixed_target_plan", - "moveto", - "moveto_preset", - "block_check", - "cs_maker", - "cs_reset", - "define_current_chip", - "fiducial", - "initialise_stages", - "laser_control", - "load_lite_map", - "load_stock_map", - "pumpprobe_calc", - "save_screen_map", - "upload_parameters", - "write_parameter_file", -] diff --git a/src/mx_bluesky/I24/serial/blueapi_config.yaml b/src/mx_bluesky/I24/serial/blueapi_config.yaml deleted file mode 100644 index 1d325aa6f..000000000 --- a/src/mx_bluesky/I24/serial/blueapi_config.yaml +++ /dev/null @@ -1,12 +0,0 @@ -env: - sources: - - kind: dodal - module: dodal.beamlines.i24 - - kind: planFunctions - module: mx_bluesky.I24.serial - events: - broadcast_status_events: False -api: - port: 25565 -stomp: - host: i24-control.diamond.ac.uk diff --git a/src/mx_bluesky/I24/serial/dcid.py b/src/mx_bluesky/I24/serial/dcid.py deleted file mode 100644 index cc8e258dd..000000000 --- a/src/mx_bluesky/I24/serial/dcid.py +++ /dev/null @@ -1,415 +0,0 @@ -import datetime -import json -import logging -import math -import os -import re -import subprocess -import warnings -from functools import lru_cache - -import requests - -from mx_bluesky.I24.serial.parameters import SSXType -from mx_bluesky.I24.serial.setup_beamline import ( - Detector, - Eiger, - Pilatus, - caget, - cagetstring, - pv, -) - -try: - from typing import Literal -except ImportError: - pass - -logger = logging.getLogger("I24ssx.DCID") - - -# Collection start/end script to kick off analysis -COLLECTION_START_SCRIPT = "/dls_sw/i24/scripts/RunAtStartOfCollect-i24-ssx.sh" -COLLECTION_END_SCRIPT = "/dls_sw/i24/scripts/RunAtEndOfCollect-i24-ssx.sh" - -DEFAULT_ISPYB_SERVER = "https://ssx-dcserver.diamond.ac.uk" - -CREDENTIALS_LOCATION = "/scratch/ssx_dcserver.key" - - -@lru_cache(maxsize=1) -def get_auth_header() -> dict: - """Read the credentials file and build the Authorisation header""" - if not os.path.isfile(CREDENTIALS_LOCATION): - logger.warning( - "Could not read %s; attempting to proceed without credentials", - CREDENTIALS_LOCATION, - ) - return {} - with open(CREDENTIALS_LOCATION) as f: - token = f.read().strip() - return {"Authorization": "Bearer " + token} - - -class DCID: - """ - Interfaces with ISPyB to allow ssx DCID/synchweb interaction. - - Args: - server: The URL for the bridge server, if not the default. - emit_errors: - If False, errors while interacting with the DCID server will - not be propagated to the caller. This decides if you want to - stop collection if you can't get a DCID - timeout: Length of time to wait for the DB server before giving up - ssx_type: The type of SSX experiment this is for - detector: The detector in use for current collection. - - - Attributes: - error: - If an error has occured. This will be set, even if emit_errors = True - """ - - def __init__( - self, - *, - server: str | None = None, - emit_errors: bool = True, - timeout: float = 10, - ssx_type: SSXType = SSXType.FIXED, - detector: Detector | Literal["eiger", "pilatus"] | None = None, - ): - self.detector: Detector - # Handle case of string literal - if detector == "eiger": - self.detector = Eiger() - elif detector == "pilatus": - self.detector = Pilatus() - elif detector is None: - self.detector = Pilatus() - warnings.warn( - "Please pass detector= to DCID. Pilatus assumed, this will be removed in the future.", - UserWarning, - ) - - self.server = server or DEFAULT_ISPYB_SERVER - self.emit_errors = emit_errors - self.error = False - self.timeout = timeout - self.ssx_type = SSXType(ssx_type) - self.dcid = None - - def generate_dcid( - self, - visit: str, - image_dir: str, - num_images: int, - exposure_time: float, - start_time: datetime.datetime | None = None, - shots_per_position: int = 1, - pump_exposure_time: float | None = None, - pump_delay: float | None = None, - pump_status: int = 0, - ): - """Generate an ispyb DCID. - - Args: - visit: The name of the visit e.g. "mx12345-4" - image_dir: The location the images will be written - """ - try: - if not start_time: - start_time = datetime.datetime.now().astimezone() - elif not start_time.timetz: - start_time = start_time.astimezone() - - # Gather data from the beamline - detector_distance = float(caget(self.detector.pv.detector_distance)) - wavelength = float(caget(self.detector.pv.wavelength)) - resolution = get_resolution(self.detector, detector_distance, wavelength) - beamsize_x, beamsize_y = get_beamsize() - transmission = float(caget(self.detector.pv.transmission)) * 100 - xbeam, ybeam = get_beam_center(self.detector) - - if isinstance(self.detector, Pilatus): - # Mirror the construction that the PPU does - fileTemplate = get_pilatus_filename_template_from_pvs() - startImageNumber = 0 - elif isinstance(self.detector, Eiger): - # Eiger base filename is directly written to the PV - # Nexgen then uses this to write the .nxs file - fileTemplate = cagetstring(self.detector.pv.file_name) + ".nxs" - startImageNumber = 1 - else: - raise ValueError("Unknown detector:", self.detector) - - events = [ - { - "name": "Xray probe", - "offset": 0, - "duration": exposure_time, - "period": exposure_time, - "repetition": shots_per_position, - "eventType": "XrayDetection", - } - ] - if pump_status > 0: - # https://confluence.diamond.ac.uk/pages/viewpage.action?pageId=131238829 - # https://confluence.diamond.ac.uk/display/MXTech/Dynamics+and+fixed+targets - # pump_status = 0: no pump probe - # pump_status = 1: pump then probe - # pump_status = 2: pump within probe - # pump_status = 3-7: different EAVA modes (i.e. also pump then probe) - if pump_status != 2 and self.ssx_type is SSXType.FIXED: - # Pump status could be 1 for extruder but not have this. - # pump then probe - pump_delay corresponds to time *before* first image - pump_delay = -pump_delay - events.append( - { - "name": "Laser probe", - "offset": pump_delay, - "duration": pump_exposure_time, - # "period": None, - "repetition": 1, - "eventType": "LaserExcitation", - }, - ) - - data = { - "detectorDistance": float(detector_distance), - "detectorId": self.detector.id, - "exposureTime": float(exposure_time), - "fileTemplate": fileTemplate, - "imageDirectory": str(image_dir), - "numberOfImages": int(num_images), - "resolution": float(resolution), - "startImageNumber": startImageNumber, - "startTime": start_time.isoformat(), - "transmission": float(transmission), - "visit": visit, - "wavelength": float(wavelength), - "group": {"experimentType": self.ssx_type.value}, - "xBeam": xbeam, - "yBeam": ybeam, - "ssx": { - "eventChain": { - "events": events, - } - }, - } - if beamsize_x and beamsize_y: - data["beamSizeAtSampleX"] = beamsize_x / 1000 - data["beamSizeAtSampleY"] = beamsize_y / 1000 - - # Log what we are doing here - try: - logger.info( - "BRIDGE: POST /dc --data %s", - repr(json.dumps(data)), - ) - except Exception: - logger.info( - "Caught exception converting data to JSON. Data:\n%s\nVERBOSE:\n%s", - str({k: type(v) for k, v in data.items()}), - ) - raise - - resp = requests.post( - f"{self.server}/dc", - json=data, - timeout=self.timeout, - headers=get_auth_header(), - ) - resp.raise_for_status() - self.dcid = resp.json()["dataCollectionId"] - logger.info("Generated DCID %s", self.dcid) - except requests.HTTPError as e: - self.error = True - logger.error( - "DCID generation Failed; Reason from server: %s", e.response.text - ) - if self.emit_errors: - raise - logger.exception("Error generating DCID: %s", e) - except Exception as e: - self.error = True - if self.emit_errors: - raise - logger.exception("Error generating DCID: %s", e) - - def __int__(self): - return self.dcid - - def notify_start(self): - """Send notifications that the collection is now starting""" - if self.dcid is None: - return None - try: - command = [COLLECTION_START_SCRIPT, str(self.dcid)] - logger.info("Running %s", " ".join(command)) - subprocess.Popen(command) - except Exception as e: - self.error = True - if self.emit_errors: - raise - logger.warning("Error starting start of collect script: %s", e) - - def notify_end(self): - """Send notifications that the collection has now ended""" - if self.dcid is None: - return - try: - command = [COLLECTION_END_SCRIPT, str(self.dcid)] - logger.info("Running %s", " ".join(command)) - subprocess.Popen(command) - except Exception as e: - self.error = True - if self.emit_errors: - raise - logger.warning("Error running end of collect notification: %s", e) - - def collection_complete( - self, end_time: str | datetime.datetime | None = None, aborted: bool = False - ) -> None: - """ - Mark an ispyb DCID as completed. - - Args: - dcid: The Collection ID to mark as finished - end_time: The predetermined end time - aborted: Was this collection aborted? - """ - try: - # end_time might be a string from time.ctime - if isinstance(end_time, str): - end_time = datetime.datetime.strptime(end_time, "%a %b %d %H:%M:%S %Y") - logger.debug("Parsed end time: %s", end_time) - - if not end_time: - end_time = datetime.datetime.now().astimezone() - if not end_time.tzinfo: - end_time = end_time.astimezone() - - status = ( - "DataCollection Cancelled" if aborted else "DataCollection Successful" - ) - data = { - "endTime": end_time.isoformat(), - "runStatus": status, - } - if self.dcid is None: - # Print what we would have sent. This means that if something is failing, - # we still have the data to upload in the log files. - logger.info( - 'BRIDGE: No DCID but Would PATCH "/dc/XXXX" --data=%s', - repr(json.dumps(data)), - ) - return - - logger.info( - 'BRIDGE: PATCH "/dc/%s" --data=%s', self.dcid, repr(json.dumps(data)) - ) - response = requests.patch( - f"{self.server}/dc/{self.dcid}", - json=data, - timeout=self.timeout, - headers=get_auth_header(), - ) - response.raise_for_status() - logger.info("Successfully updated end time for DCID %d", self.dcid) - except Exception as e: - try: - resp_obj = getattr(e, "response", None) - if resp_obj is not None: - resp_str = resp_obj.text - # resp_str = repr(getattr(e, "Iresponse", "")) - else: - resp_str = "Resp object is None" - except Exception: - resp_str = f"" - - self.error = True - if self.emit_errors: - raise - logger.warning("Error completing DCID: %s (%s)", e, resp_str) - - -def get_pilatus_filename_template_from_pvs() -> str: - """ - Get the template file path by querying the detector PVs. - - Returns: A template string, with the image numbers replaced with '#' - """ - - filename = cagetstring(pv.pilat_filename) - filename_template = cagetstring(pv.pilat_filetemplate) - file_number = int(caget(pv.pilat_filenumber)) - # Exploit fact that passing negative numbers will put the - before the 0's - expected_filename = filename_template % (filename, f"{file_number:05d}_", -9) - # Now, find the -09 part of this - numberpart = re.search(r"(-0+9)", expected_filename) - # Make sure this was the only one - assert re.search(r"(-0+9)", expected_filename[numberpart.end() :]) is None - template_fill = "#" * len(numberpart.group(0)) - return ( - expected_filename[: numberpart.start()] - + template_fill - + expected_filename[numberpart.end() :] - ) - - -def get_beamsize() -> tuple[float | None, float | None]: - """ - Read the PVs to get the current beamsize. - - Returns: - A tuple (x, y) of beam size (in µm). These values can be 'None' - if the focus mode was unrecognised. - """ - # These I24 modes are from GDA - focus_modes = { - "focus10": ("7x7", 7, 7), - "focus20d": ("20x20", 20, 20), - "focus30d": ("30x30", 30, 30), - "focus50d": ("50x50", 50, 50), - "focus1050d": ("10x50", 10, 50), - "focus5010d": ("50x10", 50, 10), - "focus3010d": ("30x10", 30, 10), - } - v_mode = caget("BL24I-OP-MFM-01:G0:TARGETAPPLY") - h_mode = caget("BL24I-OP-MFM-01:G1:TARGETAPPLY") - # Validate these and note an error otherwise - if not v_mode.startswith("VMFM") or v_mode[4:] not in focus_modes: - logger.error("Unrecognised vertical beam mode %s", v_mode) - if not h_mode.startswith("HMFM") or h_mode[4:] not in focus_modes: - logger.error("Unrecognised horizontal beam mode %s", h_mode) - _, h, _ = focus_modes.get(h_mode[4:], (None, None, None)) - _, _, v = focus_modes.get(v_mode[4:], (None, None, None)) - - return (h, v) - - -def get_resolution(detector: Detector, distance: float, wavelength: float) -> float: - """ - Calculate the inscribed resolution for detector. - - This assumes perfectly centered beam as I don't know where to - extract the beam position parameters yet. - - Args: - distance: Distance to detector (mm) - wavelength: Beam wavelength (Å) - - Returns: - Maximum resolution (Å) - """ - width = detector.image_size_mm[0] - return round(wavelength / (2 * math.sin(math.atan(width / (2 * distance)) / 2)), 2) - - -def get_beam_center(detector: Detector) -> tuple[float, float]: - """Get the detector beam center, in mm""" - beamX = float(caget(detector.pv.beamx)) * detector.pixel_size_mm[0] - beamY = float(caget(detector.pv.beamy)) * detector.pixel_size_mm[1] - return (beamX, beamY) diff --git a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DetStage.edl b/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DetStage.edl deleted file mode 100644 index f4ae2cce8..000000000 --- a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DetStage.edl +++ /dev/null @@ -1,139 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 3338 -y 572 -w 450 -h 180 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -title "Detector stage " -endScreenProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 251 -y 139 -w 160 -h 21 -controlPv "BL24I-EA-DET-01:Y" -font "arial-medium-r-18.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 28 -y 139 -w 193 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Detector stage position" -} -autoSize -endObjectProperties - -# (Menu Mux PV) -object menuMuxPVClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 35 -y 59 -w 160 -h 42 -fgColour index 14 -bgColour index 4 -topShadowColour index 1 -botShadowColour index 8 -controlPv "BL24I-EA-IOC-12:GP15" -font "arial-medium-r-18.0" -numItems 2 -symbolTag { - 0 "Eiger" - 1 "Pilatus" -} -symbol0 { - 0 "E9M" - 1 "P6M" -} -PV0 { - 0 "eiger" - 1 "pilatus" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 251 -y 59 -w 160 -h 42 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Move Stage" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run setup_detector_stage '\{\"expt_type\":\"Serial Jet\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 150 -y 10 -w 135 -h 21 -font "arial-bold-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Detector Stage" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl b/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl deleted file mode 100644 index 0df245f1f..000000000 --- a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +++ /dev/null @@ -1,2274 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 1018 -y 277 -w 700 -h 900 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 14 -ctlBgColor1 index 14 -ctlBgColor2 index 0 -topShadowColor index 0 -botShadowColor index 0 -endScreenProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 12 -y 285 -w 255 -h 308 -lineColor index 26 -fill -fillColor index 25 -alarmPv "BL24I-EA-IOC-12:GP6" -visPv "BL24I-EA-IOC-12:GP6" -visMin "1" -visMax "10" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 17 -y 290 -w 245 -h 298 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 145 -y 328 -w 97 -h 30 -controlPv "BL24I-EA-IOC-12:GP9" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 145 -y 366 -w 97 -h 30 -controlPv "BL24I-EA-IOC-12:GP10" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 16 -y 52 -w 246 -h 227 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 274 -y 52 -w 400 -h 404 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 87 -y 208 -w 0 -h 0 -lineColor index 14 -fillColor index 14 -numPoints 1 -xPoints { - 0 87 -} -yPoints { - 0 208 -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 346 -y 100 -w 32 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Visit" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 287 -y 130 -w 103 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Sub-directory" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 394 -y 124 -w 273 -h 30 -controlPv "BL24I-EA-IOC-12:GP2" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 394 -y 163 -w 273 -h 30 -controlPv "BL24I-EA-IOC-12:GP3" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 292 -y 173 -w 71 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Filename" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 291 -y 210 -w 141 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Number of images" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 449 -y 200 -w 125 -h 30 -controlPv "BL24I-EA-IOC-12:GP4" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 448 -y 237 -w 125 -h 30 -controlPv "BL24I-EA-IOC-12:GP5" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 321 -y 244 -w 109 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Exposure time" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 448 -y 276 -w 125 -h 30 -controlPv "BL24I-OP-ATTN-01:T2A:SETVAL1" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 336 -y 324 -w 96 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Det distance" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 450 -y 399 -w 100 -h 40 -fgColor index 14 -bgColor index 17 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-24.0" -buttonLabel "Start" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run run_extruder_plan" -} -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 151 -y 142 -w 40 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:100" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 159 -y 149 -w 24 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+X" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 99 -y 142 -w 40 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-100" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 110 -y 149 -w 20 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-X" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 119 -y 101 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 131 -y 110 -w 23 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 113 -y 185 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 131 -y 194 -w 19 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 144 -y 234 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 153 -y 244 -w 39 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "OUT" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 74 -y 234 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:-750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 92 -y 244 -w 18 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "IN" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 448 -y 315 -w 125 -h 30 -controlPv "BL24I-EA-IOC-12:GP7" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 113 -y 758 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BL-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 4 -symbolTag { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -symbol0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -value0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 31 -y 764 -w 69 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Backlight" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 113 -y 792 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BS-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 6 -symbolTag { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -symbol0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -value0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 27 -y 797 -w 77 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Beamstop" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 114 -y 826 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-AL-APTR-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 2 -symbolTag { - 0 "In" - 1 "Out" -} -symbol0 { - 0 "In" - 1 "Out" -} -value0 { - 0 "In" - 1 "Out" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 26 -y 831 -w 74 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Apertures" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 553 -y 661 -w 116 -h 75 -fgColor index 14 -bgColor index 48 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run initialise_extruder" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 327 -y 278 -w 102 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Transmission" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 196 -y 142 -w 40 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:300" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 204 -y 149 -w 19 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "x3" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 54 -y 142 -w 40 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-300" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 65 -y 149 -w 19 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "x3" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 361 -y 521 -w 71 -h 30 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-DI-OAV-01:CAM:GainAuto" -pressValue "Once" -onLabel "Gain" -offLabel "Gain" -3d -font "arial-medium-r-16.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 288 -y 561 -w 44 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Zoom" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 611 -w 680 -h 252 -lineColor index 9 -fillColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 205 -y 234 -w 38 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:3750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 214 -y 241 -w 19 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "x5" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 34 -y 234 -w 37 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:-3750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 44 -y 242 -w 19 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "x5" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 498 -y 871 -w 176 -h 18 -font "arial-medium-i-16.0" -fontAlign "center" -fgColor index 11 -bgColor index 0 -useDisplayBg -value { - "gui version: python3 1.0" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 203 -y 6 -w 251 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "I24 - Extruder SSX" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 343 -y 556 -w 90 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "BL24I-EA-OAV-01:FZOOM:MP:SELECT" -font "arial-medium-r-18.0" -numItems 8 -symbolTag { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -symbol0 { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -value0 { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 208 -y 721 -w 75 -h 18 -controlPv "BL24I-EA-SHTR-01:STA" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 2 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 93 -y 721 -w 91 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Fast Shutter" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 48 -y 691 -w 133 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Expt hutch shutter" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 208 -y 691 -w 75 -h 18 -controlPv "BL24I-PS-SHTR-01:STA" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 2 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 228 -y 661 -w 55 -h 18 -controlPv "BL24I-OP-ATTN-01:MATCH" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 18 -y 661 -w 195 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Current filter transmission" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 352 -y 689 -w 65 -h 18 -controlPv "BL24I-EA-PILAT-01:cam1:DetectorState_RBV" -font "arial-medium-r-16.0" -fgColor index 16 -fgAlarm -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 689 -w 35 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "P6M" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 14 -y 615 -w 323 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Beamline and System Status" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 393 -y 99 -w 253 -h 18 -controlPv "BL24I-EA-IOC-12:GP1" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 25 -bgColor index 14 -useDisplayBg -autoHeight -precision 2 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 290 -y 478 -w 230 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Sample visualisation" -} -autoSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 451 -y 522 -w 120 -h 30 -fgColor index 43 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -font "arial-bold-r-14.0" -buttonLabel "Backlight" -numPvs 4 -numDsps 1 -displayFileName { - 0 "/dls_sw/work/R3.14.12.7/ioc/BL24I/BL/data/el2502.edl" -} -symbols { - 0 "DEVICE=BL24I-DI-LED-01,longlabel=LED 1,shortlabel=LED 1" -} -replaceSymbols { - 0 1 -} -propagateMacros { - 0 0 -} -endObjectProperties - -# (Choice Button) -object activeChoiceButtonClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 571 -y 522 -w 90 -h 30 -fgColor index 25 -bgColor index 3 -selectColor index 3 -inconsistentColor index 0 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-DI-LED-01:TOGGLE" -indicatorPv "BL24I-DI-LED-01:TOGGLE" -font "arial-medium-r-16.0" -orientation "horizontal" -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 661 -y 522 -w 25 -h 30 -controlPv "BL24I-DI-LED-01:TOGGLE" -lineColor index 14 -onColor index 15 -offColor index 19 -lineWidth 2 -numBits 1 -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 450 -y 559 -w 120 -h 30 -fgColor index 43 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -font "arial-bold-r-14.0" -buttonLabel "Ringlight" -numPvs 4 -numDsps 1 -displayFileName { - 0 "/dls_sw/work/R3.14.12.7/ioc/BL24I/BL/data/el2502.edl" -} -symbols { - 0 "DEVICE=BL24I-DI-LED-02,longlabel=LED 2,shortlabel=LED 2" -} -replaceSymbols { - 0 1 -} -propagateMacros { - 0 0 -} -endObjectProperties - -# (Choice Button) -object activeChoiceButtonClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 570 -y 559 -w 90 -h 30 -fgColor index 25 -bgColor index 3 -selectColor index 3 -inconsistentColor index 0 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-DI-LED-02:TOGGLE" -indicatorPv "BL24I-DI-LED-02:TOGGLE" -font "arial-medium-r-16.0" -orientation "horizontal" -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 660 -y 559 -w 25 -h 30 -controlPv "BL24I-DI-LED-02:TOGGLE" -lineColor index 14 -onColor index 15 -offColor index 19 -lineWidth 2 -numBits 1 -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 290 -y 522 -w 67 -h 30 -fgColor index 43 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -font "arial-bold-r-14.0" -buttonLabel "Viewer" -numCmds 1 -command { - 0 "unset http_proxy; ffmpegViewer $([ \"$(/sbin/lspci | grep 'VGA.*Matrox.*M91XX.*')\" != \"\" ] && echo -f) `caget -t -S BL24I-DI-OAV-01:MJPG:MJPG_URL_RBV` BL24I-DI-OAV-01:MJPG:" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 274 -y 474 -w 417 -h 124 -lineColor index 9 -fillColor index 14 -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 328 -y 294 -w 100 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "(fraction not %)" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 380 -y 59 -w 207 -h 23 -font "arial-bold-r-20.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Data Collection Setup" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 93 -y 61 -w 104 -h 27 -font "arial-bold-r-24.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Align Jet" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 466 -y 819 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWR" -pressValue "1" -onLabel "-" -offLabel "-" -3d -font "arial-bold-r-24.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 375 -y 785 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.VAL" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 513 -y 819 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWF" -pressValue "1" -onLabel "+" -offLabel "+" -3d -font "arial-bold-r-16.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 758 -w 149 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Detector translation" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 792 -w 53 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Demand" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 823 -w 42 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Nudge" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 466 -y 791 -w 86 -h 18 -controlPv "BL24I-EA-DET-01:Z.RBV" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 375 -y 816 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.TWV" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 716 -w 35 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "E9M" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 352 -y 716 -w 65 -h 18 -controlPv "BL24I-EA-EIGER-01:CAM:DetectorState_RBV" -font "arial-medium-r-16.0" -fgColor index 16 -fgAlarm -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 573 -y 675 -w 72 -h 46 -font "arial-medium-r-20.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Initialise" - "on start" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 430 -y 662 -w 86 -h 18 -controlPv "BL24I-EA-IOC-12:GP15" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 304 -y 661 -w 116 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Detector in use" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 344 -y 359 -w 94 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Pump Probe" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 444 -y 354 -w 132 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "BL24I-EA-IOC-12:GP6" -font "arial-medium-r-18.0" -numItems 2 -symbolTag { - 0 "False" - 1 "True" -} -symbol0 { - 0 "False" - 1 "True" -} -value0 { - 0 "0" - 1 "1" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 38 -y 372 -w 91 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Laser delay" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 39 -y 335 -w 89 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Laser dwell" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 90 -y 296 -w 118 -h 23 -font "arial-bold-r-20.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Pump Probe" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 246 -y 335 -w 9 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 246 -y 373 -w 9 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 421 -y 717 -w 8 -h 15 -controlPv "BL24I-EA-EIGER-01:OD1:Writing_RBV" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 432 -y 717 -w 8 -h 15 -controlPv "BL24I-EA-EIGER-01:OD2:Writing_RBV" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 443 -y 717 -w 8 -h 15 -controlPv "BL24I-EA-EIGER-01:OD3:Writing_RBV" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 454 -y 717 -w 8 -h 15 -controlPv "BL24I-EA-EIGER-01:OD4:Writing_RBV" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (PNG Image) -object activePngClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 55 -y 407 -w 175 -h 139 -file "/home/xfk23773/Downloads/short1-laser.png" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 34 -y 550 -w 100 -h 30 -fgColor index 14 -bgColor index 17 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-20.0" -buttonLabel "Laser On" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_check '\{\"mode\":\"laseron\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 140 -y 550 -w 100 -h 30 -fgColor index 0 -bgColor index 21 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-20.0" -buttonLabel "Laser Off" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_check '\{\"mode\":\"laseroff\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 557 -y 742 -w 110 -h 30 -fgColor index 14 -bgColor index 48 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Enter hutch" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run enter_hutch" -} -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 571 -y 800 -w 96 -h 31 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Detector" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/DetStage.edl" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 559 -y 399 -w 100 -h 40 -fgColor index 0 -bgColor index 21 -topShadowColor index 0 -botShadowColor index 11 -font "arial-medium-r-24.0" -buttonLabel "Abort" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller abort" -} -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/microdrop_alignment.edl b/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/microdrop_alignment.edl deleted file mode 100644 index 091957fd2..000000000 --- a/src/mx_bluesky/I24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +++ /dev/null @@ -1,1084 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 2669 -y 319 -w 700 -h 900 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 14 -ctlBgColor1 index 14 -ctlBgColor2 index 0 -topShadowColor index 0 -botShadowColor index 0 -endScreenProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 13 -y 716 -w 667 -h 144 -lineColor index 9 -fillColor index 14 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 45 -y 63 -w 615 -h 615 -lineColor index 14 -fill -fillColor index 7 -lineWidth 3 -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 88 -y 253 -w 0 -h 0 -lineColor index 14 -fillColor index 14 -numPoints 1 -xPoints { - 0 88 -} -yPoints { - 0 253 -} -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 328 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:170" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 332 -y 265 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+X 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 267 -y 209 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:500" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 278 -y 216 -w 85 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 306 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-500" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 314 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 314 -y 518 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 323 -y 528 -w 39 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "OUT" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 254 -y 518 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:-750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 269 -y 520 -w 30 -h 34 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "IN" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 113 -y 758 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BL-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 4 -symbolTag { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -symbol0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -value0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 31 -y 764 -w 69 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Backlight" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 113 -y 792 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BS-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 6 -symbolTag { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -symbol0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -value0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 27 -y 797 -w 77 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Beamstop" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 114 -y 826 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-AL-APTR-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 2 -symbolTag { - 0 "In" - 1 "Out" -} -symbol0 { - 0 "In" - 1 "Out" -} -value0 { - 0 "In" - 1 "Out" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 26 -y 831 -w 74 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Apertures" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 498 -y 871 -w 176 -h 18 -font "arial-medium-i-16.0" -fontAlign "center" -fgColor index 11 -bgColor index 0 -useDisplayBg -value { - "gui version: python3 1.0" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 203 -y 6 -w 360 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "I24 - Microdrop alignment " -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 17 -y 720 -w 186 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Move equipment" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 193 -y 83 -w 265 -h 27 -font "arial-bold-r-24.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Align autodrop pipette" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 499 -y 804 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWR" -pressValue "1" -onLabel "-" -offLabel "-" -3d -font "arial-bold-r-24.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 405 -y 770 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.VAL" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 547 -y 804 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWF" -pressValue "1" -onLabel "+" -offLabel "+" -3d -font "arial-bold-r-16.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 340 -y 749 -w 149 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Detector translation" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 338 -y 781 -w 53 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Demand" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 348 -y 808 -w 42 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Nudge" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 501 -y 777 -w 86 -h 18 -controlPv "BL24I-EA-DET-01:Z.RBV" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 405 -y 802 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.TWV" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 209 -y 491 -w 204 -h 21 -font "arial-bold-r-18.0" -fgColor index 20 -bgColor index 14 -useDisplayBg -value { - "MOVE IT CAREFULLY! " -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 148 -y 525 -w 97 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "50 um step " -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 560 -w 24 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "- Z" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 322 -y 560 -w 28 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+ Z" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 347 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 356 -w 82 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 20 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 391 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-5000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 274 -y 400 -w 87 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 100 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 267 -y 167 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 125 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:5000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 275 -y 175 -w 86 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 20 um" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 132 -w 91 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 100 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 425 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:850" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 429 -y 266 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+X 50 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 230 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-170" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 231 -y 265 -w 77 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-X 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 137 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-850" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 141 -y 266 -w 77 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-X 50 um" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/extruder/__init__.py b/src/mx_bluesky/I24/serial/extruder/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py b/src/mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py deleted file mode 100755 index 375662ef8..000000000 --- a/src/mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +++ /dev/null @@ -1,511 +0,0 @@ -""" -Extruder data collection -This version in python3 new Feb2021 by RLO - - March 21 added logging and Eiger functionality -""" - -import json -import logging -import re -import shutil -import sys -import time -from datetime import datetime -from pathlib import Path -from pprint import pformat -from time import sleep - -import bluesky.plan_stubs as bps -import bluesky.preprocessors as bpp -from blueapi.core import MsgGenerator -from dodal.common import inject -from dodal.devices.hutch_shutter import HutchShutter, ShutterDemand -from dodal.devices.i24.aperture import Aperture -from dodal.devices.i24.beamstop import Beamstop -from dodal.devices.i24.dcm import DCM -from dodal.devices.i24.dual_backlight import DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion -from dodal.devices.zebra import DISCONNECT, SOFT_IN3, Zebra - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.dcid import DCID -from mx_bluesky.I24.serial.parameters import ExtruderParameters, SSXType -from mx_bluesky.I24.serial.parameters.constants import PARAM_FILE_NAME, PARAM_FILE_PATH -from mx_bluesky.I24.serial.setup_beamline import Pilatus, caget, caput, pv -from mx_bluesky.I24.serial.setup_beamline import setup_beamline as sup -from mx_bluesky.I24.serial.setup_beamline.setup_detector import ( - UnknownDetectorType, - get_detector_type, -) -from mx_bluesky.I24.serial.setup_beamline.setup_zebra_plans import ( - GATE_START, - TTL_EIGER, - TTL_PILATUS, - arm_zebra, - disarm_zebra, - open_fast_shutter, - reset_zebra_when_collection_done_plan, - set_shutter_mode, - setup_zebra_for_extruder_with_pump_probe_plan, - setup_zebra_for_quickshot_plan, -) -from mx_bluesky.I24.serial.write_nexus import call_nexgen - -usage = "%(prog)s command [options]" -logger = logging.getLogger("I24ssx.extruder") - -SAFE_DET_Z = 1480 - - -def setup_logging(): - logfile = time.strftime("i24extruder_%d%B%y.log").lower() - log.config(logfile) - - -def flush_print(text): - sys.stdout.write(str(text)) - sys.stdout.flush() - - -@log.log_on_entry -def initialise_extruder( - detector_stage: DetectorMotion = inject("detector_motion"), -) -> MsgGenerator: - setup_logging() - logger.info("Initialise Parameters for extruder data collection on I24.") - - visit = caget(pv.ioc12_gp1) - logger.info("Visit defined %s" % visit) - - # Define detector in use - det_type = yield from get_detector_type(detector_stage) - - caput(pv.ioc12_gp2, "test") - caput(pv.ioc12_gp3, "testrun") - caput(pv.ioc12_gp4, "100") - caput(pv.ioc12_gp5, "0.01") - caput(pv.ioc12_gp6, 0) - caput(pv.ioc12_gp8, 0) # status PV do not reuse gp8 for something else - caput(pv.ioc12_gp9, 0) - caput(pv.ioc12_gp10, 0) - caput(pv.ioc12_gp15, det_type.name) - caput(pv.pilat_cbftemplate, 0) - logger.info("Initialisation complete.") - yield from bps.null() - - -@log.log_on_entry -def laser_check( - mode: str, - zebra: Zebra = inject("zebra"), - detector_stage: DetectorMotion = inject("detector_motion"), -) -> MsgGenerator: - """Plan to open the shutter and check the laser beam from the viewer by pressing \ - 'Laser On' and 'Laser Off' buttons on the edm. - - The 'Laser on' button sets the correct OUT_TTL pv for the detector in use to \ - SOFT_IN1 and the shutter mode to auto. - The 'Laser off' button disconnects the OUT_TTL pv set by the previous step and \ - resets the shutter mode to manual. - - WARNING. When using the laser with the extruder, some hardware changes need to be made. - Because all four of the zebra ttl outputs are in use in this mode, when the \ - detector in use is the Eiger, the Pilatus cable is repurposed to trigger the light \ - source, and viceversa. - """ - setup_logging() - logger.debug(f"Laser check: {mode}") - - det_type = yield from get_detector_type(detector_stage) - - LASER_TTL = TTL_EIGER if isinstance(det_type, Pilatus) else TTL_PILATUS - if mode == "laseron": - yield from bps.abs_set(zebra.output.out_pvs[LASER_TTL], SOFT_IN3) - yield from set_shutter_mode(zebra, "auto") - - if mode == "laseroff": - yield from bps.abs_set(zebra.output.out_pvs[LASER_TTL], DISCONNECT) - yield from set_shutter_mode(zebra, "manual") - - -@log.log_on_entry -def enter_hutch( - detector_stage: DetectorMotion = inject("detector_motion"), -) -> MsgGenerator: - """Move the detector stage before entering hutch.""" - setup_logging() - yield from bps.mv(detector_stage.z, SAFE_DET_Z) - logger.debug("Detector moved.") - - -@log.log_on_entry -def write_parameter_file(detector_stage: DetectorMotion): - """Writes a json parameter file that can later be parsed by the model.""" - param_file: Path = PARAM_FILE_PATH / PARAM_FILE_NAME - logger.debug(f"Writing Parameter File to: {param_file}\n") - - det_type = yield from get_detector_type(detector_stage) - logger.warning(f"DETECTOR TYPE: {det_type}") - filename = caget(pv.ioc12_gp3) - # If file name ends in a digit this causes processing/pilatus pain. - # Append an underscore - if det_type.name == "pilatus": - m = re.search(r"\d+$", filename) - if m is not None: - # Note for future reference. Appending underscore causes more hassle and - # high probability of users accidentally overwriting data. Use a dash - filename = filename + "-" - logger.info( - "Requested filename ends in a number. Appended dash: %s" % filename - ) - - pump_status = bool(caget(pv.ioc12_gp6)) - pump_exp = float(caget(pv.ioc12_gp9)) if pump_status else None - pump_delay = float(caget(pv.ioc12_gp10)) if pump_status else None - - params_dict = { - "visit": log._read_visit_directory_from_file().as_posix(), - "directory": caget(pv.ioc12_gp2), - "filename": filename, - "exposure_time_s": float(caget(pv.ioc12_gp5)), - "detector_distance_mm": float(caget(pv.ioc12_gp7)), - "detector_name": str(det_type), - "num_images": int(caget(pv.ioc12_gp4)), - "pump_status": pump_status, - "laser_dwell_s": pump_exp, - "laser_delay_s": pump_delay, - } - with open(param_file, "w") as f: - json.dump(params_dict, f, indent=4) - - logger.info("Parameters \n") - logger.info(pformat(params_dict)) - yield from bps.null() - - -@log.log_on_entry -def main_extruder_plan( - zebra: Zebra, - aperture: Aperture, - backlight: DualBacklight, - beamstop: Beamstop, - detector_stage: DetectorMotion, - shutter: HutchShutter, - dcm: DCM, - parameters: ExtruderParameters, - dcid: DCID, - start_time: datetime, -) -> MsgGenerator: - # Setting up the beamline - logger.debug("Open hutch shutter") - yield from bps.abs_set(shutter, ShutterDemand.OPEN, wait=True) - - yield from sup.setup_beamline_for_collection_plan( - aperture, backlight, beamstop, wait=True - ) - - yield from sup.move_detector_stage_to_position_plan( - detector_stage, parameters.detector_distance_mm - ) - - # For pixel detector - filepath = parameters.collection_directory.as_posix() - logger.debug(f"Filepath {filepath}") - logger.debug(f"Filename {parameters.filename}") - - if parameters.detector_name == "pilatus": - logger.info("Using pilatus mini cbf") - caput(pv.pilat_cbftemplate, 0) - logger.info(f"Pilatus quickshot setup: filepath {filepath}") - logger.info(f"Pilatus quickshot setup: filepath {parameters.filename}") - logger.info( - f"Pilatus quickshot setup: number of images {parameters.num_images}" - ) - logger.info( - f"Pilatus quickshot setup: exposure time {parameters.exposure_time_s}" - ) - - if parameters.pump_status: - logger.info("Pump probe extruder data collection") - logger.info(f"Pump exposure time {parameters.laser_dwell_s}") - logger.info(f"Pump delay time {parameters.laser_delay_s}") - sup.pilatus( - "fastchip", - [ - filepath, - parameters.filename, - parameters.num_images, - parameters.exposure_time_s, - ], - ) - yield from setup_zebra_for_extruder_with_pump_probe_plan( - zebra, - parameters.detector_name, - parameters.exposure_time_s, - parameters.num_images, - parameters.laser_dwell_s, - parameters.laser_delay_s, - pulse1_delay=0.0, - wait=True, - ) - else: - logger.info("Static experiment: no photoexcitation") - sup.pilatus( - "quickshot", - [ - filepath, - parameters.filename, - parameters.num_images, - parameters.exposure_time_s, - ], - ) - yield from setup_zebra_for_quickshot_plan( - zebra, parameters.exposure_time_s, parameters.num_images, wait=True - ) - - elif parameters.detector_name == "eiger": - logger.info("Using Eiger detector") - - logger.warning( - """TEMPORARY HACK! - Running a Single image pilatus data collection to create directory.""" - ) # See https://github.com/DiamondLightSource/mx_bluesky/issues/45 - num_shots = 1 - sup.pilatus( - "quickshot-internaltrig", - [filepath, parameters.filename, num_shots, parameters.exposure_time_s], - ) - logger.debug("Sleep 2s waiting for pilatus to arm") - sleep(2.5) - caput(pv.pilat_acquire, "0") # Disarm pilatus - sleep(0.5) - caput(pv.pilat_acquire, "1") # Arm pilatus - logger.debug("Pilatus data collection DONE") - sup.pilatus("return to normal") - logger.info("Pilatus back to normal. Single image pilatus data collection DONE") - - caput(pv.eiger_seqID, int(caget(pv.eiger_seqID)) + 1) - logger.info(f"Eiger quickshot setup: filepath {filepath}") - logger.info(f"Eiger quickshot setup: filepath {parameters.filename}") - logger.info(f"Eiger quickshot setup: number of images {parameters.num_images}") - logger.info( - f"Eiger quickshot setup: exposure time {parameters.exposure_time_s}" - ) - - if parameters.pump_status: - logger.info("Pump probe extruder data collection") - logger.debug(f"Pump exposure time {parameters.laser_dwell_s}") - logger.debug(f"Pump delay time {parameters.laser_delay_s}") - sup.eiger( - "triggered", - [ - filepath, - parameters.filename, - parameters.num_images, - parameters.exposure_time_s, - ], - ) - yield from setup_zebra_for_extruder_with_pump_probe_plan( - zebra, - parameters.detector_name, - parameters.exposure_time_s, - parameters.num_images, - parameters.laser_dwell_s, - parameters.laser_delay_s, - pulse1_delay=0.0, - wait=True, - ) - else: - logger.info("Static experiment: no photoexcitation") - sup.eiger( - "quickshot", - [ - filepath, - parameters.filename, - parameters.num_images, - parameters.exposure_time_s, - ], - ) - yield from setup_zebra_for_quickshot_plan( - zebra, parameters.exposure_time_s, parameters.num_images, wait=True - ) - else: - err = f"Unknown Detector Type, det_type = {parameters.detector_name}" - logger.error(err) - raise UnknownDetectorType(err) - - # Do DCID creation BEFORE arming the detector - dcid.generate_dcid( - visit=parameters.visit.name, - image_dir=parameters.collection_directory.as_posix(), - start_time=start_time, - num_images=parameters.num_images, - exposure_time=parameters.exposure_time_s, - pump_exposure_time=parameters.laser_dwell_s, - pump_delay=parameters.laser_delay_s, - pump_status=int(parameters.pump_status), - ) - - # Collect - logger.info("Fast shutter opening") - yield from open_fast_shutter(zebra) - if parameters.detector_name == "pilatus": - logger.info("Pilatus acquire ON") - caput(pv.pilat_acquire, 1) - elif parameters.detector_name == "eiger": - logger.info("Triggering Eiger NOW") - caput(pv.eiger_trigger, 1) - - dcid.notify_start() - - if parameters.detector_name == "eiger": - wavelength = yield from bps.rd(dcm.wavelength_in_a) - logger.debug("Call nexgen server for nexus writing.") - call_nexgen(None, start_time, parameters, wavelength, "extruder") - - timeout_time = time.time() + parameters.num_images * parameters.exposure_time_s + 10 - - yield from arm_zebra(zebra) - sleep(GATE_START) # Sleep for the same length of gate_start, hard coded to 1 - i = 0 - text_list = ["|", "/", "-", "\\"] - while True: - line_of_text = "\r\t\t\t Waiting " + 30 * ("%s" % text_list[i % 4]) - flush_print(line_of_text) - sleep(0.5) - i += 1 - zebra_arm_status = yield from bps.rd(zebra.pc.arm.armed) - if zebra_arm_status == 0: # not zebra.pc.is_armed(): - # As soon as zebra is disarmed, exit. - # Epics updates this PV once the collection is done. - logger.info("Zebra disarmed - Collection done.") - break - if time.time() >= timeout_time: - logger.warning( - """ - Something went wrong and data collection timed out. Aborting. - """ - ) - raise TimeoutError("Data collection timed out.") - - logger.debug("Collection completed without errors.") - - -@log.log_on_entry -def collection_aborted_plan( - zebra: Zebra, detector_name: str, dcid: DCID -) -> MsgGenerator: - """A plan to run in case the collection is aborted before the end.""" - logger.warning("Data Collection Aborted") - yield from disarm_zebra(zebra) # If aborted/timed out zebra still armed - if detector_name == "pilatus": - caput(pv.pilat_acquire, 0) - elif detector_name == "eiger": - caput(pv.eiger_acquire, 0) - sleep(0.5) - end_time = datetime.now() - dcid.collection_complete(end_time, aborted=True) - - -@log.log_on_entry -def tidy_up_at_collection_end_plan( - zebra: Zebra, - shutter: HutchShutter, - parameters: ExtruderParameters, - dcid: DCID, -) -> MsgGenerator: - """A plan to tidy up at the end of a collection, successful or aborted. - - Args: - zebra (Zebra): The Zebra device. - shutter (HutchShutter): The HutchShutter device. - parameters (ExtruderParameters): Collection parameters. - """ - yield from reset_zebra_when_collection_done_plan(zebra) - - # Clean Up - if parameters.detector_name == "pilatus": - sup.pilatus("return-to-normal") - elif parameters.detector_name == "eiger": - sup.eiger("return-to-normal") - logger.debug(f"{parameters.filename}_{caget(pv.eiger_seqID)}") - logger.debug("End of Run") - logger.debug("Close hutch shutter") - yield from bps.abs_set(shutter, ShutterDemand.CLOSE, wait=True) - - dcid.notify_end() - - -@log.log_on_entry -def collection_complete_plan( - collection_directory: Path, detector_name: str, dcid: DCID -) -> MsgGenerator: - if detector_name == "pilatus": - logger.info("Pilatus Acquire STOP") - caput(pv.pilat_acquire, 0) - elif detector_name == "eiger": - logger.info("Eiger Acquire STOP") - caput(pv.eiger_acquire, 0) - caput(pv.eiger_ODcapture, "Done") - - sleep(0.5) - - end_time = datetime.now() - dcid.collection_complete(end_time, aborted=False) - logger.info("End Time = %s" % end_time.ctime()) - - # Copy parameter file - shutil.copy2( - PARAM_FILE_PATH / PARAM_FILE_NAME, - collection_directory / PARAM_FILE_NAME, - ) - yield from bps.null() - - -def run_extruder_plan( - zebra: Zebra = inject("zebra"), - aperture: Aperture = inject("aperture"), - backlight: DualBacklight = inject("backlight"), - beamstop: Beamstop = inject("beamstop"), - detector_stage: DetectorMotion = inject("detector_motion"), - shutter: HutchShutter = inject("shutter"), - dcm: DCM = inject("dcm"), -) -> MsgGenerator: - setup_logging() - start_time = datetime.now() - logger.info("Collection start time: %s" % start_time.ctime()) - - yield from write_parameter_file(detector_stage) - parameters = ExtruderParameters.from_file(PARAM_FILE_PATH / PARAM_FILE_NAME) - - # DCID - not generated yet - dcid = DCID( - emit_errors=False, - ssx_type=SSXType.EXTRUDER, - detector=parameters.detector_name, - ) - - yield from bpp.contingency_wrapper( - main_extruder_plan( - zebra, - aperture, - backlight, - beamstop, - detector_stage, - shutter, - parameters, - dcm, - dcid, - start_time, - ), - except_plan=lambda e: ( - yield from collection_aborted_plan(zebra, parameters.detector_name, dcid) - ), - else_plan=lambda: ( - yield from collection_complete_plan(parameters.collection_directory, dcid) - ), - final_plan=lambda: ( - yield from tidy_up_at_collection_end_plan(zebra, shutter, parameters, dcid) - ), - auto_raise=False, - ) diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl deleted file mode 100644 index b5636e0de..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +++ /dev/null @@ -1,833 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 1202 -y 1158 -w 550 -h 380 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 7 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 9 -botShadowColor index 9 -title "Mapping Lite" -endScreenProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2044 -y 447 -w 5 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "I" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2002 -y 449 -w 13 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "H" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1250 -y 477 -w 2 -h 0 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 143 -y 82 -w 110 -h 30 -controlPv "ME14E-MO-IOC-01:GP6" -font "arial-medium-r-18.0" -fontAlign "right" -fgColor index 25 -bgColor index 6 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 41 -y 8 -w 153 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Custom Chip" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 4 -y 86 -w 124 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "N windows in x" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 4 -y 130 -w 124 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "N windows in y" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 144 -y 126 -w 110 -h 30 -controlPv "ME14E-MO-IOC-01:GP7" -font "arial-medium-r-18.0" -fontAlign "right" -fgColor index 25 -bgColor index 6 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 380 -y 129 -w 115 -h 59 -lineColor index 17 -fillColor index 0 -lineWidth 4 -numPoints 9 -xPoints { - 0 380 - 1 494 - 2 495 - 3 380 - 4 380 - 5 495 - 6 495 - 7 495 - 8 495 -} -yPoints { - 0 130 - 1 129 - 2 159 - 3 159 - 4 188 - 5 188 - 6 188 - 7 188 - 8 188 -} -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 486 -y 176 -w 26 -h 24 -lineColor index 17 -fill -fillColor index 17 -numPoints 3 -xPoints { - 0 486 - 1 512 - 2 486 -} -yPoints { - 0 176 - 1 186 - 2 200 -} -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 409 -y 119 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 484 -y 119 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 447 -y 119 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 371 -y 149 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 409 -y 148 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 447 -y 148 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 484 -y 148 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 445 -y 178 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 407 -y 178 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 369 -y 179 -w 20 -h 20 -lineColor index 17 -fill -fillColor index 17 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 421 -y 87 -w 22 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Nx" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 336 -y 145 -w 22 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Ny" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 145 -y 171 -w 110 -h 30 -controlPv "ME14E-MO-IOC-01:GP8" -font "arial-medium-r-18.0" -fontAlign "right" -fgColor index 25 -bgColor index 6 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 39 -y 175 -w 90 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Step size x" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 261 -y 174 -w 32 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "mm" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 50 -y 305 -w 252 -h 63 -font "arial-medium-i-18.0" -fgColor index 35 -bgColor index 0 -useDisplayBg -value { - "Step size is in mm" - "Ny must be even (for now)" - "Map type should be set to none" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 6 -y 281 -w 49 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Notes" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 326 -y 71 -w 196 -h 144 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 325 -y 71 -w 197 -h 143 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 349 -y 112 -w 147 -h 105 -font "helvetica-bold-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -value { - "Chip type MUST " - "be set to " - "Custom" - "for gui to " - "be active" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 27 -y 246 -w 277 -h 35 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "caput ME14E-MO-CHIP-01:PMAC_STRING \\#1hmz\\#2hmz\\#3hmz" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 41 -y 252 -w 226 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Set current position as start" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 26 -y 37 -w 230 -h 37 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run cs_reset" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 39 -y 45 -w 204 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Clear coordinate system" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 324 -y 164 -w 197 -h 143 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 351 -y 112 -w 142 -h 105 -font "helvetica-bold-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -value { - "Chip type MUST" - "be set to" - "Custom" - "for gui to" - "be active" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 262 -y 212 -w 32 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "mm" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 146 -y 209 -w 110 -h 25 -controlPv "ME14E-MO-IOC-01:GP99" -font "arial-medium-r-18.0" -fontAlign "right" -fgColor index 25 -bgColor index 6 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 40 -y 211 -w 90 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Step size y" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DetStage.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DetStage.edl deleted file mode 100644 index 8be784dfd..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DetStage.edl +++ /dev/null @@ -1,139 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 1943 -y 793 -w 450 -h 180 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -title "Detector stage " -endScreenProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 251 -y 139 -w 160 -h 21 -controlPv "BL24I-EA-DET-01:Y" -font "arial-medium-r-18.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 28 -y 139 -w 193 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Detector stage position" -} -autoSize -endObjectProperties - -# (Menu Mux PV) -object menuMuxPVClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 35 -y 59 -w 160 -h 42 -fgColour index 14 -bgColour index 4 -topShadowColour index 1 -botShadowColour index 8 -controlPv "ME14E-MO-IOC-01:GP101" -font "arial-medium-r-18.0" -numItems 2 -symbolTag { - 0 "Eiger" - 1 "Pilatus" -} -symbol0 { - 0 "E9M" - 1 "P6M" -} -PV0 { - 0 "eiger" - 1 "pilatus" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 251 -y 59 -w 160 -h 42 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Move Stage" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run setup_detector_stage '\{\"expt_type\":\"Serial Fixed\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 150 -y 10 -w 135 -h 21 -font "arial-bold-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Detector Stage" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl deleted file mode 100644 index 95f76017a..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +++ /dev/null @@ -1,4095 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 2870 -y 245 -w 1030 -h 950 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -title "Diamond FastChip python3 v1.0" -snapToGrid -gridSize 5 -endScreenProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 25 -y 790 -w 975 -h 150 -lineColor index 5 -fillColor index 0 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 480 -y 315 -w 515 -h 470 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 470 -w 175 -h 120 -lineColor index 14 -fill -fillColor index 38 -visPv "ME14E-MO-IOC-01:GP2" -visMin "1" -visMax "2" -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 940 -y 555 -w 20 -h 20 -lineColor index 9 -fill -fillColor index 23 -visPv "ME14E-MO-IOC-01:GP1" -visMin "1" -visMax "2" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 815 -y 550 -w 120 -h 35 -fgColor index 13 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/MappingLite-oxford_py3v1.edl" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 835 -y 475 -w 113 -h 21 -font "helvetica-medium-r-18.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -visMin "1" -visMax "2" -value { - "Lite launchers" -} -autoSize -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 940 -y 515 -w 20 -h 20 -lineColor index 9 -fill -fillColor index 23 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "1" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 835 -y 510 -w 95 -h 30 -fgColor index 13 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "Oxford" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/MappingLite-oxford_py3v1.edl" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 35 -y 295 -w 410 -h 490 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (X-Y Graph) -object xyGraphClass -beginObjectProperties -major 4 -minor 8 -release 0 -# Geometry -x 725 -y 0 -w 275 -h 305 -# Appearance -fgColor index 3 -bgColor index 80 -gridColor index 2 -font "arial-medium-r-8.0" -# Operating Modes -plotMode "plotLastNPts" -nPts 0 -# X axis properties -showXAxis -xAxisSrc "fromUser" -xMin 0 -xMax 24.6 -xLabelIntervals 8 -xMinorsPerMajor 2 -xShowLabelGrid -xShowMajorGrid -xUserSpecScaleDiv 1 -# Y axis properties -showYAxis -yAxisSrc "fromUser" -yMin 0 -yMax 24.6 -yLabelIntervals 9 -yMinorsPerMajor 2 -yShowLabelGrid -yShowMajorGrid -yUserSpecScaleDiv 1 -# Y2 axis properties -y2AxisSrc "AutoScale" -y2Max 1 -# Trace Properties -numTraces 2 -xPv { - 0 "ME14E-MO-CHIP-01:X.RBV" - 1 "ME14E-MO-CHIP-01:X.VAL" -} -yPv { - 0 "ME14E-MO-CHIP-01:Y.RBV" - 1 "ME14E-MO-CHIP-01:Y.VAL" -} -plotStyle { - 0 "single point" - 1 "single point" -} -lineThickness { - 0 3 - 1 2 -} -plotUpdateMode { - 0 "xOrY" - 1 "xOrY" -} -plotSymbolType { - 0 "circle" - 1 "diamond" -} -plotColor { - 0 index 20 - 1 index 55 -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 610 -y 110 -w 115 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto_preset '\{\"place\":\"load_position\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 475 -y 110 -w 130 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto_preset '\{\"place\":\"collect_position\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 645 -y 730 -w 135 -h 50 -fgColor index 14 -bgColor index 17 -topShadowColor index 1 -botShadowColor index 14 -font "helvetica-bold-r-24.0" -buttonLabel "Start" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run run_fixed_target_plan" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 285 -y 5 -w 303 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "I24 - Fixed Target SSX" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 80 -y 230 -w 52 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Focus" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 370 -y 60 -w 42 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Block" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 225 -y 60 -w 61 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Window" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 120 -y 830 -w 87 -h 17 -controlPv "ME14E-MO-CHIP-01:X.RBV" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 55 -y 830 -w 61 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Stage X" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 120 -y 855 -w 87 -h 18 -controlPv "ME14E-MO-CHIP-01:Y.RBV" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 120 -y 880 -w 87 -h 18 -controlPv "ME14E-MO-CHIP-01:Z.RBV" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 310 -y 225 -w 40 -h 35 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:200" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 240 -y 225 -w 40 -h 35 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:-200" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 250 -y 235 -w 14 -h 16 -font "arial-bold-r-14.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "IN" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 315 -y 235 -w 30 -h 16 -font "arial-bold-r-14.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "OUT" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 110 -y 300 -w 253 -h 23 -font "arial-bold-r-20.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Co-ordinate System Setup" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 225 -y 705 -w 105 -h 70 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run cs_maker" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 230 -y 710 -w 95 -h 63 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Make " - "co-ordinate" - "system" -} -autoSize -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 215 -y 830 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:X.LLS" -lineColor index 14 -onColor index 35 -offColor index 39 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 215 -y 855 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:Y.LLS" -lineColor index 14 -onColor index 35 -offColor index 39 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 215 -y 880 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:Z.LLS" -lineColor index 14 -onColor index 35 -offColor index 39 -numBits 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 80 -y 60 -w 51 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Nudge" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 360 -y 225 -w 65 -h 35 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:1200" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 165 -y 225 -w 65 -h 35 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:-1200" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 175 -y 235 -w 38 -h 16 -font "arial-bold-r-14.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "IN x 3" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 365 -y 235 -w 54 -h 16 -font "arial-bold-r-14.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "OUT x 3" -} -autoSize -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 255 -y 830 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:X.MOVN" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 255 -y 855 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:Y.MOVN" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 255 -y 880 -w 30 -h 20 -controlPv "ME14E-MO-CHIP-01:Z.MOVN" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 305 -y 905 -w 76 -h 29 -fgColor index 3 -bgColor index 6 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "PMAC" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/PMAC_Command.edl" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2044 -y 447 -w 5 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "I" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2002 -y 449 -w 13 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "H" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1250 -y 477 -w 2 -h 0 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 525 -y 735 -w 91 -h 42 -font "helvetica-bold-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Data " - "Collection" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1275 -y 1270 -w 172 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Predefined Positions" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 615 -y 115 -w 103 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Load position" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 480 -y 115 -w 117 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Collect position" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 50 -y 910 -w 240 -h 18 -controlPv "ME14E-MO-CHIP-01:SEND_STRING.AINP" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 475 -y 75 -w 155 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto_preset '\{\"place\":\"zero\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 480 -y 80 -w 145 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Move chip to origin" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 55 -y 855 -w 61 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Stage Y" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 55 -y 880 -w 60 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Stage Z" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 590 -y 320 -w 299 -h 23 -font "arial-bold-r-20.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Chip and Data Collection Setup" -} -autoSize -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 305 -y 230 -w 0 -h 0 -lineColor index 14 -fillColor index 0 -numPoints 1 -xPoints { - 0 305 -} -yPoints { - 0 230 -} -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 295 -y 220 -w 0 -h 50 -lineColor index 14 -fillColor index 0 -numPoints 3 -xPoints { - 0 295 - 1 295 - 2 295 -} -yPoints { - 0 220 - 1 270 - 2 270 -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 545 -y 905 -w 144 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run initialise_stages" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 555 -y 910 -w 120 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Initialise stages" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 605 -y 630 -w 165 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "ME14E-MO-IOC-01:GP4" -font "arial-medium-r-18.0" -numItems 9 -symbolTag { - 0 "None" - 1 "Short1" - 2 "Short2" - 3 "Repeat1" - 4 "Repeat2" - 5 "Repeat3" - 6 "Repeat5" - 7 "Repeat10" - 8 "Medium1" -} -symbol0 { - 0 "na" - 1 "s1" - 2 "s2" - 3 "R1" - 4 "R2" - 5 "R3" - 6 "R5" - 7 "R10" - 8 "M1" -} -value0 { - 0 "None" - 1 "Short1" - 2 "Short2" - 3 "Repeat1" - 4 "Repeat2" - 5 "Repeat3" - 6 "Repeat5" - 7 "Repeat10" - 8 "Medium1" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 505 -y 635 -w 94 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Pump Probe" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 605 -y 560 -w 165 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "ME14E-MO-IOC-01:GP2" -font "arial-medium-r-18.0" -numItems 3 -symbolTag { - 0 "None" - 1 "Mapping Lite" - 2 "Full Mapping" -} -symbol0 { - 0 "NN" - 1 "ML" - 2 "FM" -} -value0 { - 0 "none" - 1 "mappinglite" - 2 "fullmapping" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 565 -w 74 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Map Type" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 35 -y 795 -w 323 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Beamline and System Status" -} -autoSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 280 -y 1005 -w 38 -h 24 -fgColor index 14 -bgColor index 6 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "GP" -numPvs 4 -numDsps 1 -displayFileName { - 0 "GP-small.edl" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 540 -y 720 -w 200 -h 2 -lineColor index 58 -fill -fillColor index 58 -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 385 -y 905 -w 76 -h 29 -fgColor index 3 -bgColor index 6 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "GP PV" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/ME14E-GeneralPurpose.edl" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 580 -y 665 -w 165 -h 50 -fgColor index 14 -bgColor index 17 -topShadowColor index 1 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run write_parameter_file" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 590 -y 670 -w 141 -h 36 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Set parameters " - "and create shotlist" -} -autoSize -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 670 -y 335 -w 0 -h 0 -lineColor index 14 -fillColor index 0 -numPoints 1 -xPoints { - 0 670 -} -yPoints { - 0 335 -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 475 -y 215 -w 69 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Backlight" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 825 -y 555 -w 95 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Oxford Inner" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 500 -w 175 -h 90 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP2" -visInvert -visMin "1" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 470 -w 175 -h 120 -lineColor index 14 -fillColor index 0 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 600 -w 175 -h 115 -lineColor index 14 -fill -fillColor index 38 -visPv "ME14E-MO-IOC-01:GP4" -visMin "1" -visMax "10" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 840 -y 650 -w 115 -h 35 -fgColor index 13 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/pumpprobe-py3v1.edl" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 345 -y 710 -w 70 -h 60 -fgColor index 14 -bgColor index 17 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run block_check" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 355 -y 720 -w 53 -h 42 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Block" - "Check" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 580 -y 860 -w 75 -h 18 -controlPv "BL24I-MO-STEP-14:signal:P2402" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 496 -y 860 -w 66 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Counter" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 485 -y 810 -w 116 -h 27 -font "arial-bold-i-24.0" -fgColor index 25 -bgColor index 0 -useDisplayBg -value { - "RUNNING" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 475 -y 810 -w 130 -h 30 -lineColor index 3 -fill -fillColor index 3 -visPv "BL24I-MO-STEP-14:signal:P2401" -visInvert -visMin "1" -visMax "2" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 470 -y 835 -w 92 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Requested" -} -autoSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 855 -y 425 -w 125 -h 30 -fgColor index 13 -bgColor index 38 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "Custom Chip" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/CustomChip_py3v1.edl" -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 645 -y 530 -w 125 -h 25 -controlPv "ME14E-MO-CHIP-01:detDistance" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 535 -w 98 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Det Distance" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 465 -w 109 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Exposure time" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 645 -y 460 -w 125 -h 25 -controlPv "ME14E-MO-CHIP-01:expTime" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 710 -y 430 -w 60 -h 25 -controlPv "ME14E-MO-IOC-01:GP3" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 435 -w 167 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "N. Shots Per Aperture" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 405 -w 34 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Chip" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 600 -y 400 -w 195 -h 25 -controlPv "ME14E-MO-CHIP-01:chipName" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 600 -y 370 -w 235 -h 25 -controlPv "ME14E-MO-CHIP-01:filePath" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 375 -w 54 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Sub dir" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 345 -w 32 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Visit" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 580 -y 835 -w 75 -h 18 -controlPv "ME14E-MO-IOC-01:GP10" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 550 -y 210 -w 90 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "BL24I-MO-BL-01:MP:SELECT" -font "arial-medium-r-18.0" -numItems 4 -symbolTag { - 0 "Out" - 1 "In" - 2 "LoadCheck" - 3 "OAV2" -} -symbol0 { - 0 "Out" - 1 "In" - 2 "LoadCheck" - 3 "OAV2" -} -value0 { - 0 "Out" - 1 "In" - 2 "LoadCheck" - 3 "OAV2" -} -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 95 -y 110 -w 25 -h 25 -fgColor index 14 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:10" -releaseValue "#2P" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 145 -y 110 -w 25 -h 76 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:60" -releaseValue "#1P" -offLabel "+3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 120 -y 135 -w 25 -h 25 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:10" -releaseValue "#1P" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 45 -y 110 -w 25 -h 76 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-60" -releaseValue "#1P" -offLabel "-3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 70 -y 135 -w 25 -h 25 -fgColor index 14 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-10" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 70 -y 85 -w 76 -h 25 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:60" -releaseValue "#2P" -offLabel "-3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 70 -y 185 -w 76 -h 25 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-60" -releaseValue "#2P" -offLabel "+3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 95 -y 160 -w 25 -h 25 -fgColor index 2 -onColor index 21 -offColor index 16 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-10" -releaseValue "#2P" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 370 -y 165 -w 40 -h 40 -fgColor index 2 -onColor index 24 -offColor index 19 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-31750" -releaseValue "#2P" -onLabel "Y+Y" -offLabel "+Y+" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 410 -y 125 -w 40 -h 40 -fgColor index 2 -onColor index 24 -offColor index 19 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:31750" -releaseValue "#1P" -onLabel "X+X" -offLabel "+X+" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 330 -y 125 -w 40 -h 40 -fgColor index 2 -onColor index 24 -offColor index 19 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-31750" -releaseValue "#1P" -onLabel "X-X" -offLabel "-X-" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 370 -y 85 -w 40 -h 40 -fgColor index 2 -onColor index 24 -offColor index 19 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:31750" -releaseValue "#2P" -onLabel "Y-Y" -offLabel "-Y-" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 290 -y 110 -w 25 -h 76 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:3750" -releaseValue "#1P" -offLabel "+3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 265 -y 135 -w 25 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:1250" -releaseValue "#1P" -offLabel "+1" -3d -font "helvetica-medium-r-8.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 190 -y 110 -w 25 -h 76 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-3750" -releaseValue "#1P" -offLabel "-3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 215 -y 135 -w 25 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-1250" -releaseValue "#1P" -offLabel "-1" -3d -font "arial-medium-r-16.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 215 -y 85 -w 76 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:3750" -releaseValue "#2P" -offLabel "-3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 240 -y 110 -w 25 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:1250" -releaseValue "#2P" -offLabel "-1" -3d -font "helvetica-medium-r-8.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 215 -y 185 -w 76 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-3750" -releaseValue "#2P" -offLabel "+3" -3d -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 240 -y 160 -w 25 -h 25 -fgColor index 2 -onColor index 22 -offColor index 17 -topShadowColor index 7 -botShadowColor index 7 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-1250" -releaseValue "#2P" -offLabel "+1" -3d -font "helvetica-medium-r-8.0" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 515 -w 54 -h 50 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 410 -w 54 -h 50 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 85 -y 400 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 115 -y 420 -w 13 -h 27 -font "helvetica-medium-r-24.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "0" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 605 -w 54 -h 50 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 85 -y 655 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 115 -y 615 -w 13 -h 27 -font "helvetica-medium-r-24.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "2" -} -autoSize -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 85 -y 710 -w 75 -h 70 - -beginGroup - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 96 -y 720 -w 54 -h 50 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 85 -y 710 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 85 -y 770 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 149 -y 770 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 149 -y 710 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -endGroup - -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 410 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 140 -y 515 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 645 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 720 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 135 -y 720 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 95 -y 760 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 135 -y 760 -w 11 -h 10 -lineColor index 25 -fill -fillColor index 35 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 150 -y 505 -w 11 -h 10 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 120 -y 525 -w 13 -h 27 -font "helvetica-medium-r-24.0" -fgColor index 2 -bgColor index 0 -useDisplayBg -value { - "1" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 70 -y 495 -w 97 -h 21 -font "arial-medium-r-18.0" -fgColor index 35 -bgColor index 13 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -value { - " Fid1 A8_tt " -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 65 -y 655 -w 103 -h 21 -font "arial-medium-r-18.0" -fgColor index 35 -bgColor index 13 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -value { - " Fid2 H1_ta " -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 75 -y 340 -w 111 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Alignment type" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 645 -w 178 -h 35 -fgColor index 2 -bgColor index 27 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-medium-r-18.0" -buttonLabel "Set Fiducial 2" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run fiducial '\{\"point\":\"2\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 605 -w 178 -h 35 -fgColor index 14 -bgColor index 48 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-medium-r-18.0" -buttonLabel "Goto Fiducial 2" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto '\{\"place\":\"f2\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 425 -w 178 -h 35 -fgColor index 2 -bgColor index 27 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-medium-r-18.0" -buttonLabel "Set Fiducial 0" -numCmds 1 -command { - 0 "caput ME14E-MO-CHIP-01:PMAC_STRING \\#1hmz\\#2hmz\\#3hmz" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 535 -w 178 -h 35 -fgColor index 2 -bgColor index 27 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-medium-r-18.0" -buttonLabel "Set Fiducial 1" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run fiducial '\{\"point\":\"1\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 495 -w 178 -h 35 -fgColor index 14 -bgColor index 48 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-medium-r-18.0" -buttonLabel "Goto Fiducial 1" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto '\{\"place\":\"f1\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 60 -y 390 -w 122 -h 21 -font "arial-medium-r-18.0" -fgColor index 35 -bgColor index 13 -visPv "ME14E-MO-IOC-01:GP1" -visMin "0" -visMax "2" -value { - " Home A1_aa " -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 350 -y 830 -w 60 -h 18 -controlPv "BL24I-EA-PILAT-01:cam1:DetectorState_RBV" -font "arial-medium-r-16.0" -fgColor index 16 -fgAlarm -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 305 -y 830 -w 35 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "P6M" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 495 -w 102 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Transmission" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 645 -y 495 -w 125 -h 25 -controlPv "BL24I-OP-ATTN-01:T2A:SETVAL1" -fgColor index 25 -fgAlarm -bgColor index 3 -fill -font "helvetica-medium-r-18.0" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 920 -y 830 -w 55 -h 20 -controlPv "BL24I-OP-ATTN-01:MATCH" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 515 -w 100 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "(fraction not %)" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 700 -y 830 -w 195 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Current filter transmission" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 605 -y 595 -w 165 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "ME14E-MO-IOC-01:GP1" -font "arial-medium-r-18.0" -numItems 5 -symbolTag { - 0 "Oxford" - 1 "Oxford Inner" - 2 "Custom" - 3 "Minichip" - 4 "MISP" -} -symbol0 { - 0 "OX" - 1 "B1" - 2 "Cu" - 3 "Mini" - 4 "MI" -} -value0 { - 0 "oxford" - 1 "Oxford Inner" - 2 "Custom" - 3 "Minichip" - 4 "MISP" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 515 -y 600 -w 75 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Chip Type" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 762 -y 860 -w 133 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Expt hutch shutter" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 804 -y 890 -w 91 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Fast Shutter" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 900 -y 890 -w 75 -h 18 -controlPv "BL24I-EA-SHTR-01:STA" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 2 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 900 -y 860 -w 75 -h 18 -controlPv "BL24I-PS-SHTR-01:STA" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 2 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 475 -y 45 -w 180 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Preset Positions" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 850 -y 655 -w 101 -h 21 -font "helvetica-medium-r-18.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -visMin "1" -visMax "2" -value { - "Pump probe" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 625 -w 175 -h 90 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP4" -visInvert -visMin "1" -visMax "10" -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 810 -y 600 -w 175 -h 115 -lineColor index 14 -fillColor index 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 850 -y 610 -w 101 -h 21 -font "helvetica-medium-r-18.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -visMin "1" -visMax "2" -value { - "Pump probe" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 820 -y 915 -w 176 -h 18 -font "arial-medium-i-16.0" -fontAlign "center" -fgColor index 11 -bgColor index 0 -useDisplayBg -value { - "gui version: python3 1.0" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 550 -y 245 -w 90 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "BL24I-EA-OAV-01:FZOOM:MP:SELECT" -font "arial-medium-r-18.0" -numItems 8 -symbolTag { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -symbol0 { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -value0 { - 0 "1.0" - 1 "2.0" - 2 "3.0" - 3 "4.0" - 4 "5.0" - 5 "6.0" - 6 "7.0" - 7 "8.0" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 495 -y 250 -w 44 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Zoom" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 645 -y 245 -w 50 -h 30 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-DI-OAV-01:CAM:GainAuto" -pressValue "Once" -onLabel "Gain" -offLabel "Gain" -3d -font "arial-medium-r-16.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 475 -y 180 -w 141 -h 27 -font "arial-medium-r-24.0" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Visualisation" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 645 -y 210 -w 60 -h 30 -fgColor index 43 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -font "arial-bold-r-14.0" -buttonLabel "Viewer" -numCmds 1 -command { - 0 "unset http_proxy; ffmpegViewer $([ \"$(/sbin/lspci | grep 'VGA.*Matrox.*M91XX.*')\" != \"\" ] && echo -f) `caget -t -S BL24I-DI-OAV-01:MJPG:MJPG_URL_RBV` BL24I-DI-OAV-01:MJPG:" -} -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 595 -y 345 -w 280 -h 20 -controlPv "ME14E-MO-IOC-01:GP100" -font "arial-medium-r-16.0" -fgColor index 25 -bgColor index 7 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 245 -y 340 -w 165 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "ME14E-MO-IOC-01:GP1" -font "arial-medium-r-18.0" -numItems 4 -symbolTag { - 0 "Oxford" - 1 "Oxford Inner" - 2 "Custom" - 3 "Minichip" -} -symbol0 { - 0 "OX" - 1 "B1" - 2 "Cu" - 3 "Mini" -} -value0 { - 0 "oxford" - 1 "Oxford Inner" - 2 "Custom" - 3 "Minichip" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 305 -y 855 -w 35 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "E9M" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 350 -y 855 -w 60 -h 18 -controlPv "BL24I-EA-EIGER-01:CAM:DetectorState_RBV" -font "arial-medium-r-16.0" -fgColor index 16 -fgAlarm -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 350 -y 880 -w 60 -h 18 -controlPv "ME14E-MO-IOC-01:GP101" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 305 -y 880 -w 32 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "DET" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 550 -y 280 -w 110 -h 30 -fgColor index 43 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -font "arial-bold-r-14.0" -buttonLabel "Move on Click" -numCmds 1 -command { - 0 "python SCRIPTS_LOCATION/fixed_target/i24ssx_moveonclick.py" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 230 -y 382 -w 178 -h 35 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto '\{\"place\":\"zero\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 245 -y 390 -w 145 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Move chip to origin" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 475 -y 145 -w 130 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run moveto_preset '\{\"place\":\"microdrop_position\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 480 -y 150 -w 120 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Microdrop align" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 610 -y 145 -w 100 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "edm -x EDM_LOCATION/microdrop_alignment.edl" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 620 -y 150 -w 78 -h 18 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Microdrop" -} -autoSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 465 -y 905 -w 76 -h 29 -fgColor index 3 -bgColor index 6 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -buttonLabel "Stages" -numPvs 4 -numDsps 1 -displayFileName { - 0 "/dls_sw/work/R3.14.12.3/ioc/ME14E/BL/data/ME14E-motors.edl" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 465 -y 883 -w 97 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Zebra Status" -} -autoSize -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 580 -y 880 -w 37 -h 20 -controlPv "BL24I-EA-ZEBRA-01:PC_ARM_OUT" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Byte) -object ByteClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 615 -y 880 -w 37 -h 20 -controlPv "BL24I-EA-ZEBRA-01:ARRAY_ACQ" -lineColor index 14 -onColor index 15 -offColor index 19 -numBits 1 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 655 -y 880 -w 50 -h 20 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-ZEBRA-01:SYS_RESET.PROC" -pressValue "1" -onLabel "Reset" -offLabel "Reset" -3d -font "arial-medium-r-14.0" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -major 4 -minor 4 -release 0 -x 695 -y 905 -w 105 -h 30 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-16.0" -buttonLabel "Detector" -numPvs 4 -numDsps 1 -displayFileName { - 0 "EDM_LOCATION/DetStage.edl" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 800 -y 730 -w 135 -h 50 -fgColor index 0 -bgColor index 20 -topShadowColor index 0 -botShadowColor index 14 -font "helvetica-bold-r-24.0" -buttonLabel "Abort" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller abort" -} -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl deleted file mode 100644 index 088a6860e..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +++ /dev/null @@ -1,4960 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 559 -y 418 -w 1845 -h 790 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 16 -ctlFgColor2 index 0 -ctlBgColor1 index 10 -ctlBgColor2 index 14 -topShadowColor index 1 -botShadowColor index 11 -title "Hardware - $(dom)" -showGrid -snapToGrid -gridSize 5 -endScreenProperties - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 20 -y 0 -w 1815 -h 30 - -beginGroup - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 20 -y 0 -w 1796 -h 30 -lineColor index 3 -fill -fillColor index 3 -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 20 -y 3 -w 1796 -h 24 -lineColor index 11 -fillColor index 0 -numPoints 3 -xPoints { - 0 20 - 1 1816 - 2 1816 -} -yPoints { - 0 27 - 1 27 - 2 3 -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 20 -y 3 -w 1796 -h 24 -font "arial-bold-r-16.0" -fontAlign "center" -fgColor index 14 -bgColor index 48 -value { - "GENERAL PURPOSE PV's" -} -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 20 -y 3 -w 1796 -h 24 -lineColor index 1 -fillColor index 0 -numPoints 3 -xPoints { - 0 20 - 1 20 - 2 1816 -} -yPoints { - 0 27 - 1 3 - 2 3 -} -endObjectProperties - -endGroup - -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 0 -y 0 -w 50 -h 31 - -beginGroup - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 2 -y 2 -w 48 -h 29 -lineColor index 11 -fillColor index 63 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 0 -y 0 -w 48 -h 29 -lineColor index 1 -fillColor index 63 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 2 -y 2 -w 47 -h 27 -lineColor index 49 -fill -fillColor index 48 -lineWidth 3 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 12 -y 6 -w 4 -h 3 -lineColor index 1 -fill -fillColor index 0 -lineWidth 2 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 0 -y 0 -w 50 -h 30 -font "arial-bold-r-14.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "$(dom)" -} -endObjectProperties - -endGroup - -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 15 -y 55 -w 1815 -h 680 -lineColor index 14 -fill -fillColor index 5 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 15 -y 50 -w 165 -h 15 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 8 -value { - " General Purpose PV's" -} -border -endObjectProperties - -# (Exit Button) -object activeExitButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 1735 -y 750 -w 95 -h 25 -fgColor index 46 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -label "EXIT" -font "arial-medium-r-18.0" -3d -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP1" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 95 -w 29 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP1:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP2" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 125 -w 29 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP2:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP3" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 155 -w 29 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP3:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP4" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 185 -w 29 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP4:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP5" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 215 -w 28 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP5:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP6" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 245 -w 30 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP6:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP7" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 275 -w 30 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP7:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP8" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 305 -w 30 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP8:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP9" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 335 -w 30 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP9:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP10" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 365 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP10:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP11" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 395 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP11:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP12" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 425 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP12:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP13" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 455 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP13:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP14" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 485 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP14:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP15" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 515 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP15:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP16" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 545 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP16:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP17" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 575 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP17:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP18" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 605 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP18:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP19" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 635 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP19:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 65 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP20" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 665 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP20:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP21" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 95 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP21:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP41" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 95 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP41:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP61" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 95 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP61:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP81" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 95 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP81:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP22" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 125 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP22:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP23" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 155 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP23:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP24" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 185 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP24:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP25" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 215 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP25:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP26" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 245 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP26:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP27" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 275 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP27:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP28" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 305 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP28:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP29" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 335 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP29:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP30" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 365 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP30:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP31" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 395 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP31:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP32" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 425 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP32:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP33" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 455 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP33:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP34" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 485 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP34:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP35" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 515 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP35:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP36" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 545 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP36:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP37" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 575 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP37:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP38" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 605 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP38:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP39" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 635 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP39:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP40" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 325 -y 665 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP40:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP42" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 125 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP42:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP43" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 155 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP43:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP44" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 185 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP44:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP45" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 215 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP45:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP46" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 245 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP46:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP47" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 275 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP47:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP48" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 305 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP48:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP49" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 335 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP49:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP50" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 365 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP50:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP51" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 395 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP51:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP52" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 425 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP52:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP53" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 455 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP53:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP54" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 485 -w 35 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP54:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP55" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 515 -w 34 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP55:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP56" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 545 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP56:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP57" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 575 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP57:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP58" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 605 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP58:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP59" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 635 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP59:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 665 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP60" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 625 -y 665 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP60:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP62" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 125 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP62:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP63" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 155 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP63:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP64" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 185 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP64:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP65" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 215 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP65:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP66" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 245 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP66:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP67" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 275 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP67:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP68" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 305 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP68:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP69" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 335 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP69:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP70" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 365 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP70:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP71" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 395 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP71:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP72" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 425 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP72:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP73" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 455 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP73:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP74" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 485 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP74:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP75" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 515 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP75:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP76" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 545 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP76:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP77" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 575 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP77:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP78" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 605 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP78:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP79" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 635 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP79:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 965 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP80" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 925 -y 665 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP80:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP82" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 125 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP82:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP83" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 155 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP83:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP84" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 185 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP84:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP85" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 215 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP85:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP86" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 245 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP86:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP87" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 275 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP87:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP88" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 305 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP88:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP89" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 335 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP89:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP90" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 365 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP90:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP91" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 395 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP91:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP92" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 425 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP92:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP93" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 455 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP93:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP94" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 485 -w 37 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP94:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP95" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 515 -w 36 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP95:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP96" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 545 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP96:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP97" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 575 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP97:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP98" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 605 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP98:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP99" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1225 -y 635 -w 38 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP99:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1265 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP100" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1217 -y 665 -w 45 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP100:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 85 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP101" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 95 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP101:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 115 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP102" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 125 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP102:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 145 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP103" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 155 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP103:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 175 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP104" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 185 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP104:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 205 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP105" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 215 -w 43 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP105:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 235 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP106" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 245 -w 45 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP106:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 265 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP107" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 275 -w 45 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP107:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 295 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP108" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 305 -w 45 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP108:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 325 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP109" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 335 -w 45 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP109:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 355 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP110" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 365 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP110:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 385 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP111" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 395 -w 43 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP111:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 415 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP112" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 425 -w 43 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP112:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 445 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP113" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 455 -w 43 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP113:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 475 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP114" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 485 -w 43 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP114:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 505 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP115" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 515 -w 42 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP115:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 535 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP116" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 545 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP116:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 565 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP117" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 575 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP117:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 595 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP118" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 605 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP118:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 625 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP119" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 635 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP119:" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 1570 -y 655 -w 250 -h 25 -controlPv "ME14E-MO-IOC-01:GP120" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -lineWidth 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1525 -y 665 -w 44 -h 13 -font "arial-medium-r-12.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "GP120:" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl deleted file mode 100644 index f055e6f42..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +++ /dev/null @@ -1,2667 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 3168 -y 118 -w 650 -h 400 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 7 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 9 -botShadowColor index 9 -title "Mapping Lite" -endScreenProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 128 -y 92 -w 131 -h 37 -fgColor index 0 -bgColor index 23 -topShadowColor index 1 -botShadowColor index 11 -font "helvetica-medium-r-14.0" -buttonLabel "Load Map File" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_lite_map" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2044 -y 447 -w 5 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "I" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2002 -y 449 -w 13 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "H" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1250 -y 477 -w 2 -h 0 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP65" -pressValue "1" -releaseValue "0" -onLabel "55" -offLabel "55" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP65" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP66" -pressValue "1" -releaseValue "0" -onLabel "56" -offLabel "56" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP66" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP67" -pressValue "1" -releaseValue "0" -onLabel "57" -offLabel "57" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP67" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 40 -y 290 -w 194 -h 40 -fgColor index 0 -bgColor index 23 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Save Screen Map" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run save_screen_map" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 12 -y 337 -w 244 -h 53 -fgColor index 13 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -buttonLabel "Upload Parameters" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run upload_parameters '\{\"chipid\":\"oxford\"\}'" -} -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP46" -pressValue "1" -releaseValue "0" -onLabel "36" -offLabel "36" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP46" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP45" -pressValue "1" -releaseValue "0" -onLabel "35" -offLabel "35" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP45" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP44" -pressValue "1" -releaseValue "0" -onLabel "34" -offLabel "34" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP44" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP47" -pressValue "1" -releaseValue "0" -onLabel "37" -offLabel "37" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP47" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP48" -pressValue "1" -releaseValue "0" -onLabel "38" -offLabel "38" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP48" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP49" -pressValue "1" -releaseValue "0" -onLabel "39" -offLabel "39" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP49" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP63" -pressValue "1" -releaseValue "0" -onLabel "53" -offLabel "53" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP63" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP62" -pressValue "1" -releaseValue "0" -onLabel "52" -offLabel "52" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP62" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP64" -pressValue "1" -releaseValue "0" -onLabel "54" -offLabel "54" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP64" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP11" -pressValue "1" -releaseValue "0" -onLabel "01" -offLabel "01" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP11" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP12" -pressValue "1" -releaseValue "0" -onLabel "02" -offLabel "02" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP12" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP13" -pressValue "1" -releaseValue "0" -onLabel "03" -offLabel "03" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP13" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP28" -pressValue "1" -releaseValue "0" -onLabel "18" -offLabel "18" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP28" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP27" -pressValue "1" -releaseValue "0" -onLabel "17" -offLabel "17" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP27" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP26" -pressValue "1" -releaseValue "0" -onLabel "16" -offLabel "16" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP26" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP30" -pressValue "1" -releaseValue "0" -onLabel "20" -offLabel "20" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP30" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP31" -pressValue "1" -releaseValue "0" -onLabel "21" -offLabel "21" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP31" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP29" -pressValue "1" -releaseValue "0" -onLabel "19" -offLabel "19" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP29" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP68" -pressValue "1" -releaseValue "0" -onLabel "58" -offLabel "58" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP68" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP69" -pressValue "1" -releaseValue "0" -onLabel "59" -offLabel "59" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP69" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP70" -pressValue "1" -releaseValue "0" -onLabel "60" -offLabel "60" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP70" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP43" -pressValue "1" -releaseValue "0" -onLabel "33" -offLabel "33" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP43" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP42" -pressValue "1" -releaseValue "0" -onLabel "32" -offLabel "32" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP42" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP41" -pressValue "1" -releaseValue "0" -onLabel "31" -offLabel "31" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP41" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 465 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP50" -pressValue "1" -releaseValue "0" -onLabel "40" -offLabel "40" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP50" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP51" -pressValue "1" -releaseValue "0" -onLabel "41" -offLabel "41" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP51" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP52" -pressValue "1" -releaseValue "0" -onLabel "42" -offLabel "42" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP52" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP60" -pressValue "1" -releaseValue "0" -onLabel "50" -offLabel "50" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP60" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP59" -pressValue "1" -releaseValue "0" -onLabel "49" -offLabel "49" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP59" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 553 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP61" -pressValue "1" -releaseValue "0" -onLabel "51" -offLabel "51" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP61" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP14" -pressValue "1" -releaseValue "0" -onLabel "04" -offLabel "04" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP14" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP15" -pressValue "1" -releaseValue "0" -onLabel "05" -offLabel "05" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP15" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP16" -pressValue "1" -releaseValue "0" -onLabel "06" -offLabel "06" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP16" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP25" -pressValue "1" -releaseValue "0" -onLabel "15" -offLabel "15" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP25" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP24" -pressValue "1" -releaseValue "0" -onLabel "14" -offLabel "14" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP24" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP23" -pressValue "1" -releaseValue "0" -onLabel "13" -offLabel "13" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP23" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP33" -pressValue "1" -releaseValue "0" -onLabel "23" -offLabel "23" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP33" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP34" -pressValue "1" -releaseValue "0" -onLabel "24" -offLabel "24" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP34" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 377 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP32" -pressValue "1" -releaseValue "0" -onLabel "22" -offLabel "22" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP32" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP71" -pressValue "1" -releaseValue "0" -onLabel "61" -offLabel "61" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP71" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP72" -pressValue "1" -releaseValue "0" -onLabel "62" -offLabel "62" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP72" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP73" -pressValue "1" -releaseValue "0" -onLabel "63" -offLabel "63" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP73" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 598 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP74" -pressValue "1" -releaseValue "0" -onLabel "64" -offLabel "64" -toggle -3d -font "arial-medium-r-18.0" -visMin "1" -visMax "0" -colorPv "ME14E-MO-IOC-01:GP74" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP40" -pressValue "1" -releaseValue "0" -onLabel "30" -offLabel "30" -toggle -3d -font "arial-medium-r-18.0" -visMin "1" -visMax "0" -colorPv "ME14E-MO-IOC-01:GP40" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP39" -pressValue "1" -releaseValue "0" -onLabel "29" -offLabel "29" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP39" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP38" -pressValue "1" -releaseValue "0" -onLabel "28" -offLabel "28" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP38" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP53" -pressValue "1" -releaseValue "0" -onLabel "43" -offLabel "43" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP53" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP54" -pressValue "1" -releaseValue "0" -onLabel "44" -offLabel "44" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP54" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 174 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP55" -pressValue "1" -releaseValue "0" -onLabel "45" -offLabel "45" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP55" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 88 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP57" -pressValue "1" -releaseValue "0" -onLabel "47" -offLabel "47" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP57" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 45 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP58" -pressValue "1" -releaseValue "0" -onLabel "48" -offLabel "48" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP58" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 304 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP17" -pressValue "1" -releaseValue "0" -onLabel "07" -offLabel "07" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP17" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 288 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP18" -pressValue "1" -releaseValue "0" -onLabel "08" -offLabel "08" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP18" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP19" -pressValue "1" -releaseValue "0" -onLabel "09" -offLabel "09" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP19" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 217 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP22" -pressValue "1" -releaseValue "0" -onLabel "12" -offLabel "12" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP22" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP21" -pressValue "1" -releaseValue "0" -onLabel "11" -offLabel "11" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP21" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 333 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP20" -pressValue "1" -releaseValue "0" -onLabel "10" -offLabel "10" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP20" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 303 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP36" -pressValue "1" -releaseValue "0" -onLabel "26" -offLabel "26" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP36" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 260 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP37" -pressValue "1" -releaseValue "0" -onLabel "27" -offLabel "27" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP37" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 421 -y 347 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP35" -pressValue "1" -releaseValue "0" -onLabel "25" -offLabel "25" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP35" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 299 -y 10 -w 14 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "1" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 341 -y 10 -w 14 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "2" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 388 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "3" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 430 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "4" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 475 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "5" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 517 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "6" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 564 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "7" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 606 -y 10 -w 13 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "8" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 51 -w 16 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "A" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 92 -w 17 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "B" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 136 -w 17 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "C" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 177 -w 18 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "D" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 348 -w 18 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "H" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 307 -w 19 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "G" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 263 -w 15 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "F" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 267 -y 222 -w 16 -h 27 -font "arial-medium-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "E" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 7 -y 96 -w 117 -h 30 -controlPv "ME14E-MO-IOC-01:GP5" -font "arial-medium-r-18.0" -fontAlign "right" -fgColor index 25 -bgColor index 6 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 136 -y 164 -w 73 -h 35 -fgColor index 14 -bgColor index 5 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"clear\"\}'" -} -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 56 -y 165 -w 74 -h 35 -fgColor index 14 -bgColor index 20 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"x88\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 143 -y 168 -w 50 -h 23 -font "arial-medium-r-20.0" -fgColor index 0 -bgColor index 0 -useDisplayBg -value { - "All off" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 64 -y 169 -w 51 -h 23 -font "arial-medium-r-20.0" -fgColor index 0 -bgColor index 0 -useDisplayBg -value { - "All on" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 508 -y 131 -w 40 -h 40 -fgColor index 14 -onColor index 84 -offColor index 84 -topShadowColor index 9 -botShadowColor index 9 -controlPv "ME14E-MO-IOC-01:GP56" -pressValue "1" -releaseValue "0" -onLabel "46" -offLabel "46" -toggle -3d -font "arial-medium-r-18.0" -colorPv "ME14E-MO-IOC-01:GP56" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 75 -y 216 -w 59 -h 59 -fgColor index 14 -bgColor index 5 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"x66\"\}'" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 82 -y 224 -w 44 -h 44 -lineColor index 20 -fill -fillColor index 20 -lineWidth 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 88 -y 235 -w 29 -h 21 -font "helvetica-bold-r-18.0" -fontAlign "center" -fgColor index 0 -bgColor index 0 -useDisplayBg -value { - "6x6" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 9 -y 215 -w 59 -h 59 -fgColor index 14 -bgColor index 5 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"x44\"\}'" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 21 -y 226 -w 34 -h 36 -lineColor index 20 -fill -fillColor index 20 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 25 -y 235 -w 24 -h 16 -font "arial-bold-r-14.0" -fontAlign "center" -fgColor index 0 -bgColor index 0 -useDisplayBg -value { - "4x4" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 288 -y 43 -w 360 -h 351 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 21 -y 40 -w 214 -h 48 -fgColor index 14 -bgColor index 48 -topShadowColor index 1 -botShadowColor index 9 -font "helvetica-medium-r-18.0" -buttonLabel "Define Chip In PMAC" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run define_current_chip '\{\"chipid\":\"oxford\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 42 -y 5 -w 176 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Mapping Lite" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 287 -y 43 -w 361 -h 350 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 294 -y 161 -w 306 -h 81 -font "helvetica-bold-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -value { - "Chip type MUST be set to " - "Oxford " - "for gui to be active" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 294 -y 161 -w 306 -h 81 -font "helvetica-bold-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -value { - "Chip type MUST be set to " - "Oxford " - "for gui to be active" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 288 -y 43 -w 360 -h 351 -lineColor index 7 -fill -fillColor index 7 -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 294 -y 161 -w 306 -h 81 -font "helvetica-bold-r-24.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP1" -visMin "3" -visMax "4" -value { - "Chip type MUST be set to " - "Oxford " - "for gui to be active" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 140 -y 233 -w 59 -h 42 -fgColor index 14 -bgColor index 5 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"half1\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 93 -y 135 -w 75 -h 23 -font "arial-bold-r-20.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Presets" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 144 -y 237 -w 28 -h 34 -lineColor index 20 -fill -fillColor index 20 -lineWidth 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 160 -y 212 -w 76 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 0 -bgColor index 0 -useDisplayBg -value { - "Half Chip" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 202 -y 233 -w 59 -h 42 -fgColor index 14 -bgColor index 5 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run load_stock_map '\{\"map_choice\":\"half2\"\}'" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 227 -y 237 -w 28 -h 34 -lineColor index 20 -fill -fillColor index 20 -lineWidth 0 -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl deleted file mode 100644 index cd82a7ad7..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +++ /dev/null @@ -1,103 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 535 -y 134 -w 500 -h 150 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -endScreenProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 20 -y 31 -w 153 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "PMAC Command" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 188 -y 17 -w 178 -h 43 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-18.0" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 188 -y 88 -w 198 -h 23 -controlPv "ME14E-MO-CHIP-01:SEND_STRING.AINP" -font "arial-medium-r-18.0" -fgColor index 16 -bgColor index 14 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 17 -y 86 -w 145 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "PMAC Response" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl deleted file mode 100644 index 1bfafdf6c..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +++ /dev/null @@ -1,108 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 91 -y 362 -w 500 -h 150 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -endScreenProperties - -# (Choice Button) -object activeChoiceButtonClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 172 -y 23 -w 196 -h 40 -fgColor index 14 -bgColor index 3 -selectColor index 15 -inconsistentColor index 14 -topShadowColor index 0 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:SHUTTER_CTRL" -indicatorPv "ME14E-MO-CHIP-01:SHUTTER_STATE_RBV" -font "arial-medium-r-18.0" -orientation "horizontal" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 175 -y 95 -w 141 -h 23 -controlPv "ME14E-MO-CHIP-01:SHUTTER_STATE_RBV" -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 20 -y 31 -w 134 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Shutter Control" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 21 -y 96 -w 115 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Shutter State" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl deleted file mode 100644 index f3c35e68f..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +++ /dev/null @@ -1,1083 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 410 -y 201 -w 640 -h 720 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 14 -ctlBgColor1 index 14 -ctlBgColor2 index 0 -topShadowColor index 0 -botShadowColor index 0 -endScreenProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 91 -y 540 -w 464 -h 144 -lineColor index 9 -fillColor index 14 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 91 -y 63 -w 461 -h 469 -lineColor index 14 -fill -fillColor index 7 -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 88 -y 253 -w 0 -h 0 -lineColor index 14 -fillColor index 14 -numPoints 1 -xPoints { - 0 88 -} -yPoints { - 0 253 -} -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 237 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:170" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 240 -y 266 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+X 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 267 -y 209 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:500" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 278 -y 216 -w 85 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 306 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-500" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 314 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 322 -y 463 -w 57 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 329 -y 471 -w 39 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "OUT" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 258 -y 463 -w 58 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#12J:-750" -releaseValue "#12P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 270 -y 465 -w 30 -h 34 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "IN" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 176 -y 578 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BL-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 4 -symbolTag { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -symbol0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -value0 { - 0 "Out" - 1 "In" - 2 "Diode" - 3 "OAV2" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 96 -y 584 -w 69 -h 19 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Backlight" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 176 -y 616 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-BS-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 6 -symbolTag { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -symbol0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -value0 { - 0 "CheckBeam" - 1 "Data Collection" - 2 "Data Collection Far" - 3 "Down and Out" - 4 "Rotatable" - 5 "Robot" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 93 -y 623 -w 77 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Beamstop" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 177 -y 651 -w 150 -h 30 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-AL-APTR-01:MP:SELECT" -font "arial-medium-r-16.0" -numItems 2 -symbolTag { - 0 "In" - 1 "Out" -} -symbol0 { - 0 "In" - 1 "Out" -} -value0 { - 0 "In" - 1 "Out" -} -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 97 -y 656 -w 74 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Apertures" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 374 -y 689 -w 176 -h 18 -font "arial-medium-i-16.0" -fontAlign "center" -fgColor index 11 -bgColor index 0 -useDisplayBg -value { - "gui version: python3 1.0" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 129 -y 18 -w 360 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "I24 - Microdrop alignment " -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 100 -y 540 -w 126 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Move equipment" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 193 -y 83 -w 265 -h 27 -font "arial-bold-r-24.0" -fgColor index 58 -bgColor index 0 -useDisplayBg -value { - "Align autodrop pipette" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 449 -y 641 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWR" -pressValue "1" -onLabel "-" -offLabel "-" -3d -font "arial-bold-r-24.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 362 -y 577 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.VAL" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 495 -y 641 -w 43 -h 25 -fgColor index 25 -onColor index 4 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-EA-DET-01:Z.TWF" -pressValue "1" -onLabel "+" -offLabel "+" -3d -font "arial-bold-r-16.0" -visMin "0" -visMax "1" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 374 -y 542 -w 149 -h 18 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Detector translation" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 418 -y 563 -w 53 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Demand" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 424 -y 616 -w 42 -h 16 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "Nudge" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 450 -y 583 -w 86 -h 18 -controlPv "BL24I-EA-DET-01:Z.RBV" -format "decimal" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -autoHeight -precision 4 -nullColor index 14 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 365 -y 636 -w 83 -h 30 -controlPv "BL24I-EA-DET-01:Z.TWV" -displayMode "decimal" -precision 4 -fgColor index 25 -bgColor index 3 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 213 -y 437 -w 204 -h 21 -font "arial-bold-r-18.0" -fgColor index 20 -bgColor index 14 -useDisplayBg -value { - "MOVE IT CAREFULLY! " -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 155 -y 472 -w 97 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "50 um step " -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 272 -y 505 -w 24 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "- Z" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 331 -y 503 -w 28 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+ Z" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 347 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 356 -w 82 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 20 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 391 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:-5000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 274 -y 400 -w 87 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-Y 100 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 267 -y 167 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:1000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 268 -y 125 -w 103 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#4J:5000" -releaseValue "#4P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 275 -y 175 -w 86 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 20 um" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 277 -y 132 -w 91 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+Y 100 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 141 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:850" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 144 -y 266 -w 81 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "+X 50 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 334 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-170" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 338 -y 266 -w 77 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-X 10 um" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 431 -y 258 -w 87 -h 37 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 1 -botShadowColor index 11 -controlPv "BL24I-MO-IOC-08:ASYN8.AOUT" -pressValue "#11J:-850" -releaseValue "#11P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 435 -y 266 -w 77 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 14 -useDisplayBg -value { - "-X 50 um" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/nudgechip.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/nudgechip.edl deleted file mode 100644 index 00430e9ec..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/nudgechip.edl +++ /dev/null @@ -1,1171 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 1223 -y 388 -w 450 -h 650 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 3 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 0 -botShadowColor index 14 -endScreenProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 9 -y 331 -w 128 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "PMAC Response" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 4 -y 299 -w 135 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "PMAC Command" -} -autoSize -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -major 10 -minor 0 -release 0 -x 143 -y 291 -w 166 -h 33 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -fgColor index 25 -fgAlarm -bgColor index 5 -fill -font "arial-medium-r-16.0" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 139 -y 331 -w 167 -h 21 -controlPv "ME14E-MO-CHIP-01:SEND_STRING.AINP" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 14 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 156 -y 10 -w 138 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Chip Alignment" -} -autoSize -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 162 -y 157 -w 15 -h 15 -lineColor index 14 -fill -fillColor index 16 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 362 -y 110 -w 50 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Focus" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 241 -y 66 -w 42 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Block" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 205 -y 101 -w 54 -h 18 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Window" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 193 -y 126 -w 32 -h 12 -font "arial-medium-r-10.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Nudge" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 342 -y 281 -w 87 -h 23 -controlPv "ME14E-MO-CHIP-01:X.RBV" -font "arial-medium-r-18.0" -fgColor index 25 -bgColor index 5 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 340 -y 256 -w 92 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Readbacks" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 321 -y 281 -w 13 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "X" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 322 -y 307 -w 13 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Y" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 344 -y 307 -w 87 -h 23 -controlPv "ME14E-MO-CHIP-01:Y.RBV" -font "arial-medium-r-18.0" -fgColor index 25 -bgColor index 5 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 322 -y 333 -w 11 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Z" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 343 -y 333 -w 87 -h 23 -controlPv "ME14E-MO-CHIP-01:Z.RBV" -font "arial-medium-r-18.0" -fgColor index 25 -bgColor index 5 -autoHeight -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 212 -y 150 -w 23 -h 29 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-2500" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 241 -y 139 -w 40 -h 50 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-25000" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 184 -y 152 -w 21 -h 24 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:-20" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 59 -y 139 -w 40 -h 50 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:25000" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 106 -y 150 -w 23 -h 29 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:2500" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 136 -y 152 -w 21 -h 24 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1J:20" -releaseValue "#1P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 144 -y 57 -w 50 -h 35 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:22000" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 155 -y 98 -w 28 -h 23 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:2500" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 159 -y 127 -w 21 -h 24 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:20" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 144 -y 236 -w 50 -h 35 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-22000" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 155 -y 208 -w 28 -h 23 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-2500" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 159 -y 178 -w 21 -h 24 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#2J:-20" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 68 -y 152 -w 19 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "-X" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 157 -y 242 -w 19 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "-Y" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 247 -y 153 -w 24 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "+X" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 158 -y 62 -w 24 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "+Y" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 392 -y 139 -w 40 -h 25 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:250" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 348 -y 139 -w 40 -h 25 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#3J:-250" -releaseValue "#2P" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 359 -y 142 -w 18 -h 18 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "IN" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 394 -y 142 -w 33 -h 18 -font "arial-medium-r-14.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "OUT" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 63 -y 469 -w 105 -h 25 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "#1hmz#2hmz#3hmz" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 67 -y 470 -w 94 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Set as home" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 103 -y 428 -w 25 -h 25 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 103 -y 428 -w 8 -h 8 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 98 -y 523 -w 25 -h 26 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 98 -y 542 -w 8 -h 7 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 131 -y 373 -w 200 -h 0 -lineColor index 14 -fillColor index 0 -numPoints 2 -xPoints { - 0 131 - 1 331 -} -yPoints { - 0 373 - 1 373 -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 119 -y 378 -w 224 -h 23 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Co-ordinate System Setup" -} -autoSize -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 41 -y 562 -w 140 -h 25 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "ver" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 45 -y 563 -w 124 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Set as fiducial 3" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 291 -y 428 -w 25 -h 26 -lineColor index 14 -fill -fillColor index 10 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 307 -y 428 -w 8 -h 7 -lineColor index 14 -fill -fillColor index 20 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 237 -y 468 -w 137 -h 25 -fgColor index 14 -onColor index 3 -offColor index 3 -topShadowColor index 3 -botShadowColor index 14 -controlPv "ME14E-MO-CHIP-01:PMAC_STRING" -pressValue "ver" -3d -font "arial-medium-r-18.0" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 241 -y 469 -w 124 -h 21 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Set as fiducial 2" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 79 -y 429 -w 12 -h 26 -font "arial-medium-r-20.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "1" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 266 -y 429 -w 12 -h 26 -font "arial-medium-r-20.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "2" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 79 -y 523 -w 12 -h 26 -font "arial-medium-r-20.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "3" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 268 -y 530 -w 141 -h 60 -fgColor index 14 -bgColor index 11 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "echo Hello Darren" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 275 -y 536 -w 122 -h 42 -font "arial-medium-r-16.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Press me and " - "look in terminal" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 272 -y 604 -w 119 -h 33 -fgColor index 14 -bgColor index 11 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "caget ME14E-MO-CHIP-01:X" -} -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl deleted file mode 100644 index b958090ff..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +++ /dev/null @@ -1,1743 +0,0 @@ -4 0 1 -beginScreenProperties -major 4 -minor 0 -release 1 -x 2970 -y 362 -w 900 -h 700 -font "arial-medium-r-18.0" -ctlFont "arial-medium-r-18.0" -btnFont "arial-medium-r-18.0" -fgColor index 14 -bgColor index 7 -textColor index 14 -ctlFgColor1 index 14 -ctlFgColor2 index 0 -ctlBgColor1 index 0 -ctlBgColor2 index 14 -topShadowColor index 9 -botShadowColor index 9 -title "Laser interface" -endScreenProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2044 -y 447 -w 5 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "I" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 2002 -y 449 -w 13 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "H" -} -autoSize -endObjectProperties - -# (Text w. Reg. Exp.) -object activeXRegTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 1250 -y 477 -w 2 -h 0 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 6 -y 333 -w 271 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Excite And Visit Again:" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 21 -y 430 -w 128 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "X-ray exposure" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 22 -y 467 -w 276 -h 42 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Based on requested dwell times" - "the delay times will be calculated" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 128 -y 518 -w 122 -h 37 -fgColor index 14 -bgColor index 49 -topShadowColor index 1 -botShadowColor index 11 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run pumpprobe_calc" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 152 -y 524 -w 79 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Calculate" -} -autoSize -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 155 -y 428 -w 75 -h 25 -controlPv "ME14E-MO-CHIP-01:expTime" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 422 -y 398 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP104" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 334 -y 400 -w 71 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Repeat1" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 334 -y 433 -w 72 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Repeat2" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 501 -y 400 -w 9 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 501 -y 433 -w 9 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 334 -y 465 -w 71 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Repeat3" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 334 -y 498 -w 71 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Repeat5" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 501 -y 465 -w 9 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 501 -y 498 -w 9 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 334 -y 529 -w 82 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Repeat10" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 501 -y 529 -w 9 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 548 -y 398 -w 49 -h 21 -font "arial-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Notes" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 557 -y 423 -w 308 -h 108 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "The repeat is the number of pairs" - "of lines in a repeat" - "Currently X-ray shutter always open" - "Timings assume apertures 125 um apart" - "Mapping lite will be used" - "Repeat3 misses some chip rows" -} -autoSize -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 542 -y 428 -w 10 -h 10 -lineColor index 12 -fill -fillColor index 12 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 542 -y 462 -w 10 -h 10 -lineColor index 12 -fill -fillColor index 12 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 542 -y 480 -w 10 -h 10 -lineColor index 12 -fill -fillColor index 12 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 542 -y 499 -w 10 -h 10 -lineColor index 12 -fill -fillColor index 12 -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 422 -y 431 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP105" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 422 -y 464 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP106" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 422 -y 495 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP107" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Text Monitor) -object activeXTextDspClass:noedit -beginObjectProperties -major 4 -minor 6 -release 0 -x 422 -y 526 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP108" -font "arial-medium-r-16.0" -fgColor index 16 -bgColor index 10 -limitsFromDb -nullColor index 0 -useHexPrefix -newPos -objType "monitors" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 19 -y 374 -w 122 -h 42 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser dwell at " - "each aperture" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 156 -y 382 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP103" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 542 -y 517 -w 10 -h 10 -lineColor index 12 -fill -fillColor index 12 -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 648 -y 611 -w 75 -h 35 -fgColor index 14 -bgColor index 22 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser1off\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 654 -y 620 -w 63 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "CLOSE" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 573 -y 611 -w 65 -h 35 -fgColor index 14 -bgColor index 17 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser1on\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 580 -y 620 -w 51 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "OPEN" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 433 -y 618 -w 124 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser 1 control" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 11 -y 594 -w 189 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Pre-illumination" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 283 -y 333 -w 68 -h 27 -font "arial-bold-i-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "EAVA" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 435 -y 661 -w 125 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser 2 control" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 141 -y 637 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP109" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 21 -y 639 -w 112 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser 2 dwell" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 412 -y 571 -w 179 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Shutter control" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 232 -y 634 -w 142 -h 36 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Wait time in s at" - "centre of city block" -} -autoSize -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 313 -y 365 -w 207 -h 191 -lineColor index 14 -fillColor index 0 -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 647 -y 654 -w 75 -h 35 -fgColor index 14 -bgColor index 22 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser2off\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 653 -y 663 -w 63 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "CLOSE" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 572 -y 654 -w 65 -h 35 -fgColor index 14 -bgColor index 17 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser2on\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 579 -y 663 -w 51 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "OPEN" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 214 -y 594 -w 90 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 38 -bgColor index 0 -useDisplayBg -visPv "ME14E-MO-IOC-01:GP109" -visMin "0.00001" -visMax "999" -value { - "ACTIVE" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 347 -y 368 -w 150 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Calculated delays" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 238 -y 383 -w 9 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 11 -y 56 -w 206 -h 27 -font "arial-bold-r-24.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Fast Pump Probe" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 20 -y 127 -w 98 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser Dwell" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 144 -y 124 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP103" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 226 -y 125 -w 9 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 273 -y 71 -w 135 -h 36 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Short 1: " - "pulse before XRD" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 206 -y 8 -w 428 -h 32 -font "arial-bold-r-28.0" -fontAlign "center" -fgColor index 12 -bgColor index 0 -useDisplayBg -value { - "Laser Excitation Control Centre" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 54 -y 661 -w 46 -h 18 -font "arial-bold-r-16.0" -fgColor index 34 -bgColor index 0 -useDisplayBg -value { - "BNC3" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 55 -y 187 -w 45 -h 18 -font "arial-bold-r-16.0" -fgColor index 34 -bgColor index 0 -useDisplayBg -value { - "BNC2" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 827 -y 657 -w 48 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "BNC3" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 824 -y 617 -w 49 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "BNC2" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 734 -y 610 -w 75 -h 35 -fgColor index 14 -bgColor index 30 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser1burn\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 746 -y 618 -w 51 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "BURN" -} -autoSize -endObjectProperties - -# (Shell Command) -object shellCmdClass -beginObjectProperties -major 4 -minor 3 -release 0 -x 735 -y 654 -w 75 -h 35 -fgColor index 14 -bgColor index 30 -topShadowColor index 0 -botShadowColor index 14 -font "arial-medium-r-18.0" -numCmds 1 -command { - 0 "blueapi -c CONFIG_LOCATION controller run laser_control '\{\"laser_setting\":\"laser2burn\"\}'" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 745 -y 660 -w 51 -h 21 -font "helvetica-medium-r-18.0" -fontAlign "center" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "BURN" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 20 -y 158 -w 100 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Laser Delay" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 226 -y 156 -w 9 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "s" -} -autoSize -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 6 -release 0 -x 144 -y 155 -w 75 -h 25 -controlPv "ME14E-MO-IOC-01:GP110" -font "helvetica-medium-r-18.0" -fgColor index 25 -bgColor index 3 -editable -autoHeight -motifWidget -limitsFromDb -nullColor index 0 -useKp -file -useHexPrefix -newPos -inputFocusUpdates -objType "controls" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 484 -y 71 -w 134 -h 36 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Short 2: " - "pulse during XRD" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 276 -y 255 -w 123 -h 36 -font "arial-medium-r-16.0" -fontAlign "center" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "X-ray shutter is " - "open throughout" -} -autoSize -endObjectProperties - -# (PNG Image) -object activePngClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 275 -y 111 -w 175 -h 139 -file "SCRIPTS_LOCATION/fixed_target/FT-gui-edm/short1-laser.png" -endObjectProperties - -# (PNG Image) -object activePngClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 486 -y 111 -w 172 -h 139 -file "SCRIPTS_LOCATION/fixed_target/FT-gui-edm/short2-laser.png" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 487 -y 254 -w 170 -h 54 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Ensure:" - "laser delay+ dwell " - "< total X-ray exposure" -} -autoSize -endObjectProperties - -# (Menu Mux) -object menuMuxClass -beginObjectProperties -major 4 -minor 1 -release 0 -x 164 -y 220 -w 96 -h 28 -fgColor index 14 -bgColor index 3 -topShadowColor index 1 -botShadowColor index 8 -controlPv "ME14E-MO-IOC-01:GP111" -font "arial-medium-r-18.0" -numItems 2 -symbolTag { - 0 "False" - 1 "True" -} -symbol0 { - 0 "NN" - 1 "ML" -} -value0 { - 0 "none" - 1 "True" -} -endObjectProperties - -# (PNG Image) -object activePngClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 695 -y 111 -w 175 -h 139 -file "SCRIPTS_LOCATION/fixed_target/FT-gui-edm/short1-laser.png" -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 690 -y 71 -w 173 -h 36 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Medium 1: " - "pulse long before XRD" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 13 -y 226 -w 135 -h 21 -font "arial-medium-r-18.0" -fgColor index 14 -bgColor index 0 -useDisplayBg -value { - "Checker Pattern" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 696 -y 277 -w 192 -h 54 -font "arial-medium-r-16.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "X-ray shutter closes" - "every position." - "User for delay >= 100ms" -} -autoSize -endObjectProperties - -# (Lines) -object activeLineClass -beginObjectProperties -major 4 -minor 0 -release 1 -x 696 -y 131 -w 160 -h 69 -lineColor index 38 -fillColor index 0 -lineWidth 2 -lineStyle "dash" -numPoints 7 -xPoints { - 0 696 - 1 703 - 2 777 - 3 791 - 4 813 - 5 829 - 6 856 -} -yPoints { - 0 133 - 1 200 - 2 200 - 3 131 - 4 131 - 5 199 - 6 199 -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 817 -y 123 -w 41 -h 13 -font "arial-medium-r-12.0" -fgColor index 38 -bgColor index 0 -useDisplayBg -value { - "SHTR1" -} -autoSize -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 1 -release 1 -x 696 -y 256 -w 40 -h 21 -font "arial-bold-i-18.0" -fgColor index 13 -bgColor index 0 -useDisplayBg -value { - "Beta" -} -autoSize -endObjectProperties - diff --git a/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/short1-laser.png b/src/mx_bluesky/I24/serial/fixed_target/FT-gui-edm/short1-laser.png deleted file mode 100644 index 4d1aeb29473d37084dc936be8f6a548139111566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9740 zcma)Cg`EoYB&&(E@=Vjj?w98q@*4|y1VgreE))% z4`Xb*ci-on>-yH&qEwY-UtkhrqM)F>fXYd!gZm0_i$+HUe_vM&YJt0_?vhYVbnp{^ zZW#$4W4Oraxuc+Pb^NgKZQ;X&h8Y1JXUw@+~v_?8-i#-yY)irxoPhK+uZ?js*3c-v-ZWa;C5S`P zSD*jylb`4|7M=(3%a1Ce=upb*6^7%v6L$$J+iBveMjkHHe+%H6xS_G@5#py<9aV|p z+`&3Nys$hCHJaNMB;yNC{bCxkhK@9tsib%3u#+XL+Rsc^c;F z@PRrcD>wze|0P6901Ng+H#^Z7O1)IA$ZAr-eOi+wuymmRZ6M!F#T9k6sHYUKGgl)g z=~Es1p3jJhUUmo~Gyi1;gSd7xu|=BPU&Al$qCygNO3_Ef`00A|$Ic`*b^{6~1*wH{ z1o1MhUd|~Ef}2F1;cCGc-k&fUY^YA`Vt zi}B*hErQ+>l*hX>PvTZr+er)~Nc)}e1f3qxs)p%8vm`~QN3 zO@>s;hsL;HnJ&GS&=$|b8{qryThcWUOI*WgSKzt3rUeNLUJhlD|Nd70sTrB&Xm3>h zOLi7aADx`6k{?uknPzkgZ@Sc;h05fP<-b|ZmnqU;?u=3$>)&2({m6p+s^eVr!&+#Y zXya?-q4-3kHzUg)4svS>Fa7k_ug$HLOXvOr}cz{ z_b{*Whp2TNg;sud1kPWrTvVi|F+Fv_W?Bh`PGtMFX?zT$*z#PObdvF~m~rO%Va06f zrEDC2ic18MF?v;=YOGR4+b+)L7(Pc4yV8ybqhv^2rLFF9Gea>$=~7>xkx5}?Ew%)% zsw%qA;*e4-2iF)>Wf#rE*q36a3v1jKk|+}@Um$_&Y@*Ki9Uq5yq4@ET5BFv?$2x|F z`SceX)mP}q)+x?dW`>$P@&1H$nTLWIiC7Ww3K4OmdZ)S~($`XIQqCNCd?}0!#b&!p z6fsfh%tWM)HpEi; z4Mgim)-tUhaW?vFy!6?FX#{+;RLMt@>+db>gHc38;=KJRM4Ao{W5sp2#+0Ie*X!HB z3BBwyDT$t4FPEBKyujE5*o_h6aXIR=2fhH2yeX-Hnes!tWP{Dradh{%u)pIgpO|tBZ%S2@{Mf5x&hy*j$DA}IX-Y$_A>9DMignrW zCX&j{^4|EDHcFC<6v(zEL7dDvI^0P*T z1u#dZ{vTO5FV`gP$f8>w3OKibrh^PE=4Ziowlr6Lbjap%QtW3>u+HmNyoPd>_`aC5 zeymO-a~ADok$0r;puu#XoMQb++;-@i=do8P=Twh~(U^10)1o^RpdFM$z6 z$7MaX$@oj2n!cD|-);MYP{^Z0qtOISV&U>D=dkpDEKhG_ro7;?ii6x^kSqFKxbBnv zN-dZk2_L$q=85(7E&Mr;xO#>;tX}|3~ek@WJ@*8ut4)P0}P+$w4;;3)n)VZFdoJ@o6T1_bO6|NIDMP6PzM# z(trJ-v&-_cv~smGRnk#QEa?5AVJ4q&6k+u%UR*0FDf5}%jZLVB(yfkvv+KL0yl)Ja zDO`*UrQN0@lBGyWV)!@pA~Pg&f#0bpxCEa+8+-JCh&@;axIRXxOczn)>Vu_{f$0Rt zHnw}~sKjnc@`#<-OJB}_R^#z)rSFrqPw$QIL~)qvP!XM4^M$DBJ%RgVUSw|MTv{xHXqpq392F9@g-_LpBADea z_ah)5>^j5(x=A0Iajj-w(lIdy)cx+c2sxi;l}#wLxP7R|;nOE1+med2+G!Ajx~^Lb zm-`mVIOD>@8B3Q&!r}g=i*&+E+4)tixhN(jJZf3RwA4ycMFfmhwpXY0C$nnbY!=80 z7jjpar|8_KU7bQH(KVeM{}cq>&upE^&_Kf&xzpb*KX41OWm^VXf6eG(0@wMd>>ObE z1X3x#iV#Wj5)!PF`!KTa+x(cM+QV^RV(~&=eKRGcx+Kvj%CmnPNFi;g&j0xoo@l5rZ4ER+q}DTnN^+IrXz3_BUOJR5UcJQqP--e!lM9 z(KY^WFF5+IpLNK8?_e|eiC5X9ua7+v8ATHetUgOB6tG1O3H-tZN-Y*7~U|^@%S$D=QH1J^``bI)(PU`&DOGp-pXnL8$c46FLD{Zoo+g zUFDXkVwKd-lS18^d=}?;YV^ms438g&e5rohkbvimSNZk32R(bpU>Y(>WRzMSkBDx! z`tJX>*XloT0Bl7)%Au3s-$gY~INYPk-jWp%r6klQ6+U<~V3ShNlm1i@zWC>tkXT{+ z?wX3A7}M4Z0;V0W1P#^B^LlqhtV>R=vBAAFbi}@rqum{5y0=)U{^{01cLpdjhtC?* zJ_Q9D#KZ3iZQ_f)`;!KSibZG|Z{~h1Lj3gFd#mwGXv3y|+g@O}YA`?qNWG z`Ckv%(tOTW*U(15-`}>&+}G2Ok#JieL-y{tvV6C3=4wwBY6E>fJ0z>DdJY%doR(ia zRTl>YWPCLel<#*M$WkAIUv~3MLcDBR)v$@kz?f+2#ch+a2g}FSNelS^EYmEE$N!qQC*6EF9?u!}RzbcMJc)76%kSAl zlWSEZn{dZQ13k`5TH7qbSN#GJ+ij9AVTwz=YN)=TabyX$bfPb|ATaXaePcm;*iacC z5k*ka*WXV>Mn+3))ZQXrC>Q7XMt)_D8xitYw4zCNs?FclVTG>xqeYb|V+NK!Rvm&zC`%(0KBl zfJ6pZwufaDMKufe+qcpV4$SPWN00T(c%3W+GL@CHgamo;m#t#e)(Fh3%F|wvJz^bl`r*_?C z^Q7V`DZ?hW^V{3ART&^Nt^uMH!^6WYEG#{q8Kbb}!_AX*BtL1)RMyWldb3p}1qEtu zZtepG2wdi!o*vQm_F&UCOeQZUH}`R-viIKvjfI3yQQm{sq=(<+c!+yfTyU`?)&xgv zq}3o9$~Fs!;<1l0UO96RT6%f$9(3YLt3^stLFc;_lB_~HDXTN=A@{z}6rW*hFzdIj zL6PdEQxFJ*X8*ljnYM+a4in$2Fm_Vn>1KR-X0CPP=U%^Ez+ zu&slGzHN{43(aZau5{-%qRZRTT!yRrKmr1S$~i~Zy0#qE$hkQ^76Juz{bf0tuAw0; z>ly(&3Z@xMjG9&r4UG(8U#F~e-%zc+HVL22|or33G_2z-cEQO60BJUc%hpPmlyUwcCgpO~A2 z%F4*z#unl^4;EBrNH*i@9k{e*9} zTVNs1(&*OG?zes6-*ES3Ud(@6tWICa)AKEuIPb&jrq9=Btx0`G#B0hHw50~efi#M( z4M9-~ZMqHf@I|MhA3yfE#d=;~W9Lq8g9eq#8^?{3($&>%tnl<~S@iJm;Naj0?p~o3 z5y>PI@=`T2f@_!35@Lbj4%Ru$pht9TYHL^fUpir-KIt_50zfM$By{YDfZ*d-y`Sej zIXwl-R$E^WI%8mPFsHaU>g2>N%V#yJ_XDjZQ8F^D)3jsVZG2(j^Zb5ceLZiIMi~R< z{r$a%x3`9giHfxJvvJ$64m0JPZ{PNo8?}HI@nq^Zl9`l50Ll`gUAitSb~A2M-%1g9^@fa$jE9%^ z-^kDWL~>NO+9ZOfr?q291teu;P>JE;+uL?*CT&CB?YBl=`@eg`p1*25K}fVAbIiP1waMX!5 zG&EG{x+aqq^x)gq*T?U*M<|+&BZ14nz|dh{#UUUtcy}kPT$Iq%B#=AK0Ok*>4URkV z5q6xfhlhndV>4_N2Mk`(dV)z19R}v^1{R~arDd+!bGQ4iEmT?ZU%JGO2*nY-LaCTR z_VhdrY^Ttz9hjV)%oZ@S**2pl#4>M~-`?Nvb!xDvnL9{L%}!5`rhzIdE3bM8S~NIT z%(Tp=ate_IPZp^F8kwzgc7*Z>;s0SjwkVKFo^f`=W! zNeurS6T>AWgan7;KK%&Znlb>Fp{5AB<77&NMMXu;URG-_nq5+vCGl}{Cv0X1k!LFR z&(0DmDJh+uoqfs99%Tm0k?Q0C%RO51KOF!4Ti(iw77d&98&HMz<=82|%M)*DwXL0< z)!8bGMng8hy?a!ukY|bVy;&muE-j0OZ2_sT=#|H&rg~SpBQQ`yKXsb{Ap*+}(hv($ zQ&Uq_SC_B_U5g3d4-wewCYLu}>A9;7h6*}?^YxUu!QbV-q+pQ%wws%q35ki#t*ueh zhh;#A0-SyR{F#HFKeE?6=i9g7r6prfS>uZ2xVV=zP{|}KCT8Zr(a~6c-evnQ9LIvB z*rGRE)Z{^TuJ!NdWt5a&G&n7qTUvgquC5-XG1g16v$Zwdoi1}+XndJ4*wfV|`6GVS zsSOE~WUj`Bh@5<5J=w&1G)u&=#S6~2-3T zE;@&(s50oDJzWM!Zc!1M1g<$UmXfN^?8`}iXYH8nLd*C~Wj)z~;@&e7V%g(GQ9Lt8t1&@wkK?+G;idr668=~UnJ zKxk+v&)c_EX5FZgIk;@e(Kk0YZ;3uNQh;%fZsvhw%d}heyl#BuLk|9=pZf@dgO9J) zV%eElfGz2ED{CU^{nZye0+h-Z-!1li}&%OajU0iqpj+?8tdj90e zlMDfO)ac%>gTb7{ zP^JfH0PU4B1FS0$0YVCj{=>_>DSIFj;AE6A^F0Yhc6JgwA_ z1TtqpU#iIjEYtCIz}KXtT7z`F)J#iCAquFX?WCSJ$C>x*e7+6;}qh_gh z@47!^o_fQA7f00dca-~`V`CNr_X2}-_(=;92r@OuT>X24J?^Ajv+QJ{VF!d$V|=C6 zJAP7YYwPgb+}y^PJO)f4pdTf(y!E{nMiA4h*|LyvTaU1u(9M_LkeTfrK>1Bmk%a4qfQK{vj7H1u#0Kb@_c^bxlI@)OR#P;MMbjzUQD= zpbe|$_y5nD!ezD(4mNSy>j$KOPm=d$wU0%zf+3vPg?4L@j6W@ z>FLqRv`P4)Ykny+($mv3&Wo@VaZ3d=8Zv2}I^8;ff|dY3K@0p~e6ZTx$PgAwvg}b=S65e-WeGLNo|n*v4cXxIq3)GKqb}N==CVHbmrYik0TVsP`Q1AGNT(~H&s3^kZ;UpPQ5Dm0z^E78> z*Y|ood9KBq9f3gH-EE4|#+ zZphte;05=}GWI7yhell^|jTO?d?c172^vq$V(t_N!iYV5vJS zxj@?u3=gjZZQu3kF!eHnhQJjOjHDw!#M$K~ zx3Dm2>1SYV&n_;?OT;{j?P(yGoPvV#GQhD3M&CwWadZ zF81de6puhS?=W8-17iVNH&8uvbmZdrK}b}z%{(uwww4E*lwTYOFYQ|*xFl6zI10+M z+<)H%kom{Seu!T)GYP4wM5Vf^85y6ossoy-gw0l`wmnFNeU6@cCI+NsWRSKU!<|j* z^oa-wzqPkh)XWW)Rmgsp3KBS`*+ zb(;a`hfsb=PL5!J+1CBGqB`*r1~6H0;sfP~HbNnYw$j^Q!UOR=`ZfE+uU`O*vhg%P z1k4jDc+=s(f9t2Er~eB8US0%Xcf!bM5wpQelGRy5<5fDJv+=R&k#yymFUW{dQ5ac% zJB(mG`~Uo*0hKAGTLR!RG9rV+;Z=bzfJ7N0{1Usmx^4@pj6u!-apd2+T3Ap6Mz}jk zZvRX+Ix@16sAFsf-~w#OzYyJPZnoU^;kzaiP=0{iooYiIz=7fpPSAMO(y6Lx)oPYk zaGB&f{C|(iAlMY5tv}E^OgVmR_49(*;eUvTkS|yr%XtT=D)4^Sq(4MwdwcuWuU{_b zJ6ihs`bW3-z_$T$);2`PcrWO7^q<6M84E+_6~F+SS^hCUey{+GqO-W3KW^)D(6otS zK3&n;N}4`=A>KkYJTwH{0wV(hB{MU#b}4FmkS?BdTuBL2*9wPDg>moNF(~=q$cS}d zU>5MjJ3BjHtWp6%pgp_*n@Awt8n*hxfvgFb2{?((ovG3)cfg+mBO@`19_t$$eV9(k zC!d}B!M?|_4+9%pAy5DiV}`O>p?F~NH|{T&i$FI8hoa%AtEyJ6*5IY#%}q>ng})$K zWikaid40MG;wfcsZ*OUq(9!lW*iSPz4*_}HIN-P!f6lpK^BKDqs<*ed`)Usc2-A`r zgkVF03PuH_Z)r&xY>=UbzPYGvci&V7i$GhmWd_sUODQ5~w19Gao@)x_^tEpP=i;oqer;h-< z5BTl+dNhb!A=g9@J6a*8xmi#~Mh2K?rF7m!&WRL`WBGU~JG<@bb8X=<`#Q(pwT$Hs zyQAP^6iX|sD%Z6>p{3?%80>1qyX_s|a^T+nMKlm&ot9dmfDP*E>VVzqH`KnpJd8b0 z_+C+A(;fceYjScPsOjBtKO+bW8^h^9=W6v?LC?crm?&-6!_Ii8SkWIhH8uUq zyhSxNuVVY(0bdS6Fcucpzg-gs*xo|ZE0BqTf`T03X$cAMKz`f%SecXaac9RKSZ3e- zx*2nk$)wM7dwVRvyLRNt=C-wE{i`}}I>__QdDeK^(3fB{$;pWhn1A3d8xzfiGL=Cj z?f_W{=n5Q3n2jc_Mo30h0CcXO+}}~U=hz9+lSDptF!O5PSY%4{!<{l>>ELXx1NLB( z9k{&zVL7-(JDdgHa^{=e7MvW@emWx53T{9XPP!=`Ts&D1)${3=ieU;~XxB01wW?lrsi%}O+kyBj^bE_A^ z@h=+Yhk-dbnE&=iO}c2Z>cj1YF7wA0qdyoga1Iw+l0g7&)F(w4Q|wYD{Frs*B_<)! z@K;|5Lz|NAVsWOyTgi(R&24WND^Hr)_d4xFqo8?D8%Bu^G-)JLD7n_t%OUJ9PLeyP Vn7lc24){733RGHIs$9}E^tQ@Zk|iQ#Ee)nH#8|RM$TpTjWXZl8`xX&}?Af=FZD{Oc-tYAUsn6HV2Ys( zl7xRsCQ;_1xuPci-nM^ssq>@ngF|Y2H{)Amwg8^G%!!J2Pf*K~= z^OWQgz0cazi>0%T`su@;`){9l@AQcx9%_$reauHb38v5pGF&A~;6#O)tdggc>u<1M zQj`5APbxc_7vZ;6NbX4mkn;@gjsAM^2iaA%vuMDCL=OUC8%I&`_>oX-C zlh30>5#Wr$m~1or&c}3%n>MIG3p#L( zqb7%Alwv$Q+=R!0=V4IE|NDn=IJy*+GOR4FXa1K*u6Cc^&9Y2LnO*uDDlA+X<@PO- zv_W(A6ZNHZM8_N^chus8Ahj27wuz~gf3W=(ukJ-*Qq#GszF4>bC9BpAT6x;Qf0G|S z@;x>12>FP&$YA#|bH|!^bNmbqGo|R9%dJ+!e-m(TlTVoU2nhXWZkEQC{VoE_+V@-A zNA%!?Syh?c5eu)7cnh!gn7ytjvfC|!h{qi&DeA_pQi%`m`^Sdv$7d!LbI(zp5@f9!Jk?lZjTbhGYxLNGMvFlDoyrJrIq1 z-WqX(^IEd#JDJ;4zqE$ol&%EQAgJjJmV=WasOJ(0-fgRNjhUWQMChb{-Fa^3Wv*&; z7u)@Cx;O`{0M$gx!=|%Us<-7H2+l;kyNz{HD53G(M23eGx&Qx#pXV`(!M=JbijY^n z`~gGVQ&=vXP+|fiig<+PAJ7M`iU$q-6U#6rb@`XCsj`)Z3N!6+RWJB*$D2rpR4A6z zGQU2a8jQcq>!nbdW)5_<3a$$r(w z6HeQ%>U>J(cyarvC={-Xuw%Xaa)^};MSgn0bLn_8!t~Bq$ zhGMOl4E8E=i2_l4taWd7lya&#|LGP@3ie$J9^YbNTt^)u3skDdYfv^g-`3(3%B(C9 z5~`v-B65>_XwcyXJ7)l1C5G zCo~$68RNh6GLp*pewOO}Fu`!FGNLeZaq_B-jCWjyZ{yZckuq<;kl!2!!ToZm{mxDt z2OIPGzkD)XSMjVQeL80q_>qjl07K?SP|sK2A3d7r9VHf}q-Z}&3xn5S%==9}HzZW* zkXJnmu5M*|-PP3ToiPu1XS%GkJr+lfC@kY>{u{8KqVuURLaffJCW`!Z$yl%BM-&qDvZ%?Crv@uBf>3{k;oq)x&; z1K)b43ecWw8$8r>c>Es^IcX8IjjgX$uiL71{KG45kAtXF&vz5w{Kb3^I3)gVwz?)S zDdOiDRcVOQBnVNhf7|?;6-H2lc00Sk#C#ulFK;Ss@e67r>TN0y{aw)H-J(5VBqMrVdHaQZl6^uqEO6{L*0P$uXiqVJQM!t5rQ=oj{rCc)MSO#vSWYK{uj2I29+3Z1n_$# zCH*ej3At4h8g@kdTjC;^u6>v+!@ktd|Km~eV4YOfT))2rF5uWCEf&Y(E9Yq^<%(k& zz1!pYA<>co+#5MXzhx@b$bRuj(r!BT45Tjwt`& z5s9Fta(t*!DXEteJpc~@bz^b}H}#bJ<;!?iTc%gyqtmB!Bm6B-xvGQ4Un(58$NwFD zdqZpDh$_S}r>#`{7rpI6<>Oh~sQhBZsApEMqavD+&i2yJ&K;6s zagx4Rb#V^$iJBhrMlH}PI|R6Bng5gNd@oy~cXVgQF)eAJiHFoAcS|tpt5RGfq&NLJ zVK&7cVao04NCuou!WZ6(k z2N-;QkrNPOupt>9zJa40{bXU#J!X~0Rgu>tL(P?2dWget9G!h3zMb{@%dTCX^{(d7W6ZE(DV!|a@1kEUR{Nsz9 zsQcb1b2z~|G+_Qj+*P#`p>wdd#FIv+zZq;%1)FJJh`y0S^A?#HHFW;7G`G?5Z> z-)70nD{dmKH%_P59v@3oBT&?Q>KA;oMqyrC_8dA7ov(x>FR|_^P&!(+IjCf zi{th$HqS42{&*=h4b#pO3e)Ypd^X-zXMjkcb$EHcZ`(;Hpl_wzS>evoxH(A(8)t^P zTz|<(O)Xrv{88+Y+D(0W&3{8;AD{k%QU9(lSH6sa=&?mpWP!Q<7du~RtKNG0G-nVQe6Dr()QCF5gJ{B-#-_WZ74<0?1MCO7140xhOg-BB)>xD0|_$n{BwYP&)CJLit#vm1TzYhn;T>ah3! zU}IQnm|9-FV4|r=eS@DtEODuznAARv>(G#lfYQTFgbUe+_F_d__PK4+!ufA^!V&Hz zPekJ7Y95Gv&g4rEzWxr&m7`QteU0=Iy=2r2=2vs%P!T(`!2GxHgDHV(5xX8B*%- z&-xDoO#X~rW${1L@$_Q5uQ&M)q4i5UF%fqM`T9Ji*V?~x_kaZH^zo;4Yr}#gm6&Cw z)1F|{r=^ogdj6^dvElid=In2F4UrX0-{0ooRC8Z{O}WA>uYXOqqS0n-NI|^*+czcl z9U*hdy{z1w@4Y}I3djhlZ{Vf{1f3U*2SjPA2Xui*HCRtbmJb{e5Bgo__(4igMEQ^N z`}BZ+zQQMSzbN#FESyH$Yxl2iNj&5+Vph<oFh#(){>!>k?UMhSjXP zOdwkP))KdJ$+wCJ>KF3S_grg_?MxV2g`5b*2mmu7KP&p37xy)NAg(_ zb(Y$>&(Suy07~d!7WR`>{(AozN8Kc|<+PBlmkQ&7b8w<~+c#%+QD12b*Ilx$RF@DZ z!!K)u{U$Q)eAdOHAOS_vs5jbyML6Qto- z-1=#knCmLlt9`b1FqxJ|*?%2Q^nUi;a00fX|3H&wWu9)zB;{$BF##@9+-4VcAY((b znb!@=DQ61NGc^a{ILO5eLBB^gZIU?}b-DOn8TQN&!L_$ox5)KoKArgc7>k>3RuHeQ zT1j^%@35<@d#*eLdu++6m)zSWbNI8BOB=5wFi~!Gcu)3*^D)|c@$e;~;`nZSu4rMY zBTU&bh{8YvR1`Hzz#sZ%`53y$ymy|Y?(mS%ePQzumdpR2CFdwNF3m#c+fjb@HrxNr z?Lukz18t{NW2fqbz1H0K<*vL8;H?#Y>&8kHWIrOD{O(K1!rU1TiMu}h%VV(H5~5$x zL*qz_vi+o9Vse|zPFmH>7AZVwCFM9cn@1sTYa}<3XBZfCH};2xo_^X>Mz+>*FRtbw z6oUXfYQE=kL#dOE%$*QLu6QUm)W=cfp*Irb9jSZ^pdk3%Akk>Dng@-6xvsESzfj2w%KSV{V3cO@r|I!~=g=0>a zq)IYD;PW)0pSmq-=52)#H`}2%s2T@$w|gEkIAcB}=Oc_`ZcJWAB%DR@l6c}m()!D* zb}eS&vlt8TVUx($`>-cTCRA7xKflirjQnxE3nC?f3=ipJAz@dpQkMsu`~ThhmugRw zLb~Ffwz6U?nEC?+FP95G1}{iTO5%Q#YY@bs5Ia1q+j2a)k&{f|Y3N|QDSLyQ?ER?2 z8jW);DG&K&=`5P8{@MpozPAy0r2_n@gUDxfYXW51HZ7!dZPcNLYT8H(4@VUgJfNre zJ6dr?A66d^hAPH(rl*I3k>A+D+qy04>U8p_>@qeBSMd5qvyk|tw*4-b#Ez3bA~LQKoc%iDH$-Sr8? z@vykBH~~u6dX`|hY;A;Iyt{bc#01OXNvHMfEvZL3Iy#p7UyzI{;vFh+AMTP{GI*QT zj&HqbP8WP2h`4z1?5x@U3B&Y!0rHyzjYg(XfwIDq?S*I2k$?Ay^4*Gh%5l!(8KVvh z)qIUza|Af^t-Hy+6&TF(B$_qPFBU;MI*EF`x}IfS_4SY6ym`Y$n`oPs0#*sPZ-SqXh77!rw^yyPx7|eC9lj>)tlxntS`G+dPIUF%}a=2sI z>YrgD7*@LW&Fm4(sNvh}?CkvS!?@`R6A~@q|UKPO(utmv%R#jCANJ#Yd2b{UR@%0Up=lDH5 zoCA%~xI<9V)>)W~k+A|@@idfr>xWRko@%8%pG`5Rrj8Ck>2gCfG#nbf{bW}QBx>jt zo}+1CVDEDe+%X!>L4Mh@aq^YgFONy_>C=GLbE0_~S3_xh|I#DGPHbYOnE`vt*(+d>Zm%&_i>BwLpN<@2xf z0b7g#6_%_fXQtgu@?TfR7`Hc_3??n4Cvzza@ihN=YRbCxjhrg{v1mG$uiYj z@@KXEh^9^=Hk8I~@2~#PEEx?)M?Up}cr`9;?EPn;9h&y1e1G)!-=q#z&VO#${3a3n zk6XV~S6ds&M)N)!cqxFMy*&>rE9?J~pu2m*>yueVHFfn@LHc@nuJojcWCsh7%=SVrcy3^FvTvtfMnjTqsibyl7W9$3hlf5*IeumSU~3Ls`JXNC z;W|r-~a1md%DMGP>m zuP3CDq@u$5tmeLj-5e!)9vvNd?@xN&xpODGxj6%eQ!vp<$brtfi?6J&qtNIcrV5C1 z$K2K**Lt><_#7&pUP0>6D_Zm={=7BKDN3(SGA5A)&CRR|T44NwjMw}K4oLv9(q{+e z6G+i)&E>#9pI2AyUKtqFzxnrYr0lh|t1DgWw8o1U_@u6XNowWb&2|opwG+%7+I2C* z!X8H4$-N~!Y3Q=DnD%zrmZPCE*X?;_kY=6R5_S1Q^w`*|i}FUZJnl$$YU%#<>jtQ6 zQqrvpN~*R`7VcPUK=%ERxvm_yd3;JqMMWEdQ{svTrPGUG#ocArPXeUdv^%Kk-E7>O zxVV3unwEz7nXCj^UR%4L-nTud%0DnRrXrrfbt~c$AO%9DHO)w=(OkTSG#JLte@7n$ zwf{*fd!FnZ=Kul$aQo(_Ky!2R@b@G&u6n;ijBx#r1=o)` zN+Ri;w<1i_xL%eSD~xymiU9!lfHlnwI6Lfj$nCQ-?}}zMtalBrwC;D^UpHD@T1rh% zubg;|Kp+4lLPA2k&rkP3?x4u@3Ntv+9Dn?9zOmgFDXFRVVwD7>rIFVRlPsB-m4kJVS%ftD(_NT4c)v2v$MM#=(JCM~KZ7v^=;dYBtG_U2{Grq&4G2c@A1h zHX7>C_e+_+(FB4%85!9Ht20Fn5(vsr`VM5Rf$@7k=@`(>3(2ohMMV*ljb1lny6RmQ zC<-*PfM*4db8BSE(<^`u1=nICP-n&LD8d{{&1&ZFpLv}TCLk&KW2)KL*1-W#&Yi|d zbsZfBr=~5kjh16rmf!ZZG}H`$-s)-x903Lb2%!X#^Y9Svm)d8!e*L=NX8To8GtZ5w zsIIvR-4j5Nqm5qtV2uAB8XEZZt9)UP=iTOFx>J&cHy$1ZbO)*IT^8zO1gSr`P_~$x zlw|CBnSA0SZuKk|yD_m(kT3@kdj!%?I*TD}!CCD4(hekEnIbrd;pvSC95}qm`PnHL zGU6HFaBCYF-dyyB!GF{dP;OU{8tvxS7F|DuqfK9eD}t|b_yvPEhsG= z&D%@*z8ypB@G#K~C_^dVJxKux{;@`6?Q!6o5p2ZVNJ70}CvXI1dOIn~uxjQ?VB7ty z%5h@W${3F{J?7F@NAjGBpp)RfpS4Gn3|Vn2RnNT`amC8&W_ zU1e1j5R5>zBzMk4`^nQz)OY7N3S09a8dR1caWymT!O zzk*QS5utpantBH$UR!#1jUwjxU_QZFEYkG0r781dzg0;SgE=Ed?Dr&{u#+6EK|*xt zT6)~{u20=GWYk6tU!^#jn3zZ+bxKUjz%uO z6+*`C2rF>iD!0SxzI1lbXlL(56oNnnG92^X(E%9Clg$KIp#fuk| zl$4*8AjRe?c32dC#p9}~6GIxRqP+awIFT!>UkLDGhJ@Gh-@kb%)M8kFa_>SNAdR7+ zA>9xDj|T0f==U{L3-F*Aq_S-r`!btP7;)FVv90vpx_?7JwZM}zy z92x5OmFc9jHUghyg%%Md)s!7a!D!Of;p5?Mm_%|jMaA_m`G8?qG7>+%5rE#|q`L+H z^o%3+OK$FaRtZl%IXxQSNqdv|@zc{99I;PskOJ=ao`GK?W|ELxHNW^QKro|?t*t2_ zJ0J{%fYL&v0jnAZoO%Sc-vy)p^JBM8iq2BN&=-2Brbh7b<8I%L=4XzMC5aJxvl09l zw{{Ag*WW);EEz6dgGhP|UaRJKrHt?R46Un8Y89=Ck z5hf)i1r8JfNa{wEVi?YBxbSFi+zA}}d*GF;KvDq>3xIQQw%^)6I7pWaGs2jW<_s)f zVWvn!DFfjSG$IFJPUC{uW0H9XEhl`=K5RNT^}k5Lc05ZFNLXzd;;^KuTsnGke9oT3HGxjA4kByD7ZAF3x6q1rcynM+BK9J$1 z1fe@wec5W};6V8?#6_2TZA@7Lfe1W@lfF+*e~#D#agSB{ewlMg>;6njAoVxi zZur7QMP;@Q>B2|@PDcU|K#+sSN#DzoUA;O0cbtsxGeeYtaVVG?snesBWC`9EsH3Ly zvtvqXYF8j?8X6nJy5@in(uC3<48-`8nm8^b^jVca>uumFUS9iYvQq%P!>fisKnFg# zI2EuSfjU{Pz{1NZ<;2s(;jF|T!&RJ9P*WEgNAO4*tw zVCXBy4I70u&#P7IAa=2{?1mZ>BAE4nWC|gTfU`$3<=gd0W zzJ2?4#g=IA5RwdmKUntOq_17?19zB_(+ z{AI17=-I*(67m0v!Q=qvHos22Q0Za+{syt1^A$~ul+BJuWCY4)qwSg#IG18 z>tCpbtgHgS7s;>v!6u-41z&Kf_>MPdrLv}Nia3bN(XK5RRm;oEZ40h5Ti$>YA#`D1 zY?*-a**`AP+QtL<239wq-)=K8nSpz6^xAj@dn|k7!UO>O2pkXaE@E$Xq0(6~z=(l^ z1JzPhT@Czv;n%P2R+YfhVk`Tl?Gw$O(=V)uJcIqWFmL@qhZcDITxj@EP5&Hs%XuYk z9_K7}GRmw?nFPkM?rGqYyKTRJ(*qsHm8$kihg?S|zqK_ByxV7WZgBOamoEX(6qc1) z14RVLelz0rNyjT4_j<#oqt&91IUfP(QaBdl)+ZZn?d)a&Z=Re^pG#qQ4HP!Q@4EpF z2Uu#N$p{aruO2+O_B5{;O7VN_@_=z{9wxf-~g--fCGz+KZ|}+ z$(weZzjvK@&Mwg@;J82Y2%{uDwV+wzKj?3w$ zc~NYzwtq}$_7xqlp)bJOCJLcTO7creqK=N)6gL9xjtcg80bYDQ*d+JxlikcJF*UZ(k2)W9=w=hrKQmq+Lw|n7IIBNtC*7r z_-Jh(uqBI_^E<#iCY6LuZ%H8Bi=>~r4Auftw}W<0EEECvAViC=D;(;GCJJ&KX8)Ad-2_Q zI;~&4i}5Q}Tw%d-?GK%_tE#E6x$lAleEW8^Z0~GP1!X+-saXYm@ts1J#wGM^wd;wbDz>``>S2xuHN? zHqvMt<_WqOU||Bee?N%tNR<8O=vy(P6Mu;En_?d=`psAG1EJwr^|!$uDm+K>xyIg1 zO>rW!Mfa%jE;-n?cBz-MsXM*qajVbUDnImV`MaGCM*#P1g%`Q*BE|w-tCLS^4?hK` zhyBpV$cqb&cl|2BI`AP#JVrjkl0V|mfgv;UoMzXC+`_&1FadlXk3?BPUA|P#B str: - """Returns the mapping.""" - return self.name - - -# FIXME See https://github.com/DiamondLightSource/mx_bluesky/issues/77 -class ChipType(IntEnum): - Oxford = 0 - OxfordInner = 1 - Custom = 2 - Minichip = 3 # Mini oxford, 1 city block only - MISP = 4 # New PSI polymer chip - - def __str__(self) -> str: - """Returns the chip name.""" - return self.name - - -class PumpProbeSetting(IntEnum): - NoPP = 0 - Short1 = 1 - Short2 = 2 - Repeat1 = 3 - Repeat2 = 4 - Repeat3 = 5 - Repeat5 = 6 - Repeat10 = 7 - Medium1 = 8 - - def __str__(self) -> str: - """Returns the pump-probe setting name.""" - return self.name - - -class Fiducials(str, Enum): - origin = "origin" - zero = "zero" - fid1 = "f1" - fid2 = "f2" diff --git a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py b/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py deleted file mode 100755 index 738e83f91..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +++ /dev/null @@ -1,797 +0,0 @@ -""" -Fixed target data collection -""" - -import logging -import shutil -import time -from datetime import datetime -from pathlib import Path -from time import sleep -from typing import Dict, List - -import bluesky.plan_stubs as bps -import bluesky.preprocessors as bpp -import numpy as np -from blueapi.core import MsgGenerator -from dodal.common import inject -from dodal.devices.hutch_shutter import HutchShutter, ShutterDemand -from dodal.devices.i24.aperture import Aperture -from dodal.devices.i24.beamstop import Beamstop -from dodal.devices.i24.dcm import DCM -from dodal.devices.i24.dual_backlight import DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion -from dodal.devices.i24.pmac import PMAC -from dodal.devices.zebra import Zebra - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.dcid import DCID -from mx_bluesky.I24.serial.fixed_target.ft_utils import ( - ChipType, - MappingType, - PumpProbeSetting, -) -from mx_bluesky.I24.serial.parameters import ( - ChipDescription, - FixedTargetParameters, - SSXType, -) -from mx_bluesky.I24.serial.parameters.constants import ( - LITEMAP_PATH, - PARAM_FILE_NAME, - PARAM_FILE_PATH_FT, -) -from mx_bluesky.I24.serial.setup_beamline import caget, cagetstring, caput, pv -from mx_bluesky.I24.serial.setup_beamline import setup_beamline as sup -from mx_bluesky.I24.serial.setup_beamline.setup_zebra_plans import ( - SHUTTER_OPEN_TIME, - arm_zebra, - close_fast_shutter, - open_fast_shutter, - open_fast_shutter_at_each_position_plan, - reset_zebra_when_collection_done_plan, - setup_zebra_for_fastchip_plan, -) -from mx_bluesky.I24.serial.write_nexus import call_nexgen - -ABORTED = False - -logger = logging.getLogger("I24ssx.fixed_target") - - -def setup_logging(): - # Log should now change name daily. - logfile = time.strftime("i24fixedtarget_%d%B%y.log").lower() - log.config(logfile) - - -def calculate_collection_timeout(parameters: FixedTargetParameters) -> float: - """Give an estimation of the time the plan should wait for the data collection \ - to be finished. - - For non-pump probe collections and collection with short delays, it should be \ - enough to use the collection time plus a genereous 30s buffer. - For EAVA (Excite and visit again) collections instead, the laser dwell and laser \ - delay times should be included in the calculation. For long dalays between pump \ - and probe, the shutter opening time will also need to be taken into account. - For more details on the dynamics see - https://confluence.diamond.ac.uk/display/MXTech/Dynamics+and+fixed+targets. - - Args: - parameters (FixedTargerParameters): The collection paramelters - """ - buffer = 30 - pump_setting = parameters.pump_repeat - collection_time = parameters.total_num_images * parameters.exposure_time_s - if pump_setting in [ - PumpProbeSetting.NoPP, - PumpProbeSetting.Short1, - PumpProbeSetting.Short2, - ]: - timeout = collection_time + buffer - else: - # EAVA: Excite and visit again - num_windows = parameters.total_num_images / parameters.num_exposures - timeout = ( - collection_time - + parameters.laser_dwell_s * num_windows # type: ignore - + parameters.laser_delay_s - + buffer - ) - if pump_setting == PumpProbeSetting.Medium1: - # Long delay between pump and probe, with fast shutter opening and closing. - timeout = timeout + SHUTTER_OPEN_TIME - return timeout - - -def copy_files_to_data_location( - dest_dir: Path | str, - param_path: Path = PARAM_FILE_PATH_FT, - map_file: Path = LITEMAP_PATH, - map_type: MappingType = MappingType.Lite, -): - if not isinstance(dest_dir, Path): - dest_dir = Path(dest_dir) - shutil.copy2(param_path / "parameters.txt", dest_dir / "parameters.txt") - if map_type == MappingType.Lite: - shutil.copy2(map_file / "currentchip.map", dest_dir / "currentchip.map") - - -def write_userlog( - parameters: FixedTargetParameters, - filename: str, - transmission: float, - wavelength: float, -): - # Write a record of what was collected to the processing directory - userlog_path = Path(parameters.visit) / f"processing/{parameters.directory}" - userlog_fid = f"{filename}_parameters.txt" - logger.debug("Write a user log in %s" % userlog_path) - - userlog_path.mkdir(parents=True, exist_ok=True) - - text = f""" - Fixed Target Data Collection Parameters\n - Data directory \t{parameters.collection_directory.as_posix()}\n - Filename \t{filename}\n - Shots per pos \t{parameters.num_exposures}\n - Total N images \t{parameters.total_num_images}\n - Exposure time \t{parameters.exposure_time_s}\n - Det distance \t{parameters.detector_distance_mm}\n - Transmission \t{transmission}\n - Wavelength \t{wavelength}\n - Detector type \t{parameters.detector_name}\n - Pump status \t{parameters.pump_repeat}\n - Pump exp time \t{parameters.laser_dwell_s}\n - Pump delay \t{parameters.laser_delay_s}\n - """ - with open(userlog_path / userlog_fid, "w") as f: - f.write(text) - - -@log.log_on_entry -def get_chip_prog_values( - parameters: FixedTargetParameters, -): - # this is where p variables for fast laser expts will be set - if parameters.pump_repeat in [ - PumpProbeSetting.NoPP, - PumpProbeSetting.Short1, - PumpProbeSetting.Short2, - PumpProbeSetting.Medium1, - ]: - pump_repeat_pvar = 0 - elif parameters.pump_repeat == PumpProbeSetting.Repeat1: - pump_repeat_pvar = 1 - elif parameters.pump_repeat == PumpProbeSetting.Repeat2: - pump_repeat_pvar = 2 - elif parameters.pump_repeat == PumpProbeSetting.Repeat3: - pump_repeat_pvar = 3 - elif parameters.pump_repeat == PumpProbeSetting.Repeat5: - pump_repeat_pvar = 5 - elif parameters.pump_repeat == PumpProbeSetting.Repeat10: - pump_repeat_pvar = 10 - else: - logger.warning(f"Unknown pump_repeat, pump_repeat = {parameters.pump_repeat}") - - logger.info( - f"Pump repeat is {str(parameters.pump_repeat)}, PVAR set to {pump_repeat_pvar}" - ) - - if parameters.pump_repeat == PumpProbeSetting.Short2: - pump_in_probe = 1 - else: - pump_in_probe = 0 - - logger.info(f"pump_in_probe set to {pump_in_probe}") - - chip_dict: Dict[str, list] = { - "X_NUM_STEPS": [11, parameters.chip.x_num_steps], - "Y_NUM_STEPS": [12, parameters.chip.y_num_steps], - "X_STEP_SIZE": [13, parameters.chip.x_step_size], - "Y_STEP_SIZE": [14, parameters.chip.y_step_size], - "DWELL_TIME": [15, parameters.exposure_time_s], - "X_START": [16, 0], - "Y_START": [17, 0], - "Z_START": [18, 0], - "X_NUM_BLOCKS": [20, parameters.chip.x_blocks], - "Y_NUM_BLOCKS": [21, parameters.chip.y_blocks], - "X_BLOCK_SIZE": [24, parameters.chip.x_block_size], - "Y_BLOCK_SIZE": [25, parameters.chip.y_block_size], - "COLTYPE": [26, 41], - "N_EXPOSURES": [30, parameters.num_exposures], - "PUMP_REPEAT": [32, pump_repeat_pvar], - "LASER_DWELL": [34, parameters.laser_dwell_s], - "LASERTWO_DWELL": [35, parameters.pre_pump_exposure_s], - "LASER_DELAY": [37, parameters.laser_delay_s], - "PUMP_IN_PROBE": [38, pump_in_probe], - } - - chip_dict["DWELL_TIME"][1] = 1000 * parameters.exposure_time_s - chip_dict["LASER_DWELL"][1] = ( - 1000 * parameters.laser_dwell_s if parameters.laser_dwell_s else 0 - ) - chip_dict["LASERTWO_DWELL"][1] = ( - 1000 * parameters.pre_pump_exposure_s if parameters.pre_pump_exposure_s else 0 - ) - chip_dict["LASER_DELAY"][1] = ( - 1000 * parameters.laser_delay_s if parameters.laser_delay_s else 0 - ) - - return chip_dict - - -@log.log_on_entry -def load_motion_program_data( - pmac: PMAC, - motion_program_dict: Dict[str, List], - map_type: int, - pump_repeat: int, - checker_pattern: bool, -): - logger.info("Loading motion program data for chip.") - logger.info(f"Pump_repeat is {PumpProbeSetting(pump_repeat)}") - if pump_repeat == PumpProbeSetting.NoPP: - if map_type == MappingType.NoMap: - prefix = 11 - logger.info(f"Map type is None, setting program prefix to {prefix}") - elif map_type == MappingType.Lite: - prefix = 12 - elif map_type == MappingType.Full: - prefix = 13 - else: - logger.warning(f"Unknown Map Type, map_type = {map_type}") - return - elif pump_repeat in [pp.value for pp in PumpProbeSetting if pp != 0]: - # Pump setting chosen - prefix = 14 - logger.info(f"Setting program prefix to {prefix}") - yield from bps.abs_set(pmac.pmac_string, "P1439=0", wait=True) - if checker_pattern: - logger.info("Checker pattern setting enabled.") - yield from bps.abs_set(pmac.pmac_string, "P1439=1", wait=True) - if pump_repeat == PumpProbeSetting.Medium1: - # Medium1 has time delays (Fast shutter opening time in ms) - yield from bps.abs_set(pmac.pmac_string, "P1441=50", wait=True) - else: - yield from bps.abs_set(pmac.pmac_string, "P1441=0", wait=True) - else: - logger.warning(f"Unknown Pump repeat, pump_repeat = {pump_repeat}") - return - - logger.info("Set PMAC_STRING pv.") - for key in sorted(motion_program_dict.keys()): - v = motion_program_dict[key] - pvar_base = prefix * 100 - pvar = pvar_base + v[0] - value = str(v[1]) - s = f"P{pvar}={value}" - logger.info("%s \t %s" % (key, s)) - yield from bps.abs_set(pmac.pmac_string, s, wait=True) - yield from bps.sleep(0.02) - yield from bps.sleep(0.2) - - -@log.log_on_entry -def get_prog_num( - chip_type: ChipType, map_type: MappingType, pump_repeat: PumpProbeSetting -) -> int: - logger.info("Get Program Number") - if pump_repeat == PumpProbeSetting.NoPP: - if chip_type in [ChipType.Oxford, ChipType.OxfordInner]: - logger.info( - f"Pump_repeat: {str(pump_repeat)} \tOxford Chip: {str(chip_type)}" - ) - if map_type == MappingType.NoMap: - logger.info("Map type 0 = None") - logger.info("Program number: 11") - return 11 - elif map_type == MappingType.Lite: - logger.info("Map type 1 = Mapping Lite") - logger.info("Program number: 12") - return 12 - elif map_type == MappingType.Full: - logger.info("Map type 2 = Full Mapping") - logger.info("Program number: 13") # once fixed return 13 - msg = "Mapping Type FULL is broken as of 11.09.17" - logger.error(msg) - raise ValueError(msg) - else: - logger.debug(f"Unknown Mapping Type; map_type = {map_type}") - return 0 - elif chip_type == ChipType.Custom: - logger.info( - f"Pump_repeat: {str(pump_repeat)} \tCustom Chip: {str(chip_type)}" - ) - logger.info("Program number: 11") - return 11 - elif chip_type == ChipType.Minichip: - logger.info( - f"Pump_repeat: {str(pump_repeat)} \tMini Oxford Chip: {str(chip_type)}" - ) - logger.info("Program number: 11") - return 11 - else: - logger.debug(f"Unknown chip_type, chip_tpe = {chip_type}") - return 0 - elif pump_repeat in [ - pp.value for pp in PumpProbeSetting if pp != PumpProbeSetting.NoPP - ]: - logger.info(f"Pump_repeat: {str(pump_repeat)} \t Chip Type: {str(chip_type)}") - logger.info("Map Type = Mapping Lite with Pump Probe") - logger.info("Program number: 14") - return 14 - else: - logger.warning(f"Unknown pump_repeat, pump_repeat = {pump_repeat}") - return 0 - - -@log.log_on_entry -def datasetsizei24( - n_exposures: int, - chip_params: ChipDescription, - map_type: MappingType, -) -> int: - # Calculates how many images will be collected based on map type and N repeats - logger.info("Calculate total number of images expected in data collection.") - - if map_type == MappingType.NoMap: - if chip_params.chip_type == ChipType.Custom: - total_numb_imgs = chip_params.x_num_steps * chip_params.y_num_steps - logger.info( - f"Map type: None \tCustom chip \tNumber of images {total_numb_imgs}" - ) - else: - chip_format = chip_params.chip_format[:4] - total_numb_imgs = int(np.prod(chip_format)) - logger.info( - f"""Map type: None \tOxford chip {chip_params.chip_type} \t \ - Number of images {total_numb_imgs}""" - ) - - elif map_type == MappingType.Lite: - logger.info(f"Using Mapping Lite on chip type {chip_params.chip_type}") - chip_format = chip_params.chip_format[2:4] - block_count = 0 - with open(LITEMAP_PATH / "currentchip.map", "r") as f: - for line in f.readlines(): - entry = line.split() - if entry[2] == "1": - block_count += 1 - - logger.info(f"Block count={block_count}") - logger.info(f"Chip format={chip_format}") - - logger.info(f"Number of exposures={n_exposures}") - - total_numb_imgs = int(np.prod(chip_format) * block_count * n_exposures) - logger.info(f"Calculated number of images: {total_numb_imgs}") - - elif map_type == MappingType.Full: - logger.error("Not Set Up For Full Mapping") - raise ValueError("The beamline is currently not set for Full Mapping.") - - else: - logger.warning(f"Unknown Map Type, map_type = {str(map_type)}") - raise ValueError("Unknown map type") - - logger.info("Set PV to calculated number of images.") - caput(pv.me14e_gp10, int(total_numb_imgs)) - - return int(total_numb_imgs) - - -@log.log_on_entry -def start_i24( - zebra: Zebra, - aperture: Aperture, - backlight: DualBacklight, - beamstop: Beamstop, - detector_stage: DetectorMotion, - shutter: HutchShutter, - parameters: FixedTargetParameters, - dcid: DCID, -): - """Set up for I24 fixed target data collection, trigger the detector and open \ - the hutch shutter. - Returns the start_time. - """ - - logger.info("Start I24 data collection.") - start_time = datetime.now() - logger.info("Collection start time %s" % start_time.ctime()) - - logger.debug("Set up beamline") - yield from sup.setup_beamline_for_collection_plan( - aperture, backlight, beamstop, wait=True - ) - - yield from sup.move_detector_stage_to_position_plan( - detector_stage, parameters.detector_distance_mm - ) - - logger.debug("Set up beamline DONE") - - filepath = parameters.collection_directory.as_posix() - filename = parameters.filename - - logger.debug("Acquire Region") - - num_gates = parameters.total_num_images // parameters.num_exposures - - logger.info(f"Total number of images: {parameters.total_num_images}") - logger.info(f"Number of exposures: {parameters.num_exposures}") - logger.info(f"Number of gates (=Total images/N exposures): {num_gates:.4f}") - - if parameters.detector_name == "pilatus": - logger.info("Using Pilatus detector") - logger.info(f"Fastchip Pilatus setup: filepath {filepath}") - logger.info(f"Fastchip Pilatus setup: filename {filename}") - logger.info( - f"Fastchip Pilatus setup: number of images {parameters.total_num_images}" - ) - logger.info( - f"Fastchip Pilatus setup: exposure time {parameters.exposure_time_s}" - ) - - sup.pilatus( - "fastchip", - [ - filepath, - filename, - parameters.total_num_images, - parameters.exposure_time_s, - ], - ) - - # DCID process depends on detector PVs being set up already - logger.debug("Start DCID process") - dcid.generate_dcid( - visit=parameters.visit.name, - image_dir=filepath, - start_time=start_time, - num_images=parameters.total_num_images, - exposure_time=parameters.exposure_time_s, - shots_per_position=parameters.num_exposures, - pump_exposure_time=parameters.laser_dwell_s, - pump_delay=parameters.laser_delay_s, - pump_status=parameters.pump_repeat.value, - ) - - logger.debug("Arm Pilatus. Arm Zebra.") - shutter_time_offset = SHUTTER_OPEN_TIME if PumpProbeSetting.Medium1 else 0.0 - yield from setup_zebra_for_fastchip_plan( - zebra, - parameters.detector_name, - num_gates, - parameters.num_exposures, - parameters.exposure_time_s, - shutter_time_offset, - wait=True, - ) - if parameters.pump_repeat == PumpProbeSetting.Medium1: - yield from open_fast_shutter_at_each_position_plan( - zebra, parameters.num_exposures, parameters.exposure_time_s - ) - caput(pv.pilat_acquire, "1") # Arm pilatus - yield from arm_zebra(zebra) - caput(pv.pilat_filename, filename) - time.sleep(1.5) - - elif parameters.detector_name == "eiger": - logger.info("Using Eiger detector") - - logger.warning( - """TEMPORARY HACK! - Running a Single image pilatus data collection to create directory.""" - ) - num_imgs = 1 - sup.pilatus( - "quickshot-internaltrig", - [filepath, filename, num_imgs, parameters.exposure_time_s], - ) - logger.debug("Sleep 2s waiting for pilatus to arm") - sleep(2) - sleep(0.5) - caput(pv.pilat_acquire, "0") # Disarm pilatus - sleep(0.5) - caput(pv.pilat_acquire, "1") # Arm pilatus - logger.debug("Pilatus data collection DONE") - sup.pilatus("return to normal") - logger.info("Pilatus back to normal. Single image pilatus data collection DONE") - - logger.info(f"Triggered Eiger setup: filepath {filepath}") - logger.info(f"Triggered Eiger setup: filename {filename}") - logger.info( - f"Triggered Eiger setup: number of images {parameters.total_num_images}" - ) - logger.info( - f"Triggered Eiger setup: exposure time {parameters.exposure_time_s}" - ) - - sup.eiger( - "triggered", - [ - filepath, - filename, - parameters.total_num_images, - parameters.exposure_time_s, - ], - ) - - # DCID process depends on detector PVs being set up already - logger.debug("Start DCID process") - dcid.generate_dcid( - visit=parameters.visit.name, - image_dir=filepath, - start_time=start_time, - num_images=parameters.total_num_images, - exposure_time=parameters.exposure_time_s, - shots_per_position=parameters.num_exposures, - pump_exposure_time=parameters.laser_dwell_s, - pump_delay=parameters.laser_delay_s, - pump_status=parameters.pump_repeat.value, - ) - - logger.debug("Arm Zebra.") - shutter_time_offset = SHUTTER_OPEN_TIME if PumpProbeSetting.Medium1 else 0.0 - yield from setup_zebra_for_fastchip_plan( - zebra, - parameters.detector_name, - num_gates, - parameters.num_exposures, - parameters.exposure_time_s, - shutter_time_offset, - wait=True, - ) - if parameters.pump_repeat == PumpProbeSetting.Medium1: - yield from open_fast_shutter_at_each_position_plan( - zebra, parameters.num_exposures, parameters.exposure_time_s - ) - yield from arm_zebra(zebra) - - time.sleep(1.5) - - else: - msg = f"Unknown Detector Type, det_type = {parameters.detector_name}" - logger.error(msg) - raise ValueError(msg) - - # Open the hutch shutter - yield from bps.abs_set(shutter, ShutterDemand.OPEN, wait=True) - - return start_time - - -@log.log_on_entry -def finish_i24( - zebra: Zebra, - pmac: PMAC, - shutter: HutchShutter, - dcm: DCM, - parameters: FixedTargetParameters, -): - logger.info(f"Finish I24 data collection with {parameters.detector_name} detector.") - - complete_filename: str - transmission = float(caget(pv.pilat_filtertrasm)) - wavelength = yield from bps.rd(dcm.wavelength_in_a) - - if parameters.detector_name == "pilatus": - logger.debug("Finish I24 Pilatus") - complete_filename = f"{parameters.filename}_{caget(pv.pilat_filenum)}" - yield from reset_zebra_when_collection_done_plan(zebra) - sup.pilatus("return-to-normal") - sleep(0.2) - elif parameters.detector_name == "eiger": - logger.debug("Finish I24 Eiger") - yield from reset_zebra_when_collection_done_plan(zebra) - sup.eiger("return-to-normal") - complete_filename = cagetstring(pv.eiger_ODfilenameRBV) # type: ignore - - # Detector independent moves - logger.info("Move chip back to home position by setting PMAC_STRING pv.") - yield from bps.trigger(pmac.to_xyz_zero) - logger.info("Closing shutter") - yield from bps.abs_set(shutter, ShutterDemand.CLOSE, wait=True) - - # Write a record of what was collected to the processing directory - write_userlog(parameters, complete_filename, transmission, wavelength) - - -def run_aborted_plan(pmac: PMAC, dcid: DCID): - """Plan to send pmac_strings to tell the PMAC when a collection has been aborted, \ - either by pressing the Abort button or because of a timeout, and to reset the \ - P variable. - """ - logger.warning("Data Collection Aborted") - yield from bps.abs_set(pmac.pmac_string, "A", wait=True) - yield from bps.sleep(1.0) - yield from bps.abs_set(pmac.pmac_string, "P2401=0", wait=True) - - end_time = datetime.now() - dcid.collection_complete(end_time, aborted=True) - - -@log.log_on_entry -def main_fixed_target_plan( - zebra: Zebra, - pmac: PMAC, - aperture: Aperture, - backlight: DualBacklight, - beamstop: Beamstop, - detector_stage: DetectorMotion, - shutter: HutchShutter, - dcm: DCM, - parameters: FixedTargetParameters, - dcid: DCID, -) -> MsgGenerator: - logger.info("Running a chip collection on I24") - - logger.info("Getting Program Dictionary") - - # If alignment type is Oxford inner it is still an Oxford type chip - if parameters.chip.chip_type == ChipType.OxfordInner: - logger.debug("Change chip type Oxford Inner to Oxford.") - parameters.chip.chip_type = ChipType.Oxford - - chip_prog_dict = get_chip_prog_values(parameters) - logger.info("Loading Motion Program Data") - yield from load_motion_program_data( - pmac, - chip_prog_dict, - parameters.map_type, - parameters.pump_repeat, - parameters.checker_pattern, - ) - - parameters.total_num_images = datasetsizei24( - parameters.num_exposures, parameters.chip, parameters.map_type - ) - - start_time = yield from start_i24( - zebra, aperture, backlight, beamstop, detector_stage, shutter, parameters, dcid - ) - - logger.info("Moving to Start") - yield from bps.trigger(pmac.to_xyz_zero) - sleep(2.0) - - prog_num = get_prog_num( - parameters.chip.chip_type, parameters.map_type, parameters.pump_repeat - ) - - # Now ready for data collection. Open fast shutter (zebra gate) - logger.info("Opening fast shutter.") - yield from open_fast_shutter(zebra) - - # Kick off the StartOfCollect script - logger.debug("Notify DCID of the start of the collection.") - dcid.notify_start() - - wavelength = yield from bps.rd(dcm.wavelength_in_a) - if parameters.detector_name == "eiger": - logger.debug("Start nexus writing service.") - call_nexgen( - chip_prog_dict, - start_time, - parameters, - wavelength, - ) - - timeout_time = calculate_collection_timeout(parameters) - logger.info(f"Run PMAC with program number {prog_num}") - yield from bps.abs_set(pmac.run_program, prog_num, timeout_time, wait=True) - - logger.debug("Collection completed without errors.") - - -@log.log_on_entry -def collection_complete_plan( - dcid: DCID, collection_directory: Path, map_type: MappingType -) -> MsgGenerator: - end_time = datetime.now() - logger.debug("Collection end time %s" % end_time) - dcid.collection_complete(end_time, aborted=False) - - # Copy parameter file and eventual chip map to collection directory - copy_files_to_data_location(collection_directory, map_type=map_type) - yield from bps.null() - - -@log.log_on_entry -def tidy_up_after_collection_plan( - zebra: Zebra, - pmac: PMAC, - shutter: HutchShutter, - dcm: DCM, - parameters: FixedTargetParameters, - dcid: DCID, -) -> MsgGenerator: - """A plan to be run to tidy things up at the end af a fixed target collection, \ - both successful or aborted. - """ - logger.info("Closing fast shutter") - yield from close_fast_shutter(zebra) - sleep(2.0) - - # This probably should go in main then - if parameters.detector_name == "pilatus": - logger.debug("Pilatus Acquire STOP") - caput(pv.pilat_acquire, 0) - elif parameters.detector_name == "eiger": - logger.debug("Eiger Acquire STOP") - caput(pv.eiger_acquire, 0) - caput(pv.eiger_ODcapture, "Done") - sleep(0.5) - - yield from finish_i24(zebra, pmac, shutter, dcm, parameters) - - logger.debug("Notify DCID of end of collection.") - dcid.notify_end() - - logger.debug("Quick summary of settings") - logger.debug(f"Chip name = {parameters.filename} sub_dir = {parameters.directory}") - - -def run_fixed_target_plan( - zebra: Zebra = inject("zebra"), - pmac: PMAC = inject("pmac"), - aperture: Aperture = inject("aperture"), - backlight: DualBacklight = inject("backlight"), - beamstop: Beamstop = inject("beamstop"), - detector_stage: DetectorMotion = inject("detector_motion"), - shutter: HutchShutter = inject("shutter"), - dcm: DCM = inject("dcm"), -) -> MsgGenerator: - setup_logging() - - logger.info("Getting parameters from file.") - parameters = FixedTargetParameters.from_file(PARAM_FILE_PATH_FT / PARAM_FILE_NAME) - - log_msg = f""" - Parameters for I24 serial collection: \n - Chip name is {parameters.filename} - visit = {parameters.visit} - sub_dir = {parameters.directory} - n_exposures = {parameters.num_exposures} - chip_type = {str(parameters.chip.chip_type)} - map_type = {str(parameters.map_type)} - dcdetdist = {parameters.detector_distance_mm} - exptime = {parameters.exposure_time_s} - det_type = {parameters.detector_name} - pump_repeat = {str(parameters.pump_repeat)} - pumpexptime = {parameters.laser_dwell_s} - pumpdelay = {parameters.laser_delay_s} - prepumpexptime = {parameters.pre_pump_exposure_s} - """ - logger.info(log_msg) - - # DCID instance - do not create yet - dcid = DCID( - emit_errors=False, - ssx_type=SSXType.FIXED, - detector=parameters.detector_name, - ) - - yield from bpp.contingency_wrapper( - main_fixed_target_plan( - zebra, - pmac, - aperture, - backlight, - beamstop, - detector_stage, - shutter, - dcm, - parameters, - dcid, - ), - except_plan=lambda e: (yield from run_aborted_plan(pmac, dcid)), - final_plan=lambda: ( - yield from tidy_up_after_collection_plan( - zebra, pmac, shutter, dcm, parameters, dcid - ) - ), - auto_raise=False, - ) diff --git a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py b/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py deleted file mode 100755 index 795041e13..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +++ /dev/null @@ -1,1031 +0,0 @@ -""" -Chip manager for fixed target -This version changed to python3 March2020 by RLO -""" - -import json -import logging -import re -import shutil -import sys -import time -from pathlib import Path -from pprint import pformat -from time import sleep -from typing import Tuple - -import bluesky.plan_stubs as bps -import numpy as np -from blueapi.core import MsgGenerator -from dodal.beamlines import i24 -from dodal.common import inject -from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions -from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion -from dodal.devices.i24.pmac import PMAC, EncReset, LaserSettings - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.fixed_target import i24ssx_Chip_Mapping_py3v1 as mapping -from mx_bluesky.I24.serial.fixed_target import i24ssx_Chip_StartUp_py3v1 as startup -from mx_bluesky.I24.serial.fixed_target.ft_utils import ( - ChipType, - Fiducials, - MappingType, -) -from mx_bluesky.I24.serial.parameters import get_chip_format -from mx_bluesky.I24.serial.parameters.constants import ( - CS_FILES_PATH, - FULLMAP_PATH, - LITEMAP_PATH, - PARAM_FILE_NAME, - PARAM_FILE_PATH_FT, - PVAR_FILE_PATH, -) -from mx_bluesky.I24.serial.setup_beamline import Pilatus, caget, caput, pv -from mx_bluesky.I24.serial.setup_beamline.setup_detector import get_detector_type - -logger = logging.getLogger("I24ssx.chip_manager") - -# An approximation of the chip size for the move during fiducials alignment. -CHIP_MOVES = { - ChipType.Oxford: 25.40, - ChipType.OxfordInner: 24.60, - ChipType.Custom: 25.40, - ChipType.Minichip: 25.40, -} -CHIPTYPE_PV = pv.me14e_gp1 -MAPTYPE_PV = pv.me14e_gp2 -NUM_EXPOSURES_PV = pv.me14e_gp3 -PUMP_REPEAT_PV = pv.me14e_gp4 -MAP_FILEPATH_PV = pv.me14e_gp5 - - -def setup_logging(): - # Log should now change name daily. - logfile = time.strftime("i24fixedtarget_%d%B%y.log").lower() - log.config(logfile) - - -@log.log_on_entry -def initialise_stages( - pmac: PMAC = inject("pmac"), -) -> MsgGenerator: - """Initialise the portable stages PVs, usually used only once right after setting \ - up the stages either after use at different facility. - """ - setup_logging() - group = "initialise_stages" - logger.info("Setting velocity, acceleration and limits for stages") - - yield from bps.abs_set(pmac.x.velocity, 20, group=group) - yield from bps.abs_set(pmac.y.velocity, 20, group=group) - yield from bps.abs_set(pmac.z.velocity, 20, group=group) - yield from bps.abs_set(pmac.x.acceleration_time, 0.01, group=group) - yield from bps.abs_set(pmac.y.acceleration_time, 0.01, group=group) - yield from bps.abs_set(pmac.z.acceleration_time, 0.01, group=group) - yield from bps.abs_set(pmac.x.high_limit_travel, 30, group=group) - yield from bps.abs_set(pmac.x.low_limit_travel, -29, group=group) - yield from bps.abs_set(pmac.y.high_limit_travel, 30, group=group) - yield from bps.abs_set(pmac.y.low_limit_travel, -30, group=group) - yield from bps.abs_set(pmac.z.high_limit_travel, 5.1, group=group) - yield from bps.abs_set(pmac.z.low_limit_travel, -4.1, group=group) - caput(CHIPTYPE_PV, 1) # chip type - caput(MAPTYPE_PV, 0) # map type - caput(NUM_EXPOSURES_PV, 1) # num exposures - caput(PUMP_REPEAT_PV, 0) # pump repeat - caput(pv.me14e_filepath, "test") - caput(pv.me14e_chip_name, "albion") - caput(pv.me14e_dcdetdist, 1480) - caput(pv.me14e_exptime, 0.01) - yield from bps.abs_set(pmac.enc_reset, EncReset.ENC5, group=group) - yield from bps.abs_set(pmac.enc_reset, EncReset.ENC6, group=group) - yield from bps.abs_set(pmac.enc_reset, EncReset.ENC7, group=group) - yield from bps.abs_set(pmac.enc_reset, EncReset.ENC8, group=group) - - caput(pv.pilat_cbftemplate, 0) - - sleep(0.1) - logger.info("Clearing General Purpose PVs 1-120") - for i in range(4, 120): - pvar = "ME14E-MO-IOC-01:GP" + str(i) - caput(pvar, 0) - sys.stdout.write(".") - sys.stdout.flush() - - logger.info("Initialisation of the stages complete") - yield from bps.wait(group=group) - - -@log.log_on_entry -def write_parameter_file( - detector_stage: DetectorMotion = inject("detector_motion"), -) -> MsgGenerator: - setup_logging() - param_path: Path = PARAM_FILE_PATH_FT - # Create directory if it doesn't yet exist. - param_path.mkdir(parents=True, exist_ok=True) - - logger.info( - "Writing Parameter File: %s" % (param_path / PARAM_FILE_NAME).as_posix() - ) - - filename = caget(pv.me14e_chip_name) - det_type = yield from get_detector_type(detector_stage) - chip_params = get_chip_format(ChipType(int(caget(CHIPTYPE_PV)))) - map_type = caget(MAPTYPE_PV) - - # If file name ends in a digit this causes processing/pilatus pain. - # Append an underscore - if isinstance(det_type, Pilatus): - caput(pv.pilat_cbftemplate, 0) - m = re.search(r"\d+$", filename) - if m is not None: - # Note for future reference. Appending underscore causes more hassle and - # high probability of users accidentally overwriting data. Use a dash - filename = filename + "-" - logger.debug( - "Requested filename ends in a number. Appended dash: %s" % filename - ) - - params_dict = { - "visit": log._read_visit_directory_from_file().as_posix(), - "directory": caget(pv.me14e_filepath), - "filename": filename, - "exposure_time_s": caget(pv.me14e_exptime), - "detector_distance_mm": caget(pv.me14e_dcdetdist), - "detector_name": str(det_type), - "num_exposures": caget(NUM_EXPOSURES_PV), - "chip": chip_params.dict(), - "map_type": map_type, - "pump_repeat": caget(PUMP_REPEAT_PV), - "checker_pattern": bool(caget(pv.me14e_gp111)), - "laser_dwell_s": caget(pv.me14e_gp103), - "laser_delay_s": caget(pv.me14e_gp110), - "pre_pump_exposure_s": caget(pv.me14e_gp109), - } - - with open(param_path / PARAM_FILE_NAME, "w") as f: - json.dump(params_dict, f, indent=4) - - logger.info("Information written to file \n") - logger.info(pformat(params_dict)) - - if map_type == MappingType.Full: - # This step creates some header files (.addr, .spec), containing the parameters, - # that are only needed when full mapping is in use. - logger.info("Full mapping in use. Running start up now.") - startup.run() - yield from bps.null() - - -def scrape_pvar_file(fid: str, pvar_dir: Path = PVAR_FILE_PATH): - block_start_list = [] - - with open(pvar_dir / fid, "r") as f: - lines = f.readlines() - for line in lines: - line = line.rstrip() - if line.startswith("#"): - continue - elif line.startswith("P3000"): - continue - elif line.startswith("P3011"): - continue - elif not len(line.split(" ")) == 2: - continue - else: - entry = line.split(" ") - block_num = entry[0][2:4] - x = entry[0].split("=")[1] - y = entry[1].split("=")[1] - block_start_list.append([block_num, x, y]) - return block_start_list - - -@log.log_on_entry -def define_current_chip( - chipid: str = "oxford", - pmac: PMAC = inject("pmac"), -) -> MsgGenerator: - setup_logging() - logger.debug("Run load stock map for just the first block") - yield from load_stock_map("Just The First Block") - """ - Not sure what this is for: - print 'Setting Mapping Type to Lite' - caput(pv.me14e_gp2, 1) - """ - chip_type = int(caget(CHIPTYPE_PV)) - logger.info("Chip type:%s Chipid:%s" % (chip_type, chipid)) - if chipid == "oxford": - caput(CHIPTYPE_PV, 0) - - with open(PVAR_FILE_PATH / f"{chipid}.pvar", "r") as f: - logger.info("Opening %s.pvar" % chipid) - for line in f.readlines(): - if line.startswith("#"): - continue - line_from_file = line.rstrip("\n") - logger.info("%s" % line_from_file) - yield from bps.abs_set(pmac.pmac_string, line_from_file) - - -@log.log_on_entry -def save_screen_map() -> MsgGenerator: - setup_logging() - litemap_path: Path = LITEMAP_PATH - litemap_path.mkdir(parents=True, exist_ok=True) - - logger.info("Saving %s currentchip.map" % litemap_path.as_posix()) - with open(litemap_path / "currentchip.map", "w") as f: - logger.debug("Printing only blocks with block_val == 1") - for x in range(1, 82): - block_str = "ME14E-MO-IOC-01:GP%i" % (x + 10) - block_val = int(caget(block_str)) - if block_val == 1: - logger.info("%s %d" % (block_str, block_val)) - line = "%02dstatus P3%02d1 \t%s\n" % (x, x, block_val) - f.write(line) - yield from bps.null() - - -@log.log_on_entry -def upload_parameters( - chipid: str = "oxford", - pmac: PMAC = inject("pmac"), -) -> MsgGenerator: - setup_logging() - logger.info("Uploading Parameters to the GeoBrick") - if chipid == "oxford": - caput(CHIPTYPE_PV, 0) - width = 8 - - map_file: Path = LITEMAP_PATH / "currentchip.map" - if not map_file.exists(): - raise FileNotFoundError(f"The file {map_file} has not yet been created") - - with open(map_file, "r") as f: - logger.info("Chipid %s" % chipid) - logger.info("width %d" % width) - x = 1 - for line in f.readlines()[: width**2]: - cols = line.split() - pvar = cols[1] - value = cols[2] - s = pvar + "=" + value - if value != "1": - s2 = pvar + " " - sys.stdout.write(s2) - else: - sys.stdout.write(s + " ") - sys.stdout.flush() - if x == width: - print() - x = 1 - else: - x += 1 - yield from bps.abs_set(pmac.pmac_string, s, wait=True) - sleep(0.02) - - logger.warning("Automatic Setting Mapping Type to Lite has been disabled") - logger.debug("Upload parameters done.") - yield from bps.null() - - -@log.log_on_entry -def upload_full(pmac: PMAC = None) -> MsgGenerator: - setup_logging() - if not pmac: - pmac = i24.pmac() - - map_file: Path = FULLMAP_PATH / "currentchip.full" - if not map_file.exists(): - raise FileNotFoundError(f"The file {map_file} has not yet been created") - with open(map_file, "r") as fh: - f = fh.readlines() - - for i in range(len(f) // 2): - pmac_list = [] - for j in range(2): - pmac_list.append(f.pop(0).rstrip("\n")) - writeline = " ".join(pmac_list) - logger.info("%s" % writeline) - yield from bps.abs_set(pmac.pmac_string, writeline, wait=True) - yield from bps.sleep(0.02) - logger.debug("Upload fullmap done") - yield from bps.null() - - -@log.log_on_entry -def load_stock_map(map_choice: str = "clear") -> MsgGenerator: - # TODO See https://github.com/DiamondLightSource/mx_bluesky/issues/122 - setup_logging() - logger.info("Adjusting Lite Map EDM Screen") - logger.debug("Please wait, adjusting lite map") - # - r33 = [19, 18, 17, 26, 31, 32, 33, 24, 25] - r55 = [9, 10, 11, 12, 13, 16, 27, 30, 41, 40, 39, 38, 37, 34, 23, 20] + r33 - r77 = [ - 7, - 6, - 5, - 4, - 3, - 2, - 1, - 14, - 15, - 28, - 29, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 36, - 35, - 22, - 21, - 8, - ] + r55 - # - h33 = [3, 2, 1, 6, 7, 8, 9, 4, 5] - x33 = [31, 32, 33, 40, 51, 50, 49, 42, 41] - x55 = [25, 24, 23, 22, 21, 34, 39, 52, 57, 58, 59, 60, 61, 48, 43, 30] + x33 - x77 = [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 20, - 35, - 38, - 53, - 56, - 71, - 70, - 69, - 68, - 67, - 66, - 65, - 62, - 47, - 44, - 29, - 26, - ] + x55 - x99 = [ - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1, - 18, - 19, - 36, - 37, - 54, - 55, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 64, - 63, - 46, - 45, - 28, - 27, - 10, - ] + x77 # noqa - x44 = [22, 21, 20, 19, 30, 35, 46, 45, 44, 43, 38, 27, 28, 29, 36, 37] - x49 = [x + 1 for x in range(49)] - x66 = [ - 10, - 11, - 12, - 13, - 14, - 15, - 18, - 31, - 34, - 47, - 50, - 51, - 52, - 53, - 54, - 55, - 42, - 39, - 26, - 23, - ] + x44 - x88 = [ - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1, - 16, - 17, - 32, - 33, - 48, - 49, - 64, - 63, - 62, - 61, - 60, - 59, - 58, - 57, - 56, - 41, - 40, - 25, - 24, - 9, - ] + x66 - # - # Columns for doing half chips - c1 = [1, 2, 3, 4, 5, 6, 7, 8] - c2 = [9, 10, 11, 12, 13, 14, 15, 16] - c3 = [17, 18, 19, 20, 21, 22, 23, 24] - c4 = [25, 26, 27, 28, 29, 30, 31, 32] - c5 = [33, 34, 35, 36, 37, 38, 39, 40] - c6 = [41, 42, 43, 44, 45, 46, 47, 48] - c7 = [49, 50, 51, 52, 53, 54, 55, 56] - c8 = [57, 58, 59, 60, 61, 62, 63, 64] - half1 = c1 + c2 + c3 + c4 - half2 = c5 + c6 + c7 + c8 - - map_dict = {} - map_dict["Just The First Block"] = [1] - map_dict["clear"] = [] - # - map_dict["r33"] = r33 - map_dict["r55"] = r55 - map_dict["r77"] = r77 - # - map_dict["h33"] = h33 - # - map_dict["x33"] = x33 - map_dict["x44"] = x44 - map_dict["x49"] = x49 - map_dict["x55"] = x55 - map_dict["x66"] = x66 - map_dict["x77"] = x77 - map_dict["x88"] = x88 - map_dict["x99"] = x99 - - map_dict["half1"] = half1 - map_dict["half2"] = half2 - - logger.info("Clearing GP 10-74") # Actually 11-44 - for i in range(1, 65): - pvar = "ME14E-MO-IOC-01:GP" + str(i + 10) - caput(pvar, 0) - sys.stdout.write(".") - sys.stdout.flush() - logger.info("Map cleared") - logger.info("Loading Map Choice %s" % map_choice) - for i in map_dict[map_choice]: - pvar = "ME14E-MO-IOC-01:GP" + str(i + 10) - caput(pvar, 1) - logger.debug("Load stock map done.") - yield from bps.null() - - -@log.log_on_entry -def load_lite_map() -> MsgGenerator: - setup_logging() - logger.debug("Run load stock map with 'clear' setting.") - yield from load_stock_map("clear") - # fmt: off - # Oxford_block_dict is wrong (columns and rows need to flip) added in script below to generate it automatically however kept this for backwards compatiability/reference - oxford_block_dict = { # noqa: F841 - 'A1': '01', 'A2': '02', 'A3': '03', 'A4': '04', 'A5': '05', 'A6': '06', 'A7': '07', 'A8': '08', - 'B1': '16', 'B2': '15', 'B3': '14', 'B4': '13', 'B5': '12', 'B6': '11', 'B7': '10', 'B8': '09', - 'C1': '17', 'C2': '18', 'C3': '19', 'C4': '20', 'C5': '21', 'C6': '22', 'C7': '23', 'C8': '24', - 'D1': '32', 'D2': '31', 'D3': '30', 'D4': '29', 'D5': '28', 'D6': '27', 'D7': '26', 'D8': '25', - 'E1': '33', 'E2': '34', 'E3': '35', 'E4': '36', 'E5': '37', 'E6': '38', 'E7': '39', 'E8': '40', - 'F1': '48', 'F2': '47', 'F3': '46', 'F4': '45', 'F5': '44', 'F6': '43', 'F7': '42', 'F8': '41', - 'G1': '49', 'G2': '50', 'G3': '51', 'G4': '52', 'G5': '53', 'G6': '54', 'G7': '55', 'G8': '56', - 'H1': '64', 'H2': '63', 'H3': '62', 'H4': '61', 'H5': '60', 'H6': '59', 'H7': '58', 'H8': '57', - } - # fmt: on - chip_type = int(caget(CHIPTYPE_PV)) - if chip_type in [ChipType.Oxford, ChipType.OxfordInner]: - logger.info("Oxford Block Order") - rows = ["A", "B", "C", "D", "E", "F", "G", "H"] - columns = list(range(1, 10)) - btn_names = {} - flip = True - for x, column in enumerate(columns): - for y, row in enumerate(rows): - i = x * 8 + y - if i % 8 == 0 and flip is False: - flip = True - z = 8 - (y + 1) - elif i % 8 == 0 and flip is True: - flip = False - z = y - elif flip is False: - z = y - elif flip is True: - z = 8 - (y + 1) - else: - logger.warning("Problem in Chip Grid Creation") - break - button_name = str(row) + str(column) - lab_num = x * 8 + z - label = "%02.d" % (lab_num + 1) - btn_names[button_name] = label - block_dict = btn_names - - litemap_fid = f"{caget(MAP_FILEPATH_PV)}.lite" - logger.info("Please wait, loading LITE map") - logger.debug("Loading Lite Map") - logger.info("Opening %s" % (LITEMAP_PATH / litemap_fid)) - with open(LITEMAP_PATH / litemap_fid, "r") as fh: - f = fh.readlines() - for line in f: - entry = line.split() - block_name = entry[0] - yesno = entry[1] - block_num = block_dict[block_name] - pvar = "ME14E-MO-IOC-01:GP" + str(int(block_num) + 10) - logger.info("Block: %s \tScanned: %s \tPVAR: %s" % (block_name, yesno, pvar)) - logger.debug("Load lite map done") - yield from bps.null() - - -@log.log_on_entry -def load_full_map() -> MsgGenerator: - setup_logging() - params = startup.read_parameter_file() - - fullmap_fid = FULLMAP_PATH / f"{caget(MAP_FILEPATH_PV)}.spec" - logger.info("Opening %s" % fullmap_fid) - mapping.plot_file(fullmap_fid, params.chip.chip_type.value) - mapping.convert_chip_to_hex(fullmap_fid, params.chip.chip_type.value) - shutil.copy2(fullmap_fid.with_suffix(".full"), FULLMAP_PATH / "currentchip.full") - logger.info( - "Copying %s to %s" - % (fullmap_fid.with_suffix(".full"), FULLMAP_PATH / "currentchip.full") - ) - logger.debug("Load full map done") - yield from bps.null() - - -@log.log_on_entry -def moveto(place: str = "origin", pmac: PMAC = inject("pmac")) -> MsgGenerator: - setup_logging() - logger.info(f"Move to: {place}") - if place == Fiducials.zero: - logger.info("Chip aspecific move.") - yield from bps.trigger(pmac.to_xyz_zero) - return - - chip_type = ChipType(int(caget(CHIPTYPE_PV))) - logger.info(f"Chip type is {chip_type}") - if chip_type not in list(ChipType): - logger.warning("Unknown chip_type move") - return - - logger.info(f"{str(chip_type)} Move") - chip_move = CHIP_MOVES[chip_type] - - if place == Fiducials.origin: - yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0) - if place == Fiducials.fid1: - yield from bps.mv(pmac.x, chip_move, pmac.y, 0.0) - if place == Fiducials.fid2: - yield from bps.mv(pmac.x, 0.0, pmac.y, chip_move) - - -@log.log_on_entry -def moveto_preset( - place: str, - pmac: PMAC = inject("pmac"), - beamstop: Beamstop = inject("beamstop"), - backlight: DualBacklight = inject("backlight"), - det_stage: DetectorMotion = inject("detector_motion"), -) -> MsgGenerator: - setup_logging() - - # Non Chip Specific Move - if place == "zero": - logger.info("Moving to %s" % place) - yield from bps.trigger(pmac.to_xyz_zero) - - elif place == "load_position": - logger.info("load position") - yield from bps.abs_set( - beamstop.pos_select, BeamstopPositions.ROBOT, group=place - ) - yield from bps.abs_set(backlight, BacklightPositions.OUT, group=place) - yield from bps.abs_set(det_stage.z, 1300, group=place) - yield from bps.wait(group=place) - - elif place == "collect_position": - logger.info("collect position") - caput(pv.me14e_filter, 20) - yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0, pmac.z, 0.0) - yield from bps.abs_set( - beamstop.pos_select, BeamstopPositions.DATA_COLLECTION, group=place - ) - yield from bps.abs_set(backlight, BacklightPositions.IN, group=place) - yield from bps.wait(group=place) - - elif place == "microdrop_position": - logger.info("microdrop align position") - yield from bps.mv(pmac.x, 6.0, pmac.y, -7.8, pmac.z, 0.0) - - -@log.log_on_entry -def laser_control(laser_setting: str, pmac: PMAC = inject("pmac")) -> MsgGenerator: - setup_logging() - logger.info("Move to: %s" % laser_setting) - if laser_setting == "laser1on": # these are in laser edm - logger.info("Laser 1 /BNC2 shutter is open") - # Use M712 = 0 if triggering on falling edge. M712 =1 if on rising edge - # Be sure to also change laser1off - # caput(pv.me14e_pmac_str, ' M712=0 M711=1') - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_1_ON, wait=True) - - elif laser_setting == "laser1off": - logger.info("Laser 1 shutter is closed") - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_1_OFF, wait=True) - - elif laser_setting == "laser2on": - logger.info("Laser 2 / BNC3 shutter is open") - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_2_ON, wait=True) - - elif laser_setting == "laser2off": - logger.info("Laser 2 shutter is closed") - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_2_OFF, wait=True) - - elif laser_setting == "laser1burn": - led_burn_time = caget(pv.me14e_gp103) - logger.info("Laser 1 on") - logger.info("Burn time is %s s" % led_burn_time) - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_1_ON, wait=True) - yield from bps.sleep(led_burn_time) - logger.info("Laser 1 off") - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_1_OFF, wait=True) - - elif laser_setting == "laser2burn": - led_burn_time = caget(pv.me14e_gp109) - logger.info("Laser 2 on") - logger.info("burntime %s s" % led_burn_time) - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_2_ON, wait=True) - yield from bps.sleep(led_burn_time) - logger.info("Laser 2 off") - yield from bps.abs_set(pmac.laser, LaserSettings.LASER_2_OFF, wait=True) - - -@log.log_on_entry -def scrape_mtr_directions(motor_file_path: Path = CS_FILES_PATH): - with open(motor_file_path / "motor_direction.txt", "r") as f: - lines = f.readlines() - mtr1_dir, mtr2_dir, mtr3_dir = 1.0, 1.0, 1.0 - for line in lines: - if line.startswith("mtr1"): - mtr1_dir = float(line.split("=")[1]) - elif line.startswith("mtr2"): - mtr2_dir = float(line.split("=")[1]) - elif line.startswith("mtr3"): - mtr3_dir = float(line.split("=")[1]) - else: - continue - logger.debug("mt1_dir %s mtr2_dir %s mtr3_dir %s" % (mtr1_dir, mtr2_dir, mtr3_dir)) - return mtr1_dir, mtr2_dir, mtr3_dir - - -@log.log_on_entry -def fiducial(point: int = 1, pmac: PMAC = inject("pmac")) -> MsgGenerator: - setup_logging() - scale = 10000.0 # noqa: F841 - - mtr1_dir, mtr2_dir, mtr3_dir = scrape_mtr_directions(CS_FILES_PATH) - - rbv_1 = yield from bps.rd(pmac.x.user_readback) - rbv_2 = yield from bps.rd(pmac.y.user_readback) - rbv_3 = yield from bps.rd(pmac.z.user_readback) - - output_param_path = PARAM_FILE_PATH_FT - output_param_path.mkdir(parents=True, exist_ok=True) - logger.info("Writing Fiducial File %s/fiducial_%s.txt" % (output_param_path, point)) - logger.info("MTR\tRBV\tRAW\tCorr\tf_value") - logger.info("MTR1\t%1.4f\t%i" % (rbv_1, mtr1_dir)) - logger.info("MTR2\t%1.4f\t%i" % (rbv_2, mtr2_dir)) - logger.info("MTR3\t%1.4f\t%i" % (rbv_3, mtr3_dir)) - - with open(output_param_path / f"fiducial_{point}.txt", "w") as f: - f.write("MTR\tRBV\tCorr\n") - f.write("MTR1\t%1.4f\t%i\n" % (rbv_1, mtr1_dir)) - f.write("MTR2\t%1.4f\t%i\n" % (rbv_2, mtr2_dir)) - f.write("MTR3\t%1.4f\t%i" % (rbv_3, mtr3_dir)) - logger.info(f"Fiducial {point} set.") - yield from bps.null() - - -def scrape_mtr_fiducials( - point: int, param_path: Path = PARAM_FILE_PATH_FT -) -> Tuple[float, float, float]: - with open(param_path / f"fiducial_{point}.txt", "r") as f: - f_lines = f.readlines()[1:] - f_x = float(f_lines[0].rsplit()[1]) - f_y = float(f_lines[1].rsplit()[1]) - f_z = float(f_lines[2].rsplit()[1]) - return f_x, f_y, f_z - - -@log.log_on_entry -def cs_maker(pmac: PMAC = inject("pmac")) -> MsgGenerator: - """ - Coordinate system. - - Values for scalex, scaley, scalez, and skew, as well as the sign of - Sx, Sy, Sz are stored in a .json file and should be modified there. - Location of file: src/mx_bluesky/I24/serial/parameters/cs_maker.json - - Theory - Rx: rotation about X-axis, pitch - Ry: rotation about Y-axis, yaw - Rz: rotation about Z-axis, roll - The order of rotation is Roll->Yaw->Pitch (Rx*Ry*Rz) - Rx Ry Rz - |1 0 0| | Cy 0 Sy| |Cz -Sz 0| | CyCz -CxSz Sy | - |0 Cx -Sx|*| 0 1 0|*|Sz Cz 0| = | SxSyCz+CxSz -SxSySz+CxCz -SxCy| - |0 Sx Cx| |-Sy 0 Cy| | 0 0 1| |-CxSyCz+SxSz CxSySz+SxCz CxCy| - - BELOW iS TEST TEST (CLOCKWISE) - Rx Ry Rz - |1 0 0| | Cy 0 -Sy| |Cz Sz 0| | CyCz CxSz -Sy | - |0 Cx Sx|*| 0 1 0|*|-Sz Cz 0| = | SxSyCz-CxSz SxSySz+CxCz SxCy| - |0 -Sx Cx| | Sy 0 Cy| | 0 0 1| | CxSyCz+SxSz CxSySz-SxCz CxCy| - - - Skew: - Skew is the difference between the Sz1 and Sz2 after rotation is taken out. - This should be measured in situ prior to expriment, ie. measure by hand using - opposite and adjacent RBV after calibration of scale factors. - """ - setup_logging() - chip_type = int(caget(CHIPTYPE_PV)) - fiducial_dict = {} - fiducial_dict[0] = [25.400, 25.400] - fiducial_dict[1] = [24.600, 24.600] - fiducial_dict[2] = [25.400, 25.400] - fiducial_dict[3] = [18.25, 18.25] - logger.info("Chip type is %s with size %s" % (chip_type, fiducial_dict[chip_type])) - - mtr1_dir, mtr2_dir, mtr3_dir = scrape_mtr_directions() - f1_x, f1_y, f1_z = scrape_mtr_fiducials(1) - f2_x, f2_y, f2_z = scrape_mtr_fiducials(2) - logger.info("mtr1 direction: %s" % mtr1_dir) - logger.info("mtr2 direction: %s" % mtr2_dir) - logger.info("mtr3 direction: %s" % mtr3_dir) - - # Scale parameters saved in json file - try: - with open(CS_FILES_PATH / "cs_maker.json", "r") as fh: - cs_info = json.load(fh) - except json.JSONDecodeError: - logger.error("Invalid JSON file.") - raise - - try: - scalex, scaley, scalez = ( - float(cs_info["scalex"]), - float(cs_info["scaley"]), - float(cs_info["scalez"]), - ) - skew = float(cs_info["skew"]) - Sx_dir, Sy_dir, Sz_dir = ( - int(cs_info["Sx_dir"]), - int(cs_info["Sy_dir"]), - int(cs_info["Sz_dir"]), - ) - except KeyError: - logger.error("Wrong or missing key in the cs json file.") - raise - - def check_dir(val): - if val not in [1, -1]: - raise ValueError("Wrong value for direction. Please set to either -1 or 1.") - - check_dir(Sx_dir) - check_dir(Sy_dir) - check_dir(Sz_dir) - - # Rotation Around Z - # If stages upsidedown (I24) change sign of Sz - Sz1 = -1 * f1_y / fiducial_dict[chip_type][0] - Sz2 = f2_x / fiducial_dict[chip_type][1] - Sz = Sz_dir * ((Sz1 + Sz2) / 2) - Cz = np.sqrt((1 - Sz**2)) - logger.info("Sz1 , %1.4f, %1.4f" % (Sz1, np.degrees(np.arcsin(Sz1)))) - logger.info("Sz2 , %1.4f, %1.4f" % (Sz2, np.degrees(np.arcsin(Sz2)))) - logger.info("Sz , %1.4f, %1.4f" % (Sz, np.degrees(np.arcsin(Sz)))) - logger.info("Cz , %1.4f, %1.4f" % (Cz, np.degrees(np.arcsin(Cz)))) - # Rotation Around Y - Sy = Sy_dir * f1_z / fiducial_dict[chip_type][0] - Cy = np.sqrt((1 - Sy**2)) - logger.info("Sy , %1.4f, %1.4f" % (Sy, np.degrees(np.arcsin(Sy)))) - logger.info("Cy , %1.4f, %1.4f" % (Cy, np.degrees(np.arcsin(Cy)))) - # Rotation Around X - # If stages upsidedown (I24) change sign of Sx - Sx = Sx_dir * f2_z / fiducial_dict[chip_type][1] - Cx = np.sqrt((1 - Sx**2)) - logger.info("Sx , %1.4f, %1.4f" % (Sx, np.degrees(np.arcsin(Sx)))) - logger.info("Cx , %1.4f, %1.4f" % (Cx, np.degrees(np.arcsin(Cx)))) - - x1factor = mtr1_dir * scalex * (Cy * Cz) - y1factor = mtr2_dir * scaley * (-1.0 * Cx * Sz) - z1factor = mtr3_dir * scalez * Sy - - x2factor = mtr1_dir * scalex * ((Sx * Sy * Cz) + (Cx * Sz)) - y2factor = mtr2_dir * scaley * ((Cx * Cz) - (Sx * Sy * Sz)) - z2factor = mtr3_dir * scalez * (-1.0 * Sx * Cy) - - x3factor = mtr1_dir * scalex * ((Sx * Sz) - (Cx * Sy * Cz)) - y3factor = mtr2_dir * scaley * ((Cx * Sy * Sz) + (Sx * Cz)) - z3factor = mtr3_dir * scalez * (Cx * Cy) - - logger.info("Skew being used is: %1.4f" % skew) - s1 = np.degrees(np.arcsin(Sz1)) - s2 = np.degrees(np.arcsin(Sz2)) - rot = np.degrees(np.arcsin((Sz1 + Sz2) / 2)) - calc_skew = (s1 - rot) - (s2 - rot) - logger.info("s1:%1.4f s2:%1.4f rot:%1.4f" % (s1, s2, rot)) - logger.info("Calculated rotation from current fiducials is: %1.4f" % rot) - logger.info("Calculated Skew from current fiducials is: %1.4f" % calc_skew) - logger.info("Calculated Skew has been known to have the wrong sign") - - sinD = np.sin((skew / 2) * (np.pi / 180)) - cosD = np.cos((skew / 2) * (np.pi / 180)) - new_x1factor = (x1factor * cosD) + (y1factor * sinD) - new_y1factor = (x1factor * sinD) + (y1factor * cosD) - new_x2factor = (x2factor * cosD) + (y2factor * sinD) - new_y2factor = (x2factor * sinD) + (y2factor * cosD) - - cs1 = "#1->%+1.3fX%+1.3fY%+1.3fZ" % (new_x1factor, new_y1factor, z1factor) - cs2 = "#2->%+1.3fX%+1.3fY%+1.3fZ" % (new_x2factor, new_y2factor, z2factor) - cs3 = "#3->%+1.3fX%+1.3fY%+1.3fZ" % (x3factor, y3factor, z3factor) - logger.info("PMAC strings. \ncs1: %s \ncs2: %scs3: %s" % (cs1, cs2, cs3)) - logger.info( - """These next values should be 1. - This is the sum of the squares of the factors divided by their scale.""" - ) - sqfact1 = np.sqrt(x1factor**2 + y1factor**2 + z1factor**2) / scalex - sqfact2 = np.sqrt(x2factor**2 + y2factor**2 + z2factor**2) / scaley - sqfact3 = np.sqrt(x3factor**2 + y3factor**2 + z3factor**2) / scalez - logger.info("%1.4f \n %1.4f \n %1.4f" % (sqfact1, sqfact2, sqfact3)) - logger.debug("Long wait, please be patient") - yield from bps.trigger(pmac.to_xyz_zero) - sleep(2.5) - yield from set_pmac_strings_for_cs(pmac, {"cs1": cs1, "cs2": cs2, "cs3": cs3}) - yield from bps.trigger(pmac.to_xyz_zero) - sleep(0.1) - yield from bps.trigger(pmac.home, wait=True) - sleep(0.1) - logger.debug("Chip_type is %s" % chip_type) - if chip_type == 0: - yield from bps.abs_set(pmac.pmac_string, "!x0.4y0.4", wait=True) - sleep(0.1) - yield from bps.trigger(pmac.home, wait=True) - else: - yield from bps.trigger(pmac.home, wait=True) - logger.debug("CSmaker done.") - yield from bps.null() - - -def cs_reset(pmac: PMAC = inject("pmac")) -> MsgGenerator: - """Used to clear CS when using Custom Chip""" - setup_logging() - cs1 = "#1->10000X+0Y+0Z" - cs2 = "#2->+0X-10000Y+0Z" - cs3 = "#3->0X+0Y-10000Z" - strg = "\n".join([cs1, cs2, cs3]) - print(strg) - yield from set_pmac_strings_for_cs(pmac, {"cs1": cs1, "cs2": cs2, "cs3": cs3}) - logger.debug("CSreset Done") - yield from bps.null() - - -def set_pmac_strings_for_cs(pmac: PMAC, cs_str: dict): - """ A plan to set the pmac_string for the (x,y,z) axes while making or resetting \ - the coordinate system. - - Args: - pmac (PMAC): PMAC device - cs_str (dict): A dictionary containing a string for each axis, in the format: \ - { - "cs1": "#1->1X+0Y+0Z", - "cs2": "#2->...", - "cs3": "#3->...", - } - - Note. On the PMAC the axes allocations are: #1 - X, #2 - Y, #3 - Z. - """ - yield from bps.abs_set(pmac.pmac_string, "&2", wait=True) - yield from bps.abs_set(pmac.pmac_string, cs_str["cs1"], wait=True) - yield from bps.abs_set(pmac.pmac_string, cs_str["cs2"], wait=True) - yield from bps.abs_set(pmac.pmac_string, cs_str["cs3"], wait=True) - - -@log.log_on_entry -def pumpprobe_calc() -> MsgGenerator: - # TODO See https://github.com/DiamondLightSource/mx_bluesky/issues/122 - setup_logging() - logger.info("Calculate and show exposure and dwell time for each option.") - exptime = float(caget(pv.me14e_exptime)) - pumpexptime = float(caget(pv.me14e_gp103)) - movetime = 0.008 - logger.info("X-ray exposure time %s" % exptime) - logger.info("Laser dwell time %s" % pumpexptime) - repeat1 = 2 * 20 * (movetime + (pumpexptime + exptime) / 2) - repeat2 = 4 * 20 * (movetime + (pumpexptime + exptime) / 2) - repeat3 = 6 * 20 * (movetime + (pumpexptime + exptime) / 2) - repeat5 = 10 * 20 * (movetime + (pumpexptime + exptime) / 2) - repeat10 = 20 * 20 * (movetime + (pumpexptime + exptime) / 2) - for pv_name, repeat in ( - (pv.me14e_gp104, repeat1), - (pv.me14e_gp105, repeat2), - (pv.me14e_gp106, repeat3), - (pv.me14e_gp107, repeat5), - (pv.me14e_gp108, repeat10), - ): - rounded = round(repeat, 4) - caput(pv_name, rounded) - logger.info("Repeat (%s): %s s" % (pv_name, rounded)) - logger.debug("PP calculations done") - yield from bps.null() - - -@log.log_on_entry -def block_check(pmac: PMAC = inject("pmac")) -> MsgGenerator: - setup_logging() - # TODO See https://github.com/DiamondLightSource/mx_bluesky/issues/117 - caput(pv.me14e_gp9, 0) - while True: - if int(caget(pv.me14e_gp9)) == 0: - chip_type = int(caget(CHIPTYPE_PV)) - if chip_type == ChipType.Minichip: - logger.info("Oxford mini chip in use.") - block_start_list = scrape_pvar_file("minichip_oxford.pvar") - elif chip_type == ChipType.Custom: - logger.error("This is a custom chip, no block check available!") - raise ValueError( - "Chip type set to 'custom', which has no block check." - "If not using a custom chip, please double check chip in the GUI." - ) - else: - logger.warning("Default is Oxford chip block start list.") - block_start_list = scrape_pvar_file("oxford.pvar") - for entry in block_start_list: - if int(caget(pv.me14e_gp9)) != 0: - logger.warning("Block Check Aborted") - sleep(1.0) - break - block, x, y = entry - logger.debug("Block: %s -> (x=%s y=%s)" % (block, x, y)) - yield from bps.abs_set(pmac.pmac_string, f"!x{x}y{y}", wait=True) - time.sleep(0.4) - else: - logger.warning("Block Check Aborted due to GP 9 not equalling 0") - break - break - logger.debug("Block check done") - yield from bps.null() - - -# setup_logging now called in all functions. -# TODO See logging issue on blueapi -# https://github.com/DiamondLightSource/blueapi/issues/494 diff --git a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py b/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py deleted file mode 100755 index 117742f30..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +++ /dev/null @@ -1,161 +0,0 @@ -""" -Chip mapping utilities for fixed target - -This version changed to python3 March2020 by RLO -""" - -import logging -import time - -import numpy as np -from matplotlib import pyplot as plt - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType -from mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_StartUp_py3v1 import ( - check_files, - get_shot_order, - get_xy, - read_parameter_file, - write_file, -) -from mx_bluesky.I24.serial.parameters import get_chip_format -from mx_bluesky.I24.serial.parameters.constants import PARAM_FILE_PATH_FT - -logger = logging.getLogger("I24ssx.chip_mapping") - - -def setup_logging(): - # Log should now change name daily. - logfile = time.strftime("i24_%Y_%m_%d.log").lower() - log.config(logfile) - - -@log.log_on_entry -def read_file_make_dict(fid, chip_type, switch=False): - a_dict = {} - b_dict = {} - with open(fid, "r") as f: - for line in f.readlines(): - if line.startswith("#"): - continue - else: - entry = line.rstrip().split() - addr = entry[0][-5:] - pres = entry[4] - x, y = get_xy(addr, chip_type) - a_dict[x, y] = pres - b_dict[addr] = pres - if switch is True: - return b_dict - else: - return a_dict - - -@log.log_on_entry -def plot_file(fid, chip_type): - chip_dict = read_file_make_dict(fid, chip_type) - x_list, y_list, z_list = [], [], [] - for k in sorted(chip_dict.keys()): - x, y = k[0], k[1] - pres = chip_dict[k] - x_list.append(float(x)) - y_list.append(float(y)) - z_list.append(float(pres)) - - X = np.array(x_list) - Y = np.array(y_list) - Z = np.array(z_list) - xr = X.ravel() - yr = Y.ravel() - zr = Z.ravel() - - fig = plt.figure(num=None, figsize=(12, 12), facecolor="0.6", edgecolor="k") - fig.subplots_adjust( - left=0.03, bottom=0.03, right=0.97, top=0.97, wspace=0, hspace=0 - ) - ax1 = fig.add_subplot(111, aspect="equal", axisbg="0.3") - ax1.scatter(xr, yr, c=zr, s=8, alpha=1, marker="s", linewidth=0.1, cmap="winter") - ax1.set_xlim(-1, 26) - ax1.set_ylim(-1, 26) - ax1.invert_yaxis() - check_files(["%s.png" % chip_type]) - plt.savefig("%s.png" % fid[:-5], dpi=200, bbox_inches="tight", pad_inches=0.05) - return 1 - - -@log.log_on_entry -def convert_chip_to_hex(fid, chip_type): - chip_dict = read_file_make_dict(fid, chip_type, True) - chip_format = get_chip_format(ChipType(chip_type)) - check_files(["%s.full" % chip_type]) - with open("%s.full" % fid[:-5], "w") as g: - # Normal - if chip_type in [ChipType.Oxford, ChipType.OxfordInner]: - shot_order_list = get_shot_order(chip_type) - logger.info("Shot Order List: \n") - logger.info("%s" % shot_order_list[:14]) - logger.info("%s" % shot_order_list[-14:]) - for i, k in enumerate(shot_order_list): - if i % 20 == 0: - logger.info("\n") - else: - logger.info("%s" % k) - sorted_pres_list = [] - for addr in shot_order_list: - sorted_pres_list.append(chip_dict[addr]) - - windows_per_block = chip_format.x_num_steps - number_of_lines = len(sorted_pres_list) / windows_per_block - hex_length = windows_per_block / 4 - pad = 7 - hex_length - for i in range(number_of_lines): - sublist = sorted_pres_list[ - i * windows_per_block : (i * windows_per_block) + windows_per_block - ] - if i % 2 == 0: - right_list = sublist - else: - right_list = sublist[::-1] - hex_string = ("{0:0>%sX}" % hex_length).format( - int("".join(str(x) for x in right_list), 2) - ) - hex_string = hex_string + pad * "0" - pvar = 5001 + i - line = "P%s=$%s" % (pvar, hex_string) - g.write(line + "\n") - logger.info("hex string: %s" % (hex_string + 4 * "0")) - logger.info("line number= %s" % i) - logger.info( - "right_list: \n%s\n" % ("".join(str(x) for x in right_list)) - ) - logger.info("PVAR: %s" % line) - if (i + 1) % windows_per_block == 0: - logger.info( - "\n %s" % (40 * (" %i" % ((i / windows_per_block) + 2))) - ) - logger.info("hex_length: %s" % hex_length) - else: - logger.warning("Chip type unknown, no conversion done.") - return 0 - - -def main(): - setup_logging() - params = read_parameter_file() - - check_files([".spec"]) - write_file(suffix=".spec", order="shot") - - logger.info("PARAMETER PATH = %s" % PARAM_FILE_PATH_FT) - fid = PARAM_FILE_PATH_FT / f"{params.filename}.spec" - logger.info("FID = %s" % fid) - - plot_file(fid, params.chip.chip_type.value) - convert_chip_to_hex(fid, params.chip.chip_type.value) - - -if __name__ == "__main__": - main() - plt.show() -plt.close() diff --git a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py b/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py deleted file mode 100755 index f23631293..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +++ /dev/null @@ -1,321 +0,0 @@ -""" -Startup utilities for chip -""" - -import logging -import os -import string -import time -from pathlib import Path -from typing import List - -import numpy as np - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType -from mx_bluesky.I24.serial.parameters import FixedTargetParameters, get_chip_format -from mx_bluesky.I24.serial.parameters.constants import ( - HEADER_FILES_PATH, - PARAM_FILE_NAME, - PARAM_FILE_PATH_FT, -) - -logger = logging.getLogger("I24ssx.chip_startup") - - -def setup_logging(): - # Log should now change name daily. - logfile = time.strftime("i24fixedtarget_%d%B%y.log").lower() - log.config(logfile) - - -def read_parameter_file( - param_path: Path | str = PARAM_FILE_PATH_FT, -) -> FixedTargetParameters: - if not isinstance(param_path, Path): - param_path = Path(param_path) - params_file = param_path / PARAM_FILE_NAME - params = FixedTargetParameters.from_file(params_file) - return params - - -@log.log_on_entry -def fiducials(chip_type: int): - if chip_type in [ChipType.Oxford, ChipType.OxfordInner, ChipType.Minichip]: - fiducial_list: list = [] - # No fiducial for custom - elif chip_type == ChipType.Custom: - logger.warning("No fiducials for custom chip") - else: - logger.warning(f"Unknown chip_type, {chip_type}, in fiducials") - return fiducial_list - - -def get_xy(addr: str, chip_type: ChipType): - entry = addr.split("_")[-2:] - R, C = entry[0][0], entry[0][1] - r2, c2 = entry[1][0], entry[1][1] - blockR = string.ascii_uppercase.index(R) - blockC = int(C) - 1 - lowercase_list = list(string.ascii_lowercase + string.ascii_uppercase + "0") - windowR = lowercase_list.index(r2) - windowC = lowercase_list.index(c2) - - chip_params = get_chip_format(chip_type) - - x = ( - (blockC * chip_params.b2b_horz) - + (blockC * (chip_params.x_num_steps - 1) * chip_params.x_step_size) - + (windowC * chip_params.x_step_size) - ) - y = ( - (blockR * chip_params.b2b_vert) - + (blockR * (chip_params.y_num_steps - 1) * chip_params.y_step_size) - + (windowR * chip_params.y_step_size) - ) - return x, y - - -def pathli(l_in=[], way="typewriter", reverse=False): - if reverse is True: - li = list(reversed(l_in)) - else: - li = list(l_in) - long_list = [] - if li: - if way == "typewriter": - for i in range(len(li) ** 2): - long_list.append(li[i % len(li)]) - elif way == "snake": - lr = list(reversed(li)) - for rep in range(len(li)): - if rep % 2 == 0: - long_list += li - else: - long_list += lr - elif way == "snake53": - lr = list(reversed(li)) - for rep in range(53): - if rep % 2 == 0: - long_list += li - else: - long_list += lr - elif way == "expand": - for entry in li: - for rep in range(len(li)): - long_list.append(entry) - elif way == "expand28": - for entry in li: - for rep in range(28): - long_list.append(entry) - elif way == "expand25": - for entry in li: - for rep in range(25): - long_list.append(entry) - else: - logger.warning("No known path, way = %s" % way) - else: - logger.warning("No list written") - return long_list - - -def zippum(list_1_args, list_2_args): - list_1, type_1, reverse_1 = list_1_args - list_2, type_2, reverse_2 = list_2_args - A_path = pathli(list_1, type_1, reverse_1) - B_path = pathli(list_2, type_2, reverse_2) - zipped_list = [] - for a, b in zip(A_path, B_path): - zipped_list.append(a + b) - return zipped_list - - -def get_alphanumeric(chip_type: ChipType): - cell_format = get_chip_format(chip_type) - blk_num = cell_format.x_blocks - wnd_num = cell_format.x_num_steps - uppercase_list = list(string.ascii_uppercase)[:blk_num] - lowercase_list = list(string.ascii_lowercase + string.ascii_uppercase + "0")[ - :wnd_num - ] - number_list = [str(x) for x in range(1, blk_num + 1)] - - block_list = zippum([uppercase_list, "expand", 0], [number_list, "typewriter", 0]) - window_list = zippum( - [lowercase_list, "expand", 0], [lowercase_list, "typewriter", 0] - ) - - alphanumeric_list = [] - for block in block_list: - for window in window_list: - alphanumeric_list.append(block + "_" + window) - logger.info("Length of alphanumeric list = %s" % len(alphanumeric_list)) - return alphanumeric_list - - -@log.log_on_entry -def get_shot_order(chip_type: ChipType): - cell_format = get_chip_format(chip_type) - blk_num = cell_format.x_blocks - wnd_num = cell_format.x_num_steps - uppercase_list = list(string.ascii_uppercase)[:blk_num] - number_list = [str(x) for x in range(1, blk_num + 1)] - lowercase_list = list(string.ascii_lowercase + string.ascii_uppercase + "0")[ - :wnd_num - ] - - block_list = zippum([uppercase_list, "snake", 0], [number_list, "expand", 0]) - window_dn = zippum([lowercase_list, "expand", 0], [lowercase_list, "snake", 0]) - window_up = zippum([lowercase_list, "expand", 1], [lowercase_list, "snake", 0]) - - switch = 0 - count = 0 - collect_list = [] - for block in block_list: - if switch == 0: - for window in window_dn: - collect_list.append(block + "_" + window) - count += 1 - if count == blk_num: - count = 0 - switch = 1 - else: - for window in window_up: - collect_list.append(block + "_" + window) - count += 1 - if count == blk_num: - count = 0 - switch = 0 - - logger.info("Length of collect list = %s" % len(collect_list)) - return collect_list - - -@log.log_on_entry -def write_file( - location: str = "i24", - suffix: str = ".addr", - order: str = "alphanumeric", - param_file_path: Path = PARAM_FILE_PATH_FT, - save_path: Path = HEADER_FILES_PATH, -): - if location == "i24": - params = read_parameter_file(param_file_path) - else: - msg = f"Unknown location, {location}" - logger.error(msg) - raise ValueError(msg) - chip_file_path = save_path / f"chips/{params.directory}/{params.filename}{suffix}" - - fiducial_list = fiducials(params.chip.chip_type.value) - if order == "alphanumeric": - addr_list = get_alphanumeric(params.chip.chip_type) - - elif order == "shot": - addr_list = get_shot_order(params.chip.chip_type) - - with open(chip_file_path, "a") as g: - for addr in addr_list: - xtal_name = "_".join([params.filename, addr]) - (x, y) = get_xy(xtal_name, params.chip.chip_type) - if addr in fiducial_list: - pres = "0" - else: - if "rand" in suffix: - pres = str(np.random.randint(2)) - else: - pres = "-1" - line = "\t".join([xtal_name, str(x), str(y), "0.0", pres]) + "\n" - g.write(line) - - logger.info("Write %s completed" % chip_file_path) - - -@log.log_on_entry -def check_files( - location: str, - suffix_list: List[str], - param_file_path: Path | str = PARAM_FILE_PATH_FT, - save_path: Path = HEADER_FILES_PATH, -): - if location == "i24": - params = read_parameter_file(param_file_path) - else: - msg = f"Unknown location, {location}" - logger.error(msg) - raise ValueError(msg) - chip_file_path = save_path / f"chips/{params.directory}/{params.filename}" - - try: - os.stat(chip_file_path) - except Exception: - os.makedirs(chip_file_path) - for suffix in suffix_list: - full_fid = chip_file_path.with_suffix(suffix) - if full_fid.is_file(): - time_str = time.strftime("%Y%m%d_%H%M%S_") - timestamp_fid = ( # noqa: F841 - full_fid.parent / f"{time_str}_{params.filename}{full_fid.suffix}" - ) - # FIXME hack / fix. Actually move the file - logger.info(f"File {full_fid} Already Exists") - logger.debug("Check files done") - return 1 - - -@log.log_on_entry -def write_headers( - location: str, - suffix_list: List[str], - param_file_path: Path = PARAM_FILE_PATH_FT, - save_path: Path = HEADER_FILES_PATH, -): - if location == "i24": - params = read_parameter_file(param_file_path) - chip_file_path = save_path / f"chips/{params.directory}/{params.filename}" - - for suffix in suffix_list: - full_fid = chip_file_path.with_suffix(suffix) - with open(full_fid, "w") as g: - g.write( - "#23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n#\n" - ) - g.write(f"#&i24\tchip_name = {params.filename}\n") - g.write(f"#&i24\tvisit = {params.visit}\n") - g.write(f"#&i24\tsub_dir = {params.directory}\n") - g.write(f"#&i24\tn_exposures = {params.num_exposures}\n") - g.write(f"#&i24\tchip_type = {params.chip.chip_type.value}\n") - g.write(f"#&i24\tmap_type = {params.map_type.value}\n") - g.write(f"#&i24\tpump_repeat = {params.pump_repeat.value}\n") - g.write(f"#&i24\tpumpexptime = {params.laser_dwell_s}\n") - g.write(f"#&i24\texptime = {params.laser_delay_s}\n") - g.write(f"#&i24\tdcdetdist = {params.detector_distance_mm}\n") - g.write(f"#&i24\tprepumpexptime = {params.pre_pump_exposure_s}\n") - g.write(f"#&i24\tdet_Type = {params.detector_name}\n") - g.write("#\n") - g.write( - "#XtalAddr XCoord YCoord ZCoord Present Shot Spare04 Spare03 Spare02 Spare01\n" - ) - else: - msg = "Unknown location, %s" % location - logger.error(msg) - raise ValueError(msg) - logger.debug("Write headers done") - - -def run(): - logger.debug("Run Startup") - check_files("i24", [".addr", ".shot"]) - logger.info("Checked Files") - write_headers("i24", [".addr", ".shot"]) - logger.info("Written Headers") - logger.info("Writing to Files has been disabled. Headers Only") - # Makes a file with random crystal positions - check_files("i24", ["rando.spec"]) - write_headers("i24", ["rando.spec"]) - logger.debug("StartUp Done") - - -if __name__ == "__main__": - setup_logging() - run() diff --git a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_moveonclick.py b/src/mx_bluesky/I24/serial/fixed_target/i24ssx_moveonclick.py deleted file mode 100755 index 53a73b240..000000000 --- a/src/mx_bluesky/I24/serial/fixed_target/i24ssx_moveonclick.py +++ /dev/null @@ -1,199 +0,0 @@ -""" -Move on click gui for fixed targets at I24 -Robin Owen 12 Jan 2021 -""" - -import logging - -import bluesky.plan_stubs as bps -import cv2 as cv -from bluesky.run_engine import RunEngine -from dodal.beamlines import i24 -from dodal.devices.i24.pmac import PMAC -from dodal.devices.oav.oav_detector import OAV - -from mx_bluesky.I24.serial.fixed_target import i24ssx_Chip_Manager_py3v1 as manager -from mx_bluesky.I24.serial.fixed_target.ft_utils import Fiducials -from mx_bluesky.I24.serial.parameters.constants import OAV1_CAM - -logger = logging.getLogger("I24ssx.moveonclick") - -# Set scale. -# TODO See https://github.com/DiamondLightSource/mx_bluesky/issues/44 -zoomcalibrator = 6 # 8 seems to work well for zoom 2 - - -def _get_beam_centre(oav: OAV): - """Extract the beam centre x/y positions from the display.configuration file. - - Args: - oav (OAV): the OAV device. - """ - return oav.parameters.beam_centre_i, oav.parameters.beam_centre_j - - -# Register clicks and move chip stages -def onMouse(event, x, y, flags, param): - if event == cv.EVENT_LBUTTONUP: - pmac = param[0] - oav = param[1] - beamX, beamY = _get_beam_centre(oav) - logger.info("Clicked X and Y %s %s" % (x, y)) - xmove = -1 * (beamX - x) * zoomcalibrator - ymove = -1 * (beamY - y) * zoomcalibrator - logger.info("Moving X and Y %s %s" % (xmove, ymove)) - xmovepmacstring = "#1J:" + str(xmove) - ymovepmacstring = "#2J:" + str(ymove) - yield from bps.abs_set(pmac.pmac_string, xmovepmacstring, wait=True) - yield from bps.abs_set(pmac.pmac_string, ymovepmacstring, wait=True) - - -def update_ui(oav, frame): - # Get beam x and y values - beamX, beamY = _get_beam_centre(oav) - - # Overlay text and beam centre - cv.ellipse( - frame, (beamX, beamY), (12, 8), 0.0, 0.0, 360, (0, 255, 255), thickness=2 - ) - # putText(frame,'text',bottomLeftCornerOfText, font, fontScale, fontColor, thickness, lineType) - cv.putText( - frame, - "Key bindings", - (20, 40), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 1, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "Q / A : go to / set as f0", - (25, 70), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "W / S : go to / set as f1", - (25, 90), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "E / D : go to / set as f2", - (25, 110), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "I / O : in /out of focus", - (25, 130), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "C : Create CS", - (25, 150), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.putText( - frame, - "esc : close window", - (25, 170), - cv.FONT_HERSHEY_COMPLEX_SMALL, - 0.8, - (0, 255, 255), - 1, - 1, - ) - cv.imshow("OAV1view", frame) - - -def start_viewer(oav1: str = OAV1_CAM): - # Get devices out of dodal - oav: OAV = i24.oav() - pmac: PMAC = i24.pmac() - # Create a video caputure from OAV1 - cap = cv.VideoCapture(oav1) - - # Create window named OAV1view and set onmouse to this - cv.namedWindow("OAV1view") - cv.setMouseCallback("OAV1view", onMouse, param=[pmac, oav]) # type: ignore - - logger.info("Showing camera feed. Press escape to close") - # Read captured video and store them in success and frame - success, frame = cap.read() - - # Loop until escape key is pressed. Keyboard shortcuts here - while success: - success, frame = cap.read() - - update_ui(oav, frame) - - k = cv.waitKey(1) - if k == 113: # Q - yield from manager.moveto(Fiducials.zero, pmac) - if k == 119: # W - yield from manager.moveto(Fiducials.fid1, pmac) - if k == 101: # E - yield from manager.moveto(Fiducials.fid2, pmac) - if k == 97: # A - yield from bps.trigger(pmac.home, wait=True) - print("Current position set as origin") - if k == 115: # S - yield from manager.fiducial(1) - if k == 100: # D - yield from manager.fiducial(2) - if k == 99: # C - yield from manager.cs_maker(pmac) - if k == 98: # B - yield from manager.block_check() # doesn't work well for blockcheck as image doesn't update - if k == 104: # H - yield from bps.abs_set(pmac.pmac_string, "#2J:-10", wait=True) - if k == 110: # N - yield from bps.abs_set(pmac.pmac_string, "#2J:10", wait=True) - if k == 109: # M - yield from bps.abs_set(pmac.pmac_string, "#1J:-10", wait=True) - if k == 98: # B - yield from bps.abs_set(pmac.pmac_string, "#1J:10", wait=True) - if k == 105: # I - yield from bps.abs_set(pmac.pmac_string, "#3J:-150", wait=True) - if k == 111: # O - yield from bps.abs_set(pmac.pmac_string, "#3J:150", wait=True) - if k == 117: # U - yield from bps.abs_set(pmac.pmac_string, "#3J:-1000", wait=True) - if k == 112: # P - yield from bps.abs_set(pmac.pmac_string, "#3J:1000", wait=True) - if k == 0x1B: # esc - cv.destroyWindow("OAV1view") - print("Pressed escape. Closing window") - break - - # Clear cameraCapture instance - cap.release() - - -if __name__ == "__main__": - RE = RunEngine() - RE(start_viewer()) diff --git a/src/mx_bluesky/I24/serial/log.py b/src/mx_bluesky/I24/serial/log.py deleted file mode 100644 index 05799ac97..000000000 --- a/src/mx_bluesky/I24/serial/log.py +++ /dev/null @@ -1,157 +0,0 @@ -import functools -import logging -import logging.config -from os import environ -from pathlib import Path -from typing import Optional - -from bluesky.log import logger as bluesky_logger -from dodal.log import ( - ERROR_LOG_BUFFER_LINES, - set_up_all_logging_handlers, -) -from dodal.log import LOGGER as dodal_logger -from ophyd_async.log import logger as ophyd_async_logger - -VISIT_PATH = Path("/dls_sw/i24/etc/ssx_current_visit.txt") - - -class OphydDebugFilter(logging.Filter): # NOTE yet to be fully tested - """Do not send ophyd debug log messages to stream handler.""" - - def filter(self, record): - return "ophyd" not in record.getMessage().lower() - - -# Logging set up -logger = logging.getLogger("I24ssx") -logger.addHandler(logging.NullHandler()) -logger.parent = dodal_logger - -logging_config = { - "version": 1, - "disable_existing_loggers": False, - "filters": { - "ophyd_filter": { - "()": OphydDebugFilter, - } - }, - "formatters": { - "default": { - "class": "logging.Formatter", - "format": "%(message)s", - } - }, - "handlers": { - "console": { - "level": "DEBUG", - "class": "logging.StreamHandler", - "formatter": "default", - "filters": ["ophyd_filter"], - "stream": "ext://sys.stdout", - } - }, - "loggers": { - "I24ssx": { - "handlers": ["console"], - "level": "DEBUG", - "propagate": True, - } - }, -} - -logging.config.dictConfig(logging_config) - - -def _read_visit_directory_from_file() -> Path: - with open(VISIT_PATH, "r") as f: - visit = f.readline().rstrip() - return Path(visit) - - -def _get_logging_file_path() -> Path: - """Get the path to write the artemis log files to. - If on a beamline, this will be written to the according area depending on the - BEAMLINE envrionment variable. If no envrionment variable is found it will default - it to the tmp/dev directory. - Returns: - logging_path (Path): Path to the log file for the file handler to write to. - """ - beamline: Optional[str] = environ.get("BEAMLINE") - logging_path: Path - - if beamline: - logging_path = _read_visit_directory_from_file() / "tmp/serial/logs" - else: - logging_path = Path("./tmp/logs/") - - Path(logging_path).mkdir(parents=True, exist_ok=True) - return logging_path - - -def integrate_bluesky_and_ophyd_logging(parent_logger: logging.Logger): - """Integrate only bluesky and ophyd_async loggers.""" - for logger in [bluesky_logger, ophyd_async_logger]: - logger.parent = parent_logger - logger.setLevel(logging.DEBUG) - - -def default_logging_setup(dev_mode: bool = False): - """ Default log setup for i24 serial. - - - Set up handlers for parent logger (from dodal) - - integrate bluesky and ophyd loggers - - Remove dodal stream handler to avoid double messages (for now, use only the \ - i24ssx default stream to keep the output expected by the scientists.) - """ - handlers = set_up_all_logging_handlers( # noqa: F841 - dodal_logger, - _get_logging_file_path(), - "dodal.log", - dev_mode, - ERROR_LOG_BUFFER_LINES, - ) - integrate_bluesky_and_ophyd_logging(dodal_logger) - # Remove dodal StreamHandler to avoid duplication of messages above debug - dodal_logger.removeHandler(dodal_logger.handlers[0]) - - -def config( - logfile: str | None = None, - write_mode: str = "a", - delayed: bool = False, - dev_mode: bool = False, -): - """ - Configure the logging. - - Args: - logfile (str, optional): Filename for logfile. If passed, create a file handler\ - for the logger to write to file the log output. Defaults to None. - write_mode (str, optional): String indicating writing mode for the output \ - .log file. Defaults to "a". - dev_mode (bool, optional): If true, will log to graylog on localhost instead \ - of production. Defaults to False. - """ - default_logging_setup(dev_mode=dev_mode) - - if logfile: - logs = _get_logging_file_path() / logfile - fileFormatter = logging.Formatter( - "%(asctime)s %(levelname)s: \t(%(name)s) %(message)s", - datefmt="%d-%m-%Y %I:%M:%S", - ) - FH = logging.FileHandler(logs, mode=write_mode, encoding="utf-8", delay=delayed) - FH.setLevel(logging.DEBUG) - FH.setFormatter(fileFormatter) - logger.addHandler(FH) - - -def log_on_entry(func): - @functools.wraps(func) - def decorator(*args, **kwargs): - name = func.__name__ - logger.debug("Running %s " % name) - return func(*args, **kwargs) - - return decorator diff --git a/src/mx_bluesky/I24/serial/parameters/__init__.py b/src/mx_bluesky/I24/serial/parameters/__init__.py deleted file mode 100644 index 9308f50fa..000000000 --- a/src/mx_bluesky/I24/serial/parameters/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from mx_bluesky.I24.serial.parameters.constants import SSXType -from mx_bluesky.I24.serial.parameters.experiment_parameters import ( - ChipDescription, - ExtruderParameters, - FixedTargetParameters, -) -from mx_bluesky.I24.serial.parameters.utils import get_chip_format - -__all__ = [ - "SSXType", - "ExtruderParameters", - "ChipDescription", - "FixedTargetParameters", - "get_chip_format", -] diff --git a/src/mx_bluesky/I24/serial/parameters/constants.py b/src/mx_bluesky/I24/serial/parameters/constants.py deleted file mode 100644 index 1da55fbdd..000000000 --- a/src/mx_bluesky/I24/serial/parameters/constants.py +++ /dev/null @@ -1,48 +0,0 @@ -from enum import Enum -from os import environ -from pathlib import Path -from typing import Optional - -from mx_bluesky.I24.serial.log import _read_visit_directory_from_file - - -class SSXType(Enum): - FIXED = "Serial Fixed" - EXTRUDER = "Serial Jet" - - -OAV_CONFIG_FILES = { - "zoom_params_file": "/dls_sw/i24/software/gda_versions/gda_9_34/config/xml/jCameraManZoomLevels.xml", - "oav_config_json": "/dls_sw/i24/software/daq_configuration/json/OAVCentring.json", - "display_config": "/dls_sw/i24/software/gda_versions/var/display.configuration", -} -OAV1_CAM = "http://bl24i-di-serv-01.diamond.ac.uk:8080/OAV1.mjpg.mjpg" - -HEADER_FILES_PATH = Path("/dls_sw/i24/scripts/fastchips/").expanduser().resolve() - -INTERNAL_FILES_PATH = Path(__file__).absolute().parent - - -def _params_file_location() -> Path: - beamline: Optional[str] = environ.get("BEAMLINE") - filepath: Path - - if beamline: - filepath = _read_visit_directory_from_file() / "tmp/serial/parameters" - else: - filepath = INTERNAL_FILES_PATH - - filepath.mkdir(parents=True, exist_ok=True) - - return filepath - - -PARAM_FILE_NAME = "parameters.json" -# Paths for rw - these should have been created on startup -PARAM_FILE_PATH = _params_file_location() -PARAM_FILE_PATH_FT = PARAM_FILE_PATH / "fixed_target" -LITEMAP_PATH = PARAM_FILE_PATH_FT / "litemaps" -FULLMAP_PATH = PARAM_FILE_PATH_FT / "fullmaps" -# Paths for r only -PVAR_FILE_PATH = INTERNAL_FILES_PATH / "fixed_target/pvar_files" -CS_FILES_PATH = INTERNAL_FILES_PATH / "fixed_target/cs" diff --git a/src/mx_bluesky/I24/serial/parameters/experiment_parameters.py b/src/mx_bluesky/I24/serial/parameters/experiment_parameters.py deleted file mode 100644 index d03bc37c3..000000000 --- a/src/mx_bluesky/I24/serial/parameters/experiment_parameters.py +++ /dev/null @@ -1,124 +0,0 @@ -import json -from pathlib import Path -from typing import Literal, Optional - -from pydantic import BaseModel, ConfigDict, validator - -from mx_bluesky.I24.serial.fixed_target.ft_utils import ( - ChipType, - MappingType, - PumpProbeSetting, -) - - -class SerialExperiment(BaseModel): - """Generic parameters common to all serial experiments.""" - - visit: Path - directory: str - filename: str - exposure_time_s: float - detector_distance_mm: float - detector_name: Literal["eiger", "pilatus"] - - @validator("visit", pre=True) - def _parse_visit(cls, visit: str | Path): - if isinstance(visit, str): - return Path(visit) - return visit - - @property - def collection_directory(self) -> Path: - return Path(self.visit) / self.directory - - -class LaserExperiment(BaseModel): - """Laser settings for pump probe serial collections.""" - - laser_dwell_s: Optional[float] = None # pump exposure time - laser_delay_s: Optional[float] = None # pump delay - pre_pump_exposure_s: Optional[float] = None # Pre illumination, just for chip - - -class ExtruderParameters(SerialExperiment, LaserExperiment): - """Extruder parameter model.""" - - num_images: int - pump_status: bool - - @classmethod - def from_file(cls, filename: str | Path): - with open(filename, "r") as fh: - raw_params = json.load(fh) - return cls(**raw_params) - - -class ChipDescription(BaseModel): - """Parameters defining the chip in use for FT collection.""" - - model_config = ConfigDict(use_enum_values=True) - - chip_type: ChipType - x_num_steps: int - y_num_steps: int - x_step_size: float - y_step_size: float - x_blocks: int - y_blocks: int - b2b_horz: float - b2b_vert: float - - @validator("chip_type", pre=True) - def _parse_chip(cls, chip_type: str | int): - if isinstance(chip_type, str): - return ChipType[chip_type] - else: - return ChipType(chip_type) - - @property - def chip_format(self) -> list[int]: - return [self.x_blocks, self.y_blocks, self.x_num_steps, self.y_num_steps] - - @property - def x_block_size(self) -> float: - if self.chip_type.name == "Custom": - return 0.0 # placeholder - else: - return ((self.x_num_steps - 1) * self.x_step_size) + self.b2b_horz - - @property - def y_block_size(self) -> float: - if self.chip_type.name == "Custom": - return 0.0 # placeholder - else: - return ((self.y_num_steps - 1) * self.y_step_size) + self.b2b_vert - - -class FixedTargetParameters(SerialExperiment, LaserExperiment): - """Fixed target parameter model.""" - - model_config = ConfigDict(use_enum_values=True) - - num_exposures: int - chip: ChipDescription - map_type: MappingType - pump_repeat: PumpProbeSetting - checker_pattern: bool = False - total_num_images: int = 0 # Calculated in the code for now - - @validator("map_type", pre=True) - def _parse_map(cls, map_type: str | int): - if isinstance(map_type, str): - return MappingType[map_type] - else: - return MappingType(map_type) - - @validator("pump_repeat", pre=True) - def _parse_pump(cls, pump_repeat: int): - return PumpProbeSetting(pump_repeat) - - @classmethod - def from_file(cls, filename: str | Path): - with open(filename, "r") as fh: - raw_params = json.load(fh) - return cls(**raw_params) diff --git a/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json b/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json deleted file mode 100644 index 77a33e339..000000000 --- a/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "scalex": 10004.0, - "scaley": 10005.2, - "scalez": 10000.0, - "skew": -0.01, - "Sx_dir": 1, - "Sy_dir": 1, - "Sz_dir": 1 -} \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/motor_direction.txt b/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/motor_direction.txt deleted file mode 100644 index ab5d6ca22..000000000 --- a/src/mx_bluesky/I24/serial/parameters/fixed_target/cs/motor_direction.txt +++ /dev/null @@ -1,10 +0,0 @@ - -# This file give the relationship between stage motor counts pos/neg lab -# coordinate system - -# April 2023 @ i24 -# motor number * (dir) = positive chip direction - -mtr1_dir=1 -mtr2_dir=-1 -mtr3_dir=-1 diff --git a/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar b/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar deleted file mode 100644 index 4e46df9d3..000000000 --- a/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +++ /dev/null @@ -1,19 +0,0 @@ -# Clear -P3000..3999=0 -# Switch all blocks on -P3011,64,10=1 -# -P3012=0.000 P3013=0.000 -P3022=0.000 P3023=1.250 -P3032=0.000 P3033=2.375 - -# -P3042=1.250 P3043=2.375 -P3052=1.250 P3053=1.250 -P3062=1.250 P3063=0.000 - -# - -P3072=2.375 P3073=0.000 -P3082=2.375 P3083=1.250 -P3092=2.375 P3093=2.375 \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/oxford.pvar b/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/oxford.pvar deleted file mode 100755 index 40889effd..000000000 --- a/src/mx_bluesky/I24/serial/parameters/fixed_target/pvar_files/oxford.pvar +++ /dev/null @@ -1,85 +0,0 @@ -# Clear -P3000..3999=0 -# Switch all blocks on -P3011,64,10=1 -# -P3012=0.000 P3013=0.000 -P3022=0.000 P3023=3.175 -P3032=0.000 P3033=6.350 -P3042=0.000 P3043=9.525 -P3052=0.000 P3053=12.700 -P3062=0.000 P3063=15.875 -P3072=0.000 P3073=19.050 -P3082=0.000 P3083=22.225 -# -P3092=3.175 P3093=24.600 -P3102=3.175 P3103=21.425 -P3112=3.175 P3113=18.250 -P3122=3.175 P3123=15.075 -P3132=3.175 P3133=11.900 -P3142=3.175 P3143=8.725 -P3152=3.175 P3153=5.550 -P3162=3.175 P3163=2.375 -# -P3172=6.350 P3173=0.000 -P3182=6.350 P3183=3.175 -P3192=6.350 P3193=6.350 -P3202=6.350 P3203=9.525 -P3212=6.350 P3213=12.700 -P3222=6.350 P3223=15.875 -P3232=6.350 P3233=19.050 -P3242=6.350 P3243=22.225 -# -P3252=9.525 P3253=24.600 -P3262=9.525 P3263=21.425 -P3272=9.525 P3273=18.250 -P3282=9.525 P3283=15.075 -P3292=9.525 P3293=11.900 -P3302=9.525 P3303=8.725 -P3312=9.525 P3313=5.550 -P3322=9.525 P3323=2.375 -# -P3332=12.700 P3333=0.000 -P3342=12.700 P3343=3.175 -P3352=12.700 P3353=6.350 -P3362=12.700 P3363=9.525 -P3372=12.700 P3373=12.700 -P3382=12.700 P3383=15.875 -P3392=12.700 P3393=19.050 -P3402=12.700 P3403=22.225 -# -P3412=15.875 P3413=24.600 -P3422=15.875 P3423=21.425 -P3432=15.875 P3433=18.250 -P3442=15.875 P3443=15.075 -P3452=15.875 P3453=11.900 -P3462=15.875 P3463=8.725 -P3472=15.875 P3473=5.550 -P3482=15.875 P3483=2.375 -# -P3492=19.050 P3493=0.000 -P3502=19.050 P3503=3.175 -P3512=19.050 P3513=6.350 -P3522=19.050 P3523=9.525 -P3532=19.050 P3533=12.700 -P3542=19.050 P3543=15.875 -P3552=19.050 P3553=19.050 -P3562=19.050 P3563=22.225 -# -P3572=22.225 P3573=24.600 -P3582=22.225 P3583=21.425 -P3592=22.225 P3593=18.250 -P3602=22.225 P3603=15.075 -P3612=22.225 P3613=11.900 -P3622=22.225 P3623=8.725 -P3632=22.225 P3633=5.550 -P3642=22.225 P3643=2.375 -# Block direction -P3014,8,10=31 -P3094,8,10=32 -P3174,8,10=31 -P3254,8,10=32 -P3334,8,10=31 -P3414,8,10=32 -P3494,8,10=31 -P3574,8,10=32 diff --git a/src/mx_bluesky/I24/serial/parameters/utils.py b/src/mx_bluesky/I24/serial/parameters/utils.py deleted file mode 100644 index fdcfde59a..000000000 --- a/src/mx_bluesky/I24/serial/parameters/utils.py +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Any, Dict - -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType -from mx_bluesky.I24.serial.parameters.experiment_parameters import ChipDescription -from mx_bluesky.I24.serial.setup_beamline import caget, pv - - -def get_chip_format(chip_type: ChipType) -> ChipDescription: - """Default parameter values.""" - defaults: Dict[str, int | float] = {} - match chip_type: - case ChipType.Oxford: - defaults["x_num_steps"] = defaults["y_num_steps"] = 20 - defaults["x_step_size"] = defaults["y_step_size"] = 0.125 - defaults["x_blocks"] = defaults["y_blocks"] = 8 - defaults["b2b_horz"] = defaults["b2b_vert"] = 0.800 - case ChipType.OxfordInner: - defaults["x_num_steps"] = defaults["y_num_steps"] = 25 - defaults["x_step_size"] = defaults["y_step_size"] = 0.600 - defaults["x_blocks"] = defaults["y_blocks"] = 1 - defaults["b2b_horz"] = defaults["b2b_vert"] = 0.0 - case ChipType.Minichip: - defaults["x_num_steps"] = defaults["y_num_steps"] = 20 - defaults["x_step_size"] = defaults["y_step_size"] = 0.125 - defaults["x_blocks"] = defaults["y_blocks"] = 1 - defaults["b2b_horz"] = defaults["b2b_vert"] = 0.0 - case ChipType.Custom: - defaults["x_num_steps"] = int(caget(pv.me14e_gp6)) - defaults["y_num_steps"] = int(caget(pv.me14e_gp7)) - defaults["x_step_size"] = float(caget(pv.me14e_gp8)) - defaults["y_step_size"] = float(caget(pv.me14e_gp99)) - defaults["x_blocks"] = defaults["y_blocks"] = 1 - defaults["b2b_horz"] = defaults["b2b_vert"] = 0.0 - case ChipType.MISP: - defaults["x_num_steps"] = defaults["y_num_steps"] = 78 - defaults["x_step_size"] = defaults["y_step_size"] = 0.1193 - defaults["x_blocks"] = defaults["y_blocks"] = 1 - defaults["b2b_horz"] = defaults["b2b_vert"] = 0.0 - chip_params: Dict[str, Any] = {"chip_type": chip_type, **defaults} - return ChipDescription(**chip_params) diff --git a/src/mx_bluesky/I24/serial/run_extruder.sh b/src/mx_bluesky/I24/serial/run_extruder.sh deleted file mode 100755 index 94cc78a15..000000000 --- a/src/mx_bluesky/I24/serial/run_extruder.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Get edm path from input -edm_path=$1 - -# Get the directory of this script -current=$( realpath "$( dirname "$0" )" ) - -# Run script to start blueapi serve -. $current/start_blueapi.sh - -# Open the edm screen for an extruder serial collection -echo "Starting extruder edm screen." -edm -x "${edm_path}/EX-gui/DiamondExtruder-I24-py3v1.edl" - -echo "Edm screen closed, bye!" - -pgrep blueapi | xargs kill -echo "Blueapi process killed" \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/run_fixed_target.sh b/src/mx_bluesky/I24/serial/run_fixed_target.sh deleted file mode 100755 index c28e0db13..000000000 --- a/src/mx_bluesky/I24/serial/run_fixed_target.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Get edm path from input -edm_path=$1 - -# Export env variable for the stages edm to work properly -export EDMDATAFILES="/dls_sw/prod/R3.14.12.3/support/motor/6-7-1dls14/motorApp/opi/edl" - -# Get the directory of this script -current=$( realpath "$( dirname "$0" )" ) - -# Run script to start blueapi serve -. $current/start_blueapi.sh - -# Open the edm screen for a fixed target serial collection -echo "Starting fixed target edm screen." -edm -x "${edm_path}/FT-gui/DiamondChipI24-py3v1.edl" - -echo "Edm screen closed, bye!" - -pgrep blueapi | xargs kill -echo "Blueapi process killed" \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/run_serial.py b/src/mx_bluesky/I24/serial/run_serial.py deleted file mode 100644 index 55e7f37a4..000000000 --- a/src/mx_bluesky/I24/serial/run_serial.py +++ /dev/null @@ -1,36 +0,0 @@ -import logging -import subprocess -from os import environ -from pathlib import Path - -logger = logging.getLogger("I24ssx.run") - - -def get_location(default: str = "dev") -> str: - return environ.get("BEAMLINE") or default - - -def get_edm_path() -> Path: - return Path(__file__).parents[4] / "edm_serial" - - -def _get_file_path() -> Path: - return Path(__file__).parent - - -def run_extruder(): - loc = get_location() - logger.debug(f"Running on {loc}.") - edm_path = get_edm_path() - filepath = _get_file_path() - logger.debug(f"Running {filepath}/run_extruder.sh") - subprocess.run(["sh", filepath / "run_extruder.sh", edm_path.as_posix()]) - - -def run_fixed_target(): - loc = get_location() - logger.info(f"Running on {loc}.") - edm_path = get_edm_path() - filepath = _get_file_path() - logger.debug(f"Running {filepath}/run_fixed_target.sh") - subprocess.run(["sh", filepath / "run_fixed_target.sh", edm_path.as_posix()]) diff --git a/src/mx_bluesky/I24/serial/run_ssx.sh b/src/mx_bluesky/I24/serial/run_ssx.sh deleted file mode 100755 index c2e96824d..000000000 --- a/src/mx_bluesky/I24/serial/run_ssx.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# Start the edm screen relative to requested serial collection -expt_type=${1:-FT} - -current=$( realpath "$( dirname "$0" )" ) -cd $current -cd ../../../.. - -echo "Activating python environment..." -source .venv/bin/activate - -shopt -s nocasematch - -if [[ $expt_type == "FT" ]] || [[ $expt_type == "fixed-target" ]] -then - echo "Starting fixed target edm screen." - edm -x ./edm_serial/FT-gui/DiamondChipI24-py3v1.edl -elif [[ $expt_type == "EX" ]] || [[ $expt_type == "extruder" ]] -then - echo "Starting extruder edm screen." - edm -x ./edm_serial/EX-gui/DiamondExtruder-I24-py3v1.edl -else - echo "No edm found for $expt_type." -fi - -echo "Edm screen closed, deactivate python environment" -deactivate diff --git a/src/mx_bluesky/I24/serial/set_visit_directory.sh b/src/mx_bluesky/I24/serial/set_visit_directory.sh deleted file mode 100755 index 29ad78981..000000000 --- a/src/mx_bluesky/I24/serial/set_visit_directory.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -# Set visit directory for current experiment type from values stored in a file -filename="/dls_sw/i24/etc/ssx_current_visit.txt" - -display_help_msg() { - usage="./set_visit_directory.sh [expt_type]" - echo "USAGE: $usage" - echo "This script sets the visit directory for a serial crystallography experiment on I24." - echo "The current visit directory is saved in: $filename. Please modify this file to set a new visit." - echo "WARNING. The experiment type is set by default to fixed-target." - echo "To set the directory for an extruder experiment please pass extruder as a command line argument." -} - -case "$1" in - -h | --help) - display_help_msg - exit 0 - ;; -esac - - -if [[ ! -f "$filename" ]]; then - echo "The file $filename does not exist. Impossible to set the visit directory." - exit 1 -fi - -echo "Reading visit from file: $filename" - -visit=$(sed -n '1p' $filename) -expt_type=${1:-FT} - -# Append a / to the visit if missing to avoid filepaths issues later on -if [[ "${visit: -1}" != "/" ]]; then - visit="${visit}/" -fi - -ex_pv=BL24I-EA-IOC-12:GP1 -ft_pv=ME14E-MO-IOC-01:GP100 - -shopt -s nocasematch - -if [[ $expt_type == "FT" ]] || [[ $expt_type == "fixed-target" ]] -then - echo "Setting visit PV for serial fixed-target collection." - caput $ft_pv $visit - echo "Visit set to: $visit." -elif [[ $expt_type == "EX" ]] || [[ $expt_type == "extruder" ]] -then - echo "Setting visit PV for serial extruder collection." - caput $ex_pv $visit - echo "Visit set to: $visit" -else - echo -e "Unknown experiment type, visit PV not set. \nValid experiment values: fixed-target, extruder." - exit 1 -fi \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/setup_beamline/__init__.py b/src/mx_bluesky/I24/serial/setup_beamline/__init__.py deleted file mode 100644 index f4dcfd8ec..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -from . import pv, setup_beamline -from .ca import caget, cagetstring, caput -from .pv_abstract import Detector, Eiger, Pilatus - -__all__ = [ - "caget", - "cagetstring", - "caput", - "Detector", - "Eiger", - "Pilatus", - "pv", - "setup_beamline", -] diff --git a/src/mx_bluesky/I24/serial/setup_beamline/ca.py b/src/mx_bluesky/I24/serial/setup_beamline/ca.py deleted file mode 100644 index 9d86738b6..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/ca.py +++ /dev/null @@ -1,54 +0,0 @@ -from subprocess import PIPE, Popen - - -def cagetstring(pv): - val = None - while val is None: - try: - a = Popen(["caget", "-S", pv], stdout=PIPE, stderr=PIPE) - a_stdout, a_stderr = a.communicate() - val = a_stdout.split()[1] - val = str(val.decode("ascii")) - except Exception: - print("Exception in ca_py3.py cagetstring maybe this PV aint a string") - pass - return val - - -def caget(pv): - val = None - while val is None: - try: - a = Popen(["caget", pv], stdout=PIPE, stderr=PIPE) - a_stdout, a_stderr = a.communicate() - val = a_stdout.split()[1].decode("ascii") - # val = evaluate(val) - # val = val.decode('ascii') - except Exception: - print("Exception in ca_py3.py caget, maybe this PV doesnt exist:", pv) - pass - return val - - -def caput(pv, new_val): - check = Popen(["cainfo", pv], stdout=PIPE, stderr=PIPE) - # print('check', check) - check_stdout, check_stderr = check.communicate() - if check_stdout.split()[11].decode("ascii") == "DBF_CHAR": - a = Popen(["caput", "-S", pv, str(new_val)], stdout=PIPE, stderr=PIPE) - a_stdout, a_stderr = a.communicate() - else: - a = Popen(["caput", pv, str(new_val)], stdout=PIPE, stderr=PIPE) - a_stdout, a_stderr = a.communicate() - - -def evaluate(val): - try: - int(val) - return int(val) - except Exception: - try: - float(val) - return float(val) - except ValueError: - return val diff --git a/src/mx_bluesky/I24/serial/setup_beamline/pv.py b/src/mx_bluesky/I24/serial/setup_beamline/pv.py deleted file mode 100644 index deea5808a..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/pv.py +++ /dev/null @@ -1,409 +0,0 @@ -""" -PVs -# Last update Jan 2021 by RLO -# Now with Eiger goodness -""" - -import os -import sys - - -def __show__(name): - """Checks available variables given a string, uses first two letters""" - for things in globals(): - if name[:2].lower() in things.lower(): - print("Available:", things) - print() - - -def __which__(): - """Return script directory, used for finding which pv.py you are running""" - pathname, scriptname = os.path.split(sys.argv[0]) - print(("Current dir: " + os.path.abspath(pathname))) - print("path to pv.py: ") - - -# PILATUS -pilat_filepath = "BL24I-EA-PILAT-01:cam1:FilePath" -pilat_filename = "BL24I-EA-PILAT-01:cam1:FileName" -pilat_filetemplate = "BL24I-EA-PILAT-01:cam1:FileTemplate" -pilat_numimages = "BL24I-EA-PILAT-01:cam1:NumImages" -pilat_numexpimage = "BL24I-EA-PILAT-01:cam1:NumExposures" -pilat_filenumber = "BL24I-EA-PILAT-01:cam1:FileNumber" -pilat_acquire = "BL24I-EA-PILAT-01:cam1:Acquire" -pilat_acquiretime = "BL24I-EA-PILAT-01:cam1:AcquireTime" -pilat_acquireperiod = "BL24I-EA-PILAT-01:cam1:AcquirePeriod" -pilat_imagemode = "BL24I-EA-PILAT-01:cam1:ImageMode" -pilat_triggermode = "BL24I-EA-PILAT-01:cam1:TriggerMode" -pilat_delaytime = "BL24I-EA-PILAT-01:cam1:DelayTime" -pilat_wavelength = "BL24I-EA-PILAT-01:cam1:Wavelength" -pilat_detdist = "BL24I-EA-PILAT-01:cam1:DetDist" -pilat_filtertrasm = "BL24I-EA-PILAT-01:cam1:FilterTransm" -pilat_filetemplate = "BL24I-EA-PILAT-01:cam1:FileTemplate" -pilat_beamx = "BL24I-EA-PILAT-01:cam1:BeamX" -pilat_beamy = "BL24I-EA-PILAT-01:cam1:BeamY" -pilat_startangle = "BL24I-EA-PILAT-01:cam1:StartAngle" -pilat_angleincr = "BL24I-EA-PILAT-01:cam1:AngleIncr" -pilat_omegaincr = "BL24I-EA-PILAT-01:cam1:OmegaIncr" -pilat_cbftemplate = "BL24I-EA-PILAT-01:cam1:CbfTemplateFile" -pilat_filenum = "BL24I-EA-PILAT-01:cam1:FileNumber_RBV" - - -# Eiger -eiger_filepath = "BL24I-EA-EIGER-01:CAM:FilePath" -eiger_filename = "BL24I-EA-EIGER-01:CAM:FileName" -eiger_ODfilepath = "BL24I-EA-EIGER-01:OD:FilePath" -eiger_ODfilename = "BL24I-EA-EIGER-01:OD:FileName" -eiger_seqID = "BL24I-EA-EIGER-01:CAM:SequenceId" -eiger_numimages = "BL24I-EA-EIGER-01:CAM:NumImages" -eiger_ODnumcapture = "BL24I-EA-EIGER-01:OD:NumCapture" -eiger_numexpimage = "BL24I-EA-EIGER-01:CAM:NumExposures" -eiger_acquiretime = "BL24I-EA-EIGER-01:CAM:AcquireTime" -eiger_acquireperiod = "BL24I-EA-EIGER-01:CAM:AcquirePeriod" -eiger_imagemode = "BL24I-EA-EIGER-01:CAM:ImageMode" -eiger_triggermode = "BL24I-EA-EIGER-01:CAM:TriggerMode" -eiger_numtriggers = "BL24I-EA-EIGER-01:CAM:NumTriggers" -eiger_manualtrigger = "BL24I-EA-EIGER-01:CAM:ManualTrigger" -eiger_trigger = "BL24I-EA-EIGER-01:CAM:Trigger" -eiger_filewriter = "BL24I-EA-EIGER-01:CAM:FWEnable" -eiger_stream = "BL24I-EA-EIGER-01:CAM:StreamEnable" -eiger_monitor = "BL24I-EA-EIGER-01:CAM:MonitorEnable" -eiger_datasource = "BL24I-EA-EIGER-01:CAM:DataSource" -eiger_statuspoll = "BL24I-EA-EIGER-01:CAM:ReadStatus.SCAN" -eiger_ROImode = "BL24I-EA-EIGER-01:CAM:ROIMode" -eiger_ff = "BL24I-EA-EIGER-01:CAM:FlatfieldApplied" -eiger_compress = "BL24I-EA-EIGER-01:CAM:FWCompression" -eiger_compresstype = "BL24I-EA-EIGER-01:CAM:CompressionAlgo" -eiger_ODcompress = "BL24I-EA-EIGER-01:OD:Compression" -eiger_ODdatatype = "BL24I-EA-EIGER-01:OD:DataType" -eiger_bitdepthrbv = "BL24I-EA-EIGER-01:CAM:BitDepthImage_RBV" -eiger_countmode = "BL24I-EA-EIGER-01:CAM:CountingMode" -eiger_autosum = "BL24I-EA-EIGER-01:CAM:AutoSummation" -eiger_hdrdetail = "BL24I-EA-EIGER-01:CAM:StreamHdrDetail" -eiger_hdrappen = "BL24I-EA-EIGER-01:CAM:StreamHdrAppendix" -eiger_ODcapture = "BL24I-EA-EIGER-01:OD:Capture" -eiger_acquire = "BL24I-EA-EIGER-01:CAM:Acquire" -eiger_wavelength = "BL24I-EA-EIGER-01:CAM:Wavelength" -eiger_detdist = "BL24I-EA-EIGER-01:CAM:DetDist" -eiger_beamx = "BL24I-EA-EIGER-01:CAM:BeamX" -eiger_beamy = "BL24I-EA-EIGER-01:CAM:BeamY" -eiger_omegaincr = "BL24I-EA-EIGER-01:CAM:OmegaIncr" -eiger_ODfilenameRBV = "BL24I-EA-EIGER-01:OD:FP:FileName_RBV" - -# BPMs -qbpm1_inten = "BL24I-DI-QBPM-01:INTEN" -qbpm1_intenN = "BL24I-DI-QBPM-01:INTEN_N" -qbpm2_inten = "BL24I-DI-QBPM-02:INTEN" -qbpm2_intenN = "BL24I-DI-QBPM-02:INTEN_N" -qbpm3_inten = "BL24I-DI-QBPM-03:INTEN" -qbpm3_intenN = "BL24I-DI-QBPM-03:INTEN_N" -# Cividec -cividec_x = "BL24I-AL-XBPM-01:XS" -cividec_y = "BL24I-AL-XBPM-01:YS" -cividec_sumI = "BL24I-EA-XBPM-01:SumAll:Sigma_RBV" -cividec_beamx = "BL24I-EA-XBPM-01:PosX:MeanValue_RBV" -cividec_beamy = "BL24I-EA-XBPM-01:PosY:MeanValue_RBV" -# Lancelot -lance_x = "BL24I-EA-DET-03:X" -lance_y = "BL24I-EA-DET-03:Y" -lance_beamx = "BL24I-EA-DET-03:STAT:CentroidX_RBV" -lance_beamy = "BL24I-EA-DET-03:STAT:CentroidY_RBV" -# FAST SHUTTER -shtr_ctrl1 = "BL24I-EA-SHTR-01:CTRL1" -shtr_ctrl2 = "BL24I-EA-SHTR-01:CTRL2" -shtr_toggle = shtr_ctrl1 -shtr_pos = shtr_ctrl2 -# XPRESS3 -xsp3_acquire = "BL24I-EA-XSP3-01:Acquire" -xsp3_erase = "BL24I-EA-XSP3-01:ERASE" -xsp3_acquiretime = "BL24I-EA-XSP3-01:AcquireTime" -xsp3_hdf5_filename = "BL24I-EA-XSP3-01:HDF5:FileName" -xsp3_hdf5_filepath = "BL24I-EA-XSP3-01:HDF5:FilePath" -xsp3_numimages = "BL24I-EA-XSP3-01:NumImages" -xsp3_triggermode = "BL24I-EA-XSP3-01:TriggerMode" -xsp3_c1_mca_roi1_llm = "BL24I-EA-XSP3-01:C1_MCA_ROI1_LLM" -xsp3_c1_mca_roi2_llm = "BL24I-EA-XSP3-01:C1_MCA_ROI2_LLM" -xsp3_c1_mca_roi3_llm = "BL24I-EA-XSP3-01:C1_MCA_ROI3_LLM" -xsp3_c1_mca_roi4_llm = "BL24I-EA-XSP3-01:C1_MCA_ROI4_LLM" -xsp3_c1_mca_roi1_hlm = "BL24I-EA-XSP3-01:C1_MCA_ROI1_HLM" -xsp3_c1_mca_roi2_hlm = "BL24I-EA-XSP3-01:C1_MCA_ROI2_HLM" -xsp3_c1_mca_roi3_hlm = "BL24I-EA-XSP3-01:C1_MCA_ROI3_HLM" -xsp3_c1_mca_roi4_hlm = "BL24I-EA-XSP3-01:C1_MCA_ROI4_HLM" -xsp3_c1_roi1_value_rbv = "BL24I-EA-XSP3-01:C1_ROI1:Value_RBV" -xsp3_c1_roi2_value_rbv = "BL24I-EA-XSP3-01:C1_ROI2:Value_RBV" -xsp3_c1_roi3_value_rbv = "BL24I-EA-XSP3-01:C1_ROI3:Value_RBV" -xsp3_c1_roi4_value_rbv = "BL24I-EA-XSP3-01:C1_ROI4:Value_RBV" -# Ring parameter -ring_current = "SR-DI-DCCT-01:SIGNAL" -ring_energy = "CS-CS-MSTAT-01:BEAMENERGY" -beam_energy = "BL24I-OP-DCM-01:ENERGY.RBV" -# Shutter status -port_shutter_status = "FE24I-PS-SHTR-01:STA" -optics_hutch_shutter_status = "FE24I-VA-GROUP-01:BLENABLE" -experimental_hutch_shutter_status = "BL24I-PS-SHTR-01:STA" -# S1 -s1_x_gap = "BL24I-AL-SLITS-01:X:GAP" -s1_x_inboard = "BL24I-AL-SLITS-01:X:INBOARD" -s1_y_gap = "BL24I-AL-SLITS-01:Y:GAP" -s1_y_bottom = "BL24I-AL-SLITS-01:Y:BOTTOM" -# Mono -dcm_bragg = "BL24I-MO-DCM-01:BRAGG" -dcm_gap = "BL24I-MO-DCM-01:GAP" -dcm_roll1 = "BL24I-MO-DCM-01:XTAL1:ROLL" -dcm_roll2 = "BL24I-MO-DCM-01:XTAL2:ROLL" -dcm_pitch2 = "BL24I-MO-DCM-01:XTAL2:PITCH" -dcm_lambda = "BL24I-MO-DCM-01:LAMBDA" -dcm_energy = "BL24I-MO-DCM-01:ENERGY" - -# S2 -s2_x_plus = "BL24I-AL-SLITS-02:X:PLUS" -s2_x_minus = "BL24I-AL-SLITS-02:X:MINUS" -s2_y_plus = "BL24I-AL-SLITS-02:Y:PLUS" -s2_y_minus = "BL24I-AL-SLITS-02:Y:MINUS" -# PreFocussing Mirrors -hpfm_y1 = "BL24I-OP-HPFM-01:Y1" -hpfm_y2 = "BL24I-OP-HPFM-01:Y2" -hpfm_y3 = "BL24I-OP-HPFM-01:Y3" -hpfm_x1 = "BL24I-OP-HPFM-01:X1" -hpfm_x2 = "BL24I-OP-HPFM-01:X2" -vpfm_y1 = "BL24I-OP-VPFM-01:Y1" -vpfm_y2 = "BL24I-OP-VPFM-01:Y2" -vpfm_y3 = "BL24I-OP-VPFM-01:Y3" -vpfm_x1 = "BL24I-OP-VPFM-01:X1" -vpfm_x2 = "BL24I-OP-VPFM-01:X2" -# S3 -s3_x_gap = "BL24I-AL-SLITS-03:X:GAP" -s3_x_inboard = "BL24I-AL-SLITS-03:X:INBOARD" -s3_y_gap = "BL24I-AL-SLITS-03:Y:GAP" -s3_y_top = "BL24I-AL-SLITS-03:Y:TOP" -# MicroFocussing Mirrors -hmfm_x = "BL24I-OP-HMFM-01:X" -hmfm_y = "BL24I-OP-HMFM-01:Y" -hmfm_pitch = "BL24I-OP-HMFM-01:PITCH" -vmfm_x = "BL24I-OP-VMFM-01:X" -vmfm_y = "BL24I-OP-VMFM-01:Y" -vmfm_pitch = "BL24I-OP-VMFM-01:PITCH" -mtab_z = "BL24I-OP-MTAB-01:Z" -# Collimation Table -ctab_x1 = "BL24I-MO-CTAB-01:X1" -ctab_x2 = "BL24I-MO-CTAB-01:X2" -# Attenuators -attn_disc1 = "BL24I-OP-ATTN-01:DISC1" -attn_disc2 = "BL24I-OP-ATTN-01:DISC2" -attn_match = "BL24I-OP-ATTN-01:MATCH" -# AP1 -aptr1_x = "BL24I-AL-APTR-01:X" -aptr1_y = "BL24I-AL-APTR-01:Y" -aptr1_mp_select = "BL24I-AL-APTR-01:MP:SELECT" -# AP2 -aptr2_x = "BL24I-AL-APTR-02:X" -aptr2_y = "BL24I-AL-APTR-02:Y" -aptr2_mp_select = "BL24I-AL-APTR-02:MP:SELECT" -# Vertical Pin Goniometer -vgon_omega = "BL24I-MO-VGON-01:OMEGA" -vgon_kappa = "BL24I-MO-VGON-01:KAPPA" -vgon_phi = "BL24I-MO-VGON-01:PHI" -vgon_pinxs = "BL24I-MO-VGON-01:PINXS" -vgon_pinys = "BL24I-MO-VGON-01:PINYS" -vgon_pinzs = "BL24I-MO-VGON-01:PINZS" -vgon_pinyh = "BL24I-MO-VGON-01:PINYH" -ptab_x = "BL24I-MO-PTAB-01:X" -ptab_z = "BL24I-MO-PTAB-01:Z" -ptab_y = "BL24I-MO-PTAB-01:Y" -# Horizontal Tray Goniometer -hgon_omega = "BL24I-MO-HGON-01:OMEGA" -hgon_trayys = "BL24I-MO-HGON-01:TRAYYS" -hgon_trayzs = "BL24I-MO-HGON-01:TRAYZS" -ttab_x = "BL24I-MO-TTAB-01:X" -ttab_y = "BL24I-MO-TTAB-01:Y" -ttab_z = "BL24I-MO-TTAB-01:Z" -# Cryo -cstrm_trans = "BL24I-MO-CSTRM-01:TRANS" -cstrm_mp_select = "BL24I-MO-CSTRM-01:MP:SELECT" -cstrm_p1701 = "BL24I-MO-CSTRM-01:P1701" -# Fluorescence Detector -fluo_trans = "BL24I-EA-DET-02:TRANS" -fluo_out_limit = "BL24I-EA-DET-02:OUT:LIMIT" -fluo_in_limit = "BL24I-EA-DET-02:IN:LIMIT" -# Beamstop -bs_x = "BL24I-MO-BS-01:X" -bs_y = "BL24I-MO-BS-01:Y" -bs_z = "BL24I-MO-BS-01:Z" -bs_roty = "BL24I-MO-BS-01:ROTY" -bs_mp_select = "BL24I-MO-BS-01:MP:SELECT" -# Backlight -bl_y = "BL24I-MO-BL-01:Y" -bl_mp_select = "BL24I-MO-BL-01:MP:SELECT" -# LED -led1_doxcurrent_ouputcurrent = "BL24I-DI-LED-01:DOXCURRENT:OUTPUTCURRENT" -led2_doxcurrent_ouputcurrent = "BL24I-DI-LED-02:DOXCURRENT:OUTPUTCURRENT" -led3_doxcurrent_ouputcurrent = "BL24I-DI-LED-03:DOXCURRENT:OUTPUTCURRENT" -led4_doxcurrent_ouputcurrent = "BL24I-DI-LED-04:DOXCURRENT:OUTPUTCURRENT" -# Detector -det_y = "BL24I-EA-DET-01:Y" -det_z = "BL24I-EA-DET-01:Z" -# Fast grid diagnostics -pmc_gridstatus = "BL24I-MO-STEP-10:signal:P2401" -pmc_gridcounter = "BL24I-MO-STEP-10:signal:P2402" -# PMAC Strings -step08_pmac_str = "BL24I-MO-IOC-08:ASYN8.AOUT" -step09_pmac_str = "BL24I-MO-IOC-09:ASYN9.AOUT" -step10_pmac_str = "BL24I-MO-IOC-10:ASYN10.AOUT" -step11_pmac_str = "BL24I-MO-IOC-11:ASYN11.AOUT" -step12_pmac_str = "BL24I-MO-IOC-12:ASYN12.AOUT" -step08_pmac_response = "BL24I-MO-IOC-08:ASYN8.AINP" -step09_pmac_response = "BL24I-MO-IOC-09:ASYN9.AINP" -step10_pmac_response = "BL24I-MO-IOC-10:ASYN10.AINP" -step11_pmac_response = "BL24I-MO-IOC-11:ASYN11.AINP" -step12_pmac_response = "BL24I-MO-IOC-12:ASYN12.AINP" -# General Purpose PV -ioc12_gp1 = "BL24I-EA-IOC-12:GP1" -ioc12_gp2 = "BL24I-EA-IOC-12:GP2" -ioc12_gp3 = "BL24I-EA-IOC-12:GP3" -ioc12_gp4 = "BL24I-EA-IOC-12:GP4" -ioc12_gp5 = "BL24I-EA-IOC-12:GP5" -ioc12_gp6 = "BL24I-EA-IOC-12:GP6" -ioc12_gp7 = "BL24I-EA-IOC-12:GP7" -ioc12_gp8 = "BL24I-EA-IOC-12:GP8" -ioc12_gp9 = "BL24I-EA-IOC-12:GP9" -ioc12_gp10 = "BL24I-EA-IOC-12:GP10" -ioc12_gp11 = "BL24I-EA-IOC-12:GP11" -ioc12_gp12 = "BL24I-EA-IOC-12:GP12" -ioc12_gp13 = "BL24I-EA-IOC-12:GP13" -ioc12_gp14 = "BL24I-EA-IOC-12:GP14" -ioc12_gp15 = "BL24I-EA-IOC-12:GP15" -# ME14E -me14e_pmac_str = "ME14E-MO-CHIP-01:PMAC_STRING" -me14e_stage_x = "ME14E-MO-CHIP-01:X" -me14e_stage_y = "ME14E-MO-CHIP-01:Y" -me14e_stage_z = "ME14E-MO-CHIP-01:Z" -me14e_filter = "ME14E-MO-CHIP-01:FILTER" -me14e_filepath = "ME14E-MO-CHIP-01:filePath" -me14e_chip_name = "ME14E-MO-CHIP-01:chipName" -me14e_chipcapacity = "ME14E-MO-CHIP-01:chipCapacity" -me14e_blockcapacity = "ME14E-MO-CHIP-01:blockCapacity" -me14e_exptime = "ME14E-MO-CHIP-01:expTime" -me14e_dcdetdist = "ME14E-MO-CHIP-01:detDistance" -me14e_scanstatus = "BL24I-MO-STEP-14:signal:P2401" -me14e_counter = "BL24I-MO-STEP-14:signal:P2402" -# ME14E General Purpose PV -me14e_gp1 = "ME14E-MO-IOC-01:GP1" -me14e_gp2 = "ME14E-MO-IOC-01:GP2" -me14e_gp3 = "ME14E-MO-IOC-01:GP3" -me14e_gp4 = "ME14E-MO-IOC-01:GP4" -me14e_gp5 = "ME14E-MO-IOC-01:GP5" -me14e_gp6 = "ME14E-MO-IOC-01:GP6" -me14e_gp7 = "ME14E-MO-IOC-01:GP7" -me14e_gp8 = "ME14E-MO-IOC-01:GP8" -me14e_gp9 = "ME14E-MO-IOC-01:GP9" -me14e_gp10 = "ME14E-MO-IOC-01:GP10" -me14e_gp11 = "ME14E-MO-IOC-01:GP11" -me14e_gp12 = "ME14E-MO-IOC-01:GP12" -me14e_gp13 = "ME14E-MO-IOC-01:GP13" -me14e_gp14 = "ME14E-MO-IOC-01:GP14" -me14e_gp15 = "ME14E-MO-IOC-01:GP15" -me14e_gp16 = "ME14E-MO-IOC-01:GP16" -me14e_gp17 = "ME14E-MO-IOC-01:GP17" -me14e_gp18 = "ME14E-MO-IOC-01:GP18" -me14e_gp19 = "ME14E-MO-IOC-01:GP19" -me14e_gp20 = "ME14E-MO-IOC-01:GP20" -me14e_gp21 = "ME14E-MO-IOC-01:GP21" -me14e_gp22 = "ME14E-MO-IOC-01:GP22" -me14e_gp23 = "ME14E-MO-IOC-01:GP23" -me14e_gp24 = "ME14E-MO-IOC-01:GP24" -me14e_gp25 = "ME14E-MO-IOC-01:GP25" -me14e_gp26 = "ME14E-MO-IOC-01:GP26" -me14e_gp27 = "ME14E-MO-IOC-01:GP27" -me14e_gp28 = "ME14E-MO-IOC-01:GP28" -me14e_gp29 = "ME14E-MO-IOC-01:GP29" -me14e_gp30 = "ME14E-MO-IOC-01:GP30" -me14e_gp31 = "ME14E-MO-IOC-01:GP31" -me14e_gp32 = "ME14E-MO-IOC-01:GP32" -me14e_gp33 = "ME14E-MO-IOC-01:GP33" -me14e_gp34 = "ME14E-MO-IOC-01:GP34" -me14e_gp35 = "ME14E-MO-IOC-01:GP35" -me14e_gp36 = "ME14E-MO-IOC-01:GP36" -me14e_gp37 = "ME14E-MO-IOC-01:GP37" -me14e_gp38 = "ME14E-MO-IOC-01:GP38" -me14e_gp39 = "ME14E-MO-IOC-01:GP39" -me14e_gp40 = "ME14E-MO-IOC-01:GP40" -me14e_gp41 = "ME14E-MO-IOC-01:GP41" -me14e_gp42 = "ME14E-MO-IOC-01:GP42" -me14e_gp43 = "ME14E-MO-IOC-01:GP43" -me14e_gp44 = "ME14E-MO-IOC-01:GP44" -me14e_gp45 = "ME14E-MO-IOC-01:GP45" -me14e_gp46 = "ME14E-MO-IOC-01:GP46" -me14e_gp47 = "ME14E-MO-IOC-01:GP47" -me14e_gp48 = "ME14E-MO-IOC-01:GP48" -me14e_gp49 = "ME14E-MO-IOC-01:GP49" -me14e_gp50 = "ME14E-MO-IOC-01:GP50" -me14e_gp51 = "ME14E-MO-IOC-01:GP51" -me14e_gp52 = "ME14E-MO-IOC-01:GP52" -me14e_gp53 = "ME14E-MO-IOC-01:GP53" -me14e_gp54 = "ME14E-MO-IOC-01:GP54" -me14e_gp55 = "ME14E-MO-IOC-01:GP55" -me14e_gp56 = "ME14E-MO-IOC-01:GP56" -me14e_gp57 = "ME14E-MO-IOC-01:GP57" -me14e_gp58 = "ME14E-MO-IOC-01:GP58" -me14e_gp59 = "ME14E-MO-IOC-01:GP59" -me14e_gp60 = "ME14E-MO-IOC-01:GP60" -me14e_gp61 = "ME14E-MO-IOC-01:GP61" -me14e_gp62 = "ME14E-MO-IOC-01:GP62" -me14e_gp63 = "ME14E-MO-IOC-01:GP63" -me14e_gp64 = "ME14E-MO-IOC-01:GP64" -me14e_gp65 = "ME14E-MO-IOC-01:GP65" -me14e_gp66 = "ME14E-MO-IOC-01:GP66" -me14e_gp67 = "ME14E-MO-IOC-01:GP67" -me14e_gp68 = "ME14E-MO-IOC-01:GP68" -me14e_gp69 = "ME14E-MO-IOC-01:GP69" -me14e_gp70 = "ME14E-MO-IOC-01:GP70" -me14e_gp71 = "ME14E-MO-IOC-01:GP71" -me14e_gp72 = "ME14E-MO-IOC-01:GP72" -me14e_gp73 = "ME14E-MO-IOC-01:GP73" -me14e_gp74 = "ME14E-MO-IOC-01:GP74" -me14e_gp75 = "ME14E-MO-IOC-01:GP75" -me14e_gp76 = "ME14E-MO-IOC-01:GP76" -me14e_gp77 = "ME14E-MO-IOC-01:GP77" -me14e_gp78 = "ME14E-MO-IOC-01:GP78" -me14e_gp79 = "ME14E-MO-IOC-01:GP79" -me14e_gp80 = "ME14E-MO-IOC-01:GP80" -me14e_gp81 = "ME14E-MO-IOC-01:GP81" -me14e_gp82 = "ME14E-MO-IOC-01:GP82" -me14e_gp83 = "ME14E-MO-IOC-01:GP83" -me14e_gp84 = "ME14E-MO-IOC-01:GP84" -me14e_gp85 = "ME14E-MO-IOC-01:GP85" -me14e_gp86 = "ME14E-MO-IOC-01:GP86" -me14e_gp87 = "ME14E-MO-IOC-01:GP87" -me14e_gp88 = "ME14E-MO-IOC-01:GP88" -me14e_gp89 = "ME14E-MO-IOC-01:GP89" -me14e_gp90 = "ME14E-MO-IOC-01:GP90" -me14e_gp91 = "ME14E-MO-IOC-01:GP91" -me14e_gp92 = "ME14E-MO-IOC-01:GP92" -me14e_gp93 = "ME14E-MO-IOC-01:GP93" -me14e_gp94 = "ME14E-MO-IOC-01:GP94" -me14e_gp95 = "ME14E-MO-IOC-01:GP95" -me14e_gp96 = "ME14E-MO-IOC-01:GP96" -me14e_gp97 = "ME14E-MO-IOC-01:GP97" -me14e_gp98 = "ME14E-MO-IOC-01:GP98" -me14e_gp99 = "ME14E-MO-IOC-01:GP99" -me14e_gp100 = "ME14E-MO-IOC-01:GP100" -me14e_gp101 = "ME14E-MO-IOC-01:GP101" # Detector in use -me14e_gp102 = "ME14E-MO-IOC-01:GP102" -me14e_gp103 = "ME14E-MO-IOC-01:GP103" -me14e_gp104 = "ME14E-MO-IOC-01:GP104" -me14e_gp105 = "ME14E-MO-IOC-01:GP105" -me14e_gp106 = "ME14E-MO-IOC-01:GP106" -me14e_gp107 = "ME14E-MO-IOC-01:GP107" -me14e_gp108 = "ME14E-MO-IOC-01:GP108" -me14e_gp109 = "ME14E-MO-IOC-01:GP109" -me14e_gp110 = "ME14E-MO-IOC-01:GP110" -me14e_gp111 = "ME14E-MO-IOC-01:GP111" -me14e_gp112 = "ME14E-MO-IOC-01:GP112" -me14e_gp113 = "ME14E-MO-IOC-01:GP113" -me14e_gp114 = "ME14E-MO-IOC-01:GP114" -me14e_gp115 = "ME14E-MO-IOC-01:GP115" -me14e_gp116 = "ME14E-MO-IOC-01:GP116" -me14e_gp117 = "ME14E-MO-IOC-01:GP117" -me14e_gp118 = "ME14E-MO-IOC-01:GP118" -me14e_gp119 = "ME14E-MO-IOC-01:GP119" -me14e_gp120 = "ME14E-MO-IOC-01:GP120" diff --git a/src/mx_bluesky/I24/serial/setup_beamline/pv_abstract.py b/src/mx_bluesky/I24/serial/setup_beamline/pv_abstract.py deleted file mode 100644 index ebd986cda..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/pv_abstract.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Cleaner abstractions of the PV table. - -Takes the PV tables from I24's setup_beamline and wraps a slightly more -abstract wrapper around them. -""" - -from typing import Union - -from mx_bluesky.I24.serial.setup_beamline import pv - - -class Pilatus: - id = 58 - name = "pilatus" - - # fast, slow / width, height - image_size_pixels = (2463, 2527) - pixel_size_mm = (0.172, 0.172) - image_size_mm = tuple( - round(a * b, 3) for a, b in zip(image_size_pixels, pixel_size_mm) - ) - - det_y_threshold = 560.0 - det_y_target = 566.0 - - class pv: - detector_distance = pv.pilat_detdist - wavelength = pv.pilat_wavelength - transmission = pv.pilat_filtertrasm - file_name = pv.pilat_filename - file_path = pv.pilat_filepath - file_template = pv.pilat_filetemplate - file_number = pv.pilat_filenumber - beamx = pv.pilat_beamx - beamy = pv.pilat_beamy - - def __str__(self) -> str: - return self.name - - -class Eiger: - id = 94 - name = "eiger" - - pixel_size_mm = (0.075, 0.075) - image_size_pixels = (3108, 3262) - - image_size_mm = tuple( - round(a * b, 3) for a, b in zip(image_size_pixels, pixel_size_mm) - ) - - det_y_threshold = -10.0 - det_y_target = -22.0 - - class pv: - detector_distance = pv.eiger_detdist - wavelength = pv.eiger_wavelength - transmission = "BL24I-EA-PILAT-01:cam1:FilterTransm" - filenameRBV = pv.eiger_ODfilenameRBV - file_name = pv.eiger_ODfilename - file_path = pv.eiger_ODfilepath - file_template = None - sequence_id = pv.eiger_seqID - beamx = pv.eiger_beamx - beamy = pv.eiger_beamy - bit_depth = pv.eiger_bitdepthrbv - - def __str__(self) -> str: - return self.name - - -Detector = Union[Pilatus, Eiger] diff --git a/src/mx_bluesky/I24/serial/setup_beamline/setup_beamline.py b/src/mx_bluesky/I24/serial/setup_beamline/setup_beamline.py deleted file mode 100644 index 252687efc..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/setup_beamline.py +++ /dev/null @@ -1,493 +0,0 @@ -import logging -from time import sleep - -import bluesky.plan_stubs as bps -from dodal.devices.i24.aperture import Aperture, AperturePositions -from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions -from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion - -from mx_bluesky.I24.serial.setup_beamline import pv -from mx_bluesky.I24.serial.setup_beamline.ca import caget, caput - -logger = logging.getLogger("I24ssx.sup") - - -def setup_beamline_for_collection_plan( - aperture: Aperture, - backlight: DualBacklight, - beamstop: Beamstop, - group: str = "setup_beamline_collect", - wait: bool = True, -): - logger.debug("Setup beamline: collect.") - yield from bps.abs_set(aperture.position, AperturePositions.IN, group=group) - yield from bps.abs_set(backlight, BacklightPositions.OUT, group=group) - yield from bps.sleep(3) # Not sure needed - to test - yield from bps.abs_set( - beamstop.pos_select, BeamstopPositions.DATA_COLLECTION, group=group - ) - yield from bps.abs_set(beamstop.y_rotation, 0, group=group) - yield from bps.sleep(4) # Not sure needed - to test - - if wait: - yield from bps.wait(group=group) - - -def move_detector_stage_to_position_plan( - detector_stage: DetectorMotion, - detector_distance: float, -): - logger.debug("Setup beamline: moving detector stage.") - logger.debug( - f"Waiting for detector move. Detector distance: {detector_distance} mm." - ) - yield from bps.mv(detector_stage.z, detector_distance) - - -def modechange(action): - """Mode Change""" - # Pin Hand Mount - if action == "Pin_hand_mount": - caput(pv.bl_mp_select, "Out") - caput(pv.aptr1_mp_select, "Manual Mounting") - caput(pv.bs_mp_select, "Robot") - caput(pv.vgon_omega, 0) - caput(pv.vgon_kappa, 0) - caput(pv.vgon_phi, 0) - caput(pv.vgon_pinxs, 0) - caput(pv.vgon_pinzs, 0) - caput(pv.fluo_trans, "OUT") - caput(pv.cstrm_p1701, 0) - caput(pv.cstrm_mp_select, "Out") - logger.debug("Pin Hand Mount Done") - - # Pin Room Tempreature Hand Mount - elif action == "Pin_rt_hand_mount": - caput(pv.cstrm_p1701, 0) - caput(pv.cstrm_mp_select, "Away") - caput(pv.bl_mp_select, "Out") - caput(pv.aptr1_mp_select, "Manual Mounting") - caput(pv.bs_mp_select, "Robot") - caput(pv.vgon_omega, 0) - caput(pv.vgon_kappa, 0) - caput(pv.vgon_phi, 0) - caput(pv.vgon_pinxs, 0) - caput(pv.vgon_pinzs, 0) - caput(pv.fluo_trans, "OUT") - logger.debug("RT Pin Hand Mount Done") - - # Pin Data Collection - elif action == "Pin_data_collection": - caput(pv.cstrm_p1701, 0) - caput(pv.cstrm_mp_select, "In") - caput(pv.aptr1_mp_select, "In") - caput(pv.vgon_omega, 0) - caput(pv.vgon_kappa, 0) - caput(pv.vgon_phi, 0) - caput(pv.vgon_pinxs, 0) - # caput(pv.vgon_pinyh, 0) - caput(pv.vgon_pinzs, 0) - caput(pv.fluo_trans, "OUT") - caput(pv.bs_roty, 0) - sleep(0.5) - caput(pv.bs_mp_select, "Data Collection") - sleep(2.3) - caput(pv.bl_mp_select, "In") - logger.debug("Pin Data Collection Done") - - # Pin Room Tempreature Data Collection - elif action == "Pin_rt_data_collection": - logger.debug("RT Mode") - caput(pv.cstrm_p1701, 0) - caput(pv.cstrm_mp_select, "Away") - caput(pv.aptr1_mp_select, "In") - caput(pv.vgon_omega, 0) - caput(pv.vgon_kappa, 0) - caput(pv.vgon_phi, 0) - caput(pv.vgon_pinxs, 0) - caput(pv.vgon_pinyh, 0) - caput(pv.vgon_pinzs, 0) - caput(pv.fluo_trans, "OUT") - sleep(0.1) - caput(pv.bs_roty, 0) - sleep(2.6) - caput(pv.bl_mp_select, "In") - caput(pv.bs_mp_select, "Data Collection") - logger.debug("RT Data Collection Done") - - # Tray Hand Mount - elif action == "Tray_hand_mount": - caput(pv.ttab_x, 2.0) - caput(pv.hgon_trayys, 0.0) - caput(pv.hgon_omega, 0.0) - caput(pv.fluo_trans, "OUT") - caput(pv.bl_mp_select, "Out") - sleep(1) - caput(pv.aptr1_mp_select, "Manual Mounting") - caput(pv.bs_mp_select, "Tray Mount") - while caget(pv.ttab_x + ".RBV") > 3: - sleep(1) - logger.debug("Tray Hand Mount Done") - - # Tray Robot Load. This action needs to be reviewed and revised - elif action == "Tray_robot_load": - # Middle of black circle - caput(pv.ttab_x, 79.2) - caput(pv.hgon_trayys, -7.00) - caput(pv.hgon_trayzs, -1.10) - caput(pv.hgon_omega, 0.0) - caput(pv.fluo_trans, "OUT") - caput(pv.aptr1_mp_select, "In") - caput(pv.bl_mp_select, "Out") - sleep(1) - caput(pv.bs_roty, 0) - sleep(1) - caput(pv.bs_mp_select, "Robot") - sleep(1) - caput(pv.bs_mp_select, "Data Collection Far") - sleep(1) - caput(pv.bs_roty, 0) - sleep(4) - caput(pv.bl_mp_select, "In") - logger.debug("Tray Robot Mount Done") - - # Tray Data Collection - elif action == "Tray_data_collection": - logger.debug("This should be E11 on the test tray (CrystalQuickX)") - caput(pv.ttab_x, 37.4) - caput(pv.hgon_trayys, -8.0) - caput(pv.hgon_trayzs, -2.1) - caput(pv.aptr1_mp_select, "In") - caput(pv.fluo_trans, "OUT") - caput(pv.bl_mp_select, "Out") - sleep(1) - caput(pv.bs_roty, 0) - sleep(1) - caput(pv.bs_mp_select, "Robot") - sleep(1) - caput(pv.bs_mp_select, "Data Collection") - sleep(1) - caput(pv.bs_roty, 0) - sleep(4) - caput(pv.bl_mp_select, "In") - logger.debug("Tray Data Collection Done") - - # Pin Switch to Tray - elif action == "Pin_switch2tray": - caput(pv.cstrm_p1701, 0) - caput(pv.cstrm_mp_select, "Away") - caput(pv.aptr1_mp_select, "Manual Mounting") - caput(pv.bl_mp_select, "Out") - caput(pv.hgon_omega, 0.0) - caput(pv.ttab_x, 0) - caput(pv.hgon_trayys, 0.0) - caput(pv.hgon_trayzs, 0.0) - caput(pv.ptab_y, -90) - caput(pv.fluo_trans, "OUT") - caput(pv.vgon_omega, 0) - caput(pv.vgon_kappa, 0) - caput(pv.vgon_phi, 0) - caput(pv.vgon_pinxs, 0) - caput(pv.vgon_pinyh, 0) - caput(pv.vgon_pinzs, 0) - while caget(pv.ttab_x + ".RBV") > 1: - logger.debug("moving ttab_x %s" % caget(pv.ttab_x)) - sleep(0.1) - while caget(pv.fluo_out_limit) == "OFF": - logger.debug("waiting on fluorescence detector") - sleep(0.1) - while caget(pv.bl_mp_select) != "Out": - logger.debug("waiting on back light to move to out") - sleep(0.1) - caput(pv.bs_mp_select, "Robot") - caput(pv.bs_roty, 0) - while caget(pv.ptab_y + ".RBV") > -89.0: - sleep(1) - logger.debug("Switch To Tray Done") - - # Tray Switch to Pin - elif action == "Tray_switch2pin": - caput(pv.ttab_x, 0.0) - # Supposed to absorb pin laser - caput(pv.hgon_trayys, 0.0) - caput(pv.hgon_trayzs, 0.0) - while caget(pv.ttab_x + ".RBV") > 1.0: - sleep(1) - caput(pv.ptab_y, 0) - while caget(pv.ptab_y + ".RBV") < -1.0: - sleep(1) - modechange("Pin_data_collection") - logger.debug("Switch To Pin Done") - else: - logger.debug("Unknown action: %s" % action) - return 1 - - -def pilatus(action, args_list=None): - logger.debug("***** Entering Pilatus") - logger.info("Setup pilatus - %s" % action) - if args_list: - for arg in args_list: - logger.debug("Argument: %s" % arg) - - # caput(pv.pilat_wavelength, caget(pv.dcm_lambda)) - caput(pv.pilat_detdist, caget(pv.det_z)) - caput(pv.pilat_filtertrasm, caget(pv.attn_match)) - logger.warning("WARNING: Have you set beam X and Y?") - # 16 Fed 2022 last change DA - caput(pv.pilat_beamx, 1298) - caput(pv.pilat_beamy, 1307) - sleep(0.1) - - # Fixed Target stage (very fast start and stop w/ triggering from GeoBrick - if action == "fastchip": - [filepath, filename, total_numb_imgs, exptime] = args_list - rampath = filepath.replace("dls/i24/data", "ramdisk") - acqtime = float(exptime) - 0.001 - logger.debug("Filepath was set as %s" % filepath) - logger.debug("Rampath set as %s" % rampath) - logger.debug("Filename set as %s" % filename) - logger.debug("total_numb_imgs %s" % total_numb_imgs) - logger.debug("Exposure time set as %s s" % exptime) - logger.debug("Acquire time set as %s s" % acqtime) - caput(pv.pilat_startangle, 0.0) - caput(pv.pilat_angleincr, 0.0) - caput(pv.pilat_omegaincr, 0.0) - caput(pv.pilat_filepath, rampath + "/") - caput(pv.pilat_filename, filename) - caput(pv.pilat_numimages, str(total_numb_imgs)) - caput(pv.pilat_acquiretime, str(acqtime)) - caput(pv.pilat_acquireperiod, str(exptime)) - caput(pv.pilat_imagemode, "Single") - caput(pv.pilat_triggermode, "Mult. Trigger") - caput(pv.pilat_delaytime, 0) - - # Quick set of images no coordinated motion - elif action == "quickshot": - logger.debug("quickshot") - [filepath, filename, num_imgs, exptime] = args_list - rampath = filepath.replace("dls/i24/data", "ramdisk") - caput(pv.pilat_filepath, rampath) - sleep(0.1) - caput(pv.pilat_filename, filename) - sleep(0.1) - acqtime = float(exptime) - 0.001 - caput(pv.pilat_acquiretime, str(acqtime)) - caput(pv.pilat_acquireperiod, str(exptime)) - logger.debug("Filepath was set as %s" % filepath) - logger.debug("Rampath set as %s" % rampath) - logger.debug("Filename set as %s" % filename) - logger.debug("num_imgs %s" % num_imgs) - logger.debug("Exposure time set as %s s" % exptime) - logger.debug("Acquire time set as %s s" % acqtime) - logger.debug("Pilatus takes time apprx 2sec") - sleep(2) - caput(pv.pilat_delaytime, 0.00) - caput(pv.pilat_numimages, str(num_imgs)) - caput(pv.pilat_imagemode, "Continuous") - caput(pv.pilat_triggermode, "Ext. Trigger") - sleep(0.2) - - elif action == "quickshot-internaltrig": - logger.debug("quickshot-internaltrig") - [filepath, filename, num_imgs, exptime] = args_list - rampath = filepath.replace("dls/i24/data", "ramdisk") - caput(pv.pilat_filepath, rampath) - sleep(0.1) - caput(pv.pilat_filename, filename) - sleep(0.1) - acqtime = float(exptime) - 0.001 - caput(pv.pilat_acquiretime, str(acqtime)) - caput(pv.pilat_acquireperiod, str(exptime)) - logger.debug("Filepath was set as %s" % filepath) - logger.debug("Rampath set as %s" % rampath) - logger.debug("Filename set as %s" % filename) - logger.debug("num_imgs %s" % num_imgs) - logger.debug("Exposure time set as %s s" % exptime) - logger.debug("Acquire time set as %s s" % acqtime) - logger.debug("Pilatus takes time apprx 2sec") - sleep(2) - caput(pv.pilat_delaytime, 0.00) - caput(pv.pilat_numimages, str(num_imgs)) - caput(pv.pilat_imagemode, "Continuous") - caput(pv.pilat_triggermode, "Internal") - sleep(0.2) - - # Put it all back to GDA acceptable defaults - elif action == "return to normal": - caput(pv.pilat_imagemode, "Continuous") - caput(pv.pilat_triggermode, "Ext. Trigger") - caput(pv.pilat_numexpimage, 1) - logger.debug("***** leaving pilatus") - sleep(0.1) - return 0 - - -def eiger(action, args_list=None): - logger.debug("***** Entering Eiger") - logger.info("Setup eiger - %s" % action) - if args_list: - for arg in args_list: - logger.debug("Argument: %s" % arg) - # caput(pv.eiger_wavelength, caget(pv.dcm_lambda)) - caput(pv.eiger_detdist, str(float(caget(pv.det_z)) / 1000)) - logger.warning("WARNING: Have you set header info?") - caput(pv.eiger_wavelength, caget(pv.dcm_lambda)) - caput(pv.eiger_omegaincr, 0.0) - caput(pv.eiger_beamx, 1605.7) - caput(pv.eiger_beamy, 1702.7) - sleep(0.1) - # Setup common to all collections ### - caput(pv.eiger_filewriter, "No") - caput(pv.eiger_stream, "Yes") - caput(pv.eiger_monitor, "No") - # caput(pv.eiger_datasource, 'None') - caput(pv.eiger_statuspoll, "1 second") - caput(pv.eiger_ROImode, "Disabled") - caput(pv.eiger_ff, "Enabled") - caput(pv.eiger_compresstype, "bslz4") - caput(pv.eiger_countmode, "Retrigger") - caput(pv.eiger_autosum, "Enabled") - caput(pv.eiger_hdrdetail, "All") - - # Quick set of images no coordinated motion - if action == "quickshot": - # Sends a single trigger to start data collection - logger.debug("Eiger quickshot") - [filepath, filename, num_imgs, exptime] = args_list - filename = filename + "_" + str(caget(pv.eiger_seqID)) - caput(pv.eiger_ODfilepath, filepath) - sleep(0.1) - caput(pv.eiger_ODfilename, filename) - sleep(0.1) - acqtime = float(exptime) - 0.0000001 - caput(pv.eiger_acquiretime, str(acqtime)) - logger.debug("Filepath was set as %s" % filepath) - logger.debug("Filename set as %s" % filename) - logger.debug("num_imgs %s" % num_imgs) - logger.debug("Exposure time set as %s s" % exptime) - logger.debug("Acquire time set as %s s" % acqtime) - caput(pv.eiger_acquireperiod, str(exptime)) - caput(pv.eiger_numimages, str(num_imgs)) - caput(pv.eiger_imagemode, "Continuous") - caput(pv.eiger_triggermode, "Internal Series") - caput(pv.eiger_numtriggers, 1) - caput(pv.eiger_manualtrigger, "Yes") - sleep(1.0) - # ODIN setup - logger.info("Setting up Odin") - caput(pv.eiger_ODfilename, filename) - caput(pv.eiger_ODfilepath, filepath) - caput(pv.eiger_ODnumcapture, str(num_imgs)) - caput(pv.eiger_ODfilepath, filepath) - eigerbdrbv = "UInt" + str(caget(pv.eiger_bitdepthrbv)) - caput(pv.eiger_ODdatatype, eigerbdrbv) - caput(pv.eiger_ODcompress, "BSL24") - sleep(1.0) - # All done. Now get Odin to wait for data and start Eiger - logger.info("Done: Odin waiting for data") - caput(pv.eiger_ODcapture, "Capture") - # If detector fails to arm first time can try twice with a sleep inbetween - logger.info("Arming Eiger") - caput(pv.eiger_acquire, "1") - # Will now wait for Manual trigger. Add the below line to your DAQ script ### - # caput(pv.eiger_trigger, 1) - - if action == "triggered": - # Send a trigger for every image. Records while TTL is high - logger.info("Eiger triggered") - [filepath, filename, num_imgs, exptime] = args_list - filename = filename + "_" + str(caget(pv.eiger_seqID)) - caput(pv.eiger_ODfilepath, filepath) - sleep(0.1) - caput(pv.eiger_ODfilename, filename) - sleep(0.1) - acqtime = float(exptime) - 0.0000001 - caput(pv.eiger_acquiretime, str(acqtime)) - logger.debug("Filepath was set as %s" % filepath) - logger.debug("Filename set as %s" % filename) - logger.debug("num_imgs %s" % num_imgs) - logger.debug("Exposure time set as %s s" % exptime) - logger.debug("Acquire time set as %s s" % acqtime) - caput(pv.eiger_acquireperiod, str(exptime)) - caput(pv.eiger_numimages, 1) - caput(pv.eiger_imagemode, "Continuous") - caput(pv.eiger_triggermode, "External Enable") - caput(pv.eiger_numtriggers, str(num_imgs)) - caput(pv.eiger_manualtrigger, "Yes") - sleep(1.0) - # ODIN setup # - logger.info("Setting up Odin") - caput(pv.eiger_ODfilename, filename) - caput(pv.eiger_ODfilepath, filepath) - caput(pv.eiger_ODnumcapture, str(num_imgs)) - caput(pv.eiger_ODfilepath, filepath) - eigerbdrbv = "UInt" + str(caget(pv.eiger_bitdepthrbv)) - caput(pv.eiger_ODdatatype, eigerbdrbv) - caput(pv.eiger_ODcompress, "BSL24") - sleep(1.0) - # All done. Now get Odin to wait for data and start Eiger - logger.info("Done: Odin waiting for data") - caput(pv.eiger_ODcapture, "Capture") - # If detector fails to arm first time can try twice with a sleep inbetween - logger.info("Arming Eiger") - caput(pv.eiger_acquire, "1") - # Will now wait for Manual trigger. Add the below line to your DAQ script - # caput(pv.eiger_trigger, 1) - - # Put it all back to GDA acceptable defaults - elif action == "return-to-normal": - caput(pv.eiger_manualtrigger, "No") - # caput(pv.eiger_seqID, int(caget(pv.eiger_seqID))+1) - logger.debug("***** leaving Eiger") - sleep(0.1) - return 0 - - -def xspress3(action, args_list=None): - logger.debug("***** Entering xspress3") - logger.info("xspress3 - %s" % action) - if args_list: - for arg in args_list: - logger.debug("Argument: %s" % arg) - - if action == "stop-and-start": - [exp_time, lo, hi] = args_list - caput(pv.xsp3_triggermode, "Internal") - caput(pv.xsp3_numimages, 1) - caput(pv.xsp3_acquiretime, exp_time) - caput(pv.xsp3_c1_mca_roi1_llm, lo) - caput(pv.xsp3_c1_mca_roi1_hlm, hi) - sleep(0.2) - caput(pv.xsp3_c1_mca_roi1_llm, lo) - caput(pv.xsp3_c1_mca_roi1_hlm, hi) - sleep(0.2) - caput(pv.xsp3_erase, 0) - - elif action == "on-the-fly": - [num_frms, lo, hi] = args_list - caput(pv.xsp3_triggermode, "TTL Veto Only") - caput(pv.xsp3_numimages, num_frms) - caput(pv.xsp3_c1_mca_roi1_llm, lo) - caput(pv.xsp3_c1_mca_roi1_hlm, hi) - sleep(0.2) - caput(pv.xsp3_c1_mca_roi1_llm, lo) - caput(pv.xsp3_c1_mca_roi1_hlm, hi) - sleep(0.2) - caput(pv.xsp3_erase, 0) - - elif action == "return-to-normal": - caput(pv.xsp3_triggermode, "TTL Veto Only") - caput(pv.xsp3_numimages, 1) - caput(pv.xsp3_acquiretime, 1) - caput(pv.xsp3_c1_mca_roi1_llm, 0) - caput(pv.xsp3_c1_mca_roi1_hlm, 0) - caput(pv.xsp3_erase, 0) - - else: - logger.error("Unknown action for xspress3 method:", action) - - sleep(0.1) - logger.debug("***** leaving xspress3") - return 1 diff --git a/src/mx_bluesky/I24/serial/setup_beamline/setup_detector.py b/src/mx_bluesky/I24/serial/setup_beamline/setup_detector.py deleted file mode 100644 index 03e4227ef..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/setup_detector.py +++ /dev/null @@ -1,107 +0,0 @@ -""" -Utilities for defining the detector in use, and moving the stage. -""" - -import logging -import time -from enum import IntEnum -from typing import Generator - -import bluesky.plan_stubs as bps -from blueapi.core import MsgGenerator -from bluesky.utils import Msg -from dodal.common import inject -from dodal.devices.i24.I24_detector_motion import DetectorMotion - -from mx_bluesky.I24.serial import log -from mx_bluesky.I24.serial.parameters import SSXType -from mx_bluesky.I24.serial.setup_beamline import pv -from mx_bluesky.I24.serial.setup_beamline.ca import caget -from mx_bluesky.I24.serial.setup_beamline.pv_abstract import ( - Detector, - Eiger, - Pilatus, -) - -logger = logging.getLogger("I24ssx.sup_det") - -EXPT_TYPE_DETECTOR_PVS = { - SSXType.FIXED: pv.me14e_gp101, - SSXType.EXTRUDER: pv.ioc12_gp15, -} - - -class DetRequest(IntEnum): - eiger = 0 - pilatus = 1 - - def __str__(self) -> str: - return self.name - - -def setup_logging(): - logfile = time.strftime("SSXdetectorOps_%d%B%y.log").lower() - log.config(logfile) - - -class UnknownDetectorType(Exception): - pass - - -def get_detector_type(detector_stage: DetectorMotion) -> Generator[Msg, None, Detector]: - det_y = yield from bps.rd(detector_stage.y) - # DetectorMotion should also be used for this. - # This should be part of https://github.com/DiamondLightSource/mx_bluesky/issues/51 - if float(det_y) < Eiger.det_y_threshold: - logger.info("Eiger detector in use.") - return Eiger() - elif float(det_y) > Pilatus.det_y_threshold: - logger.info("Pilatus detector in use.") - return Pilatus() - else: - logger.error("Detector not found.") - raise UnknownDetectorType("Detector not found.") - - -def _move_detector_stage(detector_stage: DetectorMotion, target: float) -> MsgGenerator: - logger.info(f"Moving detector stage to target position: {target}.") - yield from bps.mv(detector_stage.y, target) - - -# Workaround in case the PV value has been set to the detector name -def _get_requested_detector(det_type_pv: str) -> str: - """Get the requested detector name from the PV value. - - Args: - det_type_pv (str): PV associated to the detector request. This is usually a \ - general purpose PV set up for the serial collection which could contain \ - a string or and int. - - Returns: - str: The detector name as a string, currently "eiger" or "pilatus". - """ - det_type = caget(det_type_pv) - if det_type in ["pilatus", "eiger"]: - return det_type - else: - try: - det_type = int(det_type) - return str(DetRequest(det_type)) - except ValueError: - raise - - -def setup_detector_stage( - expt_type: SSXType, detector_stage: DetectorMotion = inject("detector_motion") -) -> MsgGenerator: - setup_logging() - # Grab the correct PV depending on experiment - # Its value is set with MUX on edm screen - det_type_pv = EXPT_TYPE_DETECTOR_PVS[expt_type] - requested_detector = _get_requested_detector(det_type_pv) - logger.info(f"Requested detector: {requested_detector}.") - det_y_target = ( - Eiger.det_y_target if requested_detector == "eiger" else Pilatus.det_y_target - ) - yield from _move_detector_stage(detector_stage, det_y_target) - logger.info("Detector setup done.") diff --git a/src/mx_bluesky/I24/serial/setup_beamline/setup_zebra_plans.py b/src/mx_bluesky/I24/serial/setup_beamline/setup_zebra_plans.py deleted file mode 100644 index 248700305..000000000 --- a/src/mx_bluesky/I24/serial/setup_beamline/setup_zebra_plans.py +++ /dev/null @@ -1,456 +0,0 @@ -""" -Zebra setup plans for extruder and fastchip serial collections. - -For clarification on the Zebra setup in either use case, please see -https://confluence.diamond.ac.uk/display/MXTech/Zebra+settings+I24 - -Note on soft inputs. In the code, soft inputs are 1 indexed following the numbering on -the edm screen, while on the schematics they are 0 indexed. Thus, `Soft In 1` from the -schematics corresponds to soft_in_2 in the code. -""" - -import logging -from typing import Tuple - -import bluesky.plan_stubs as bps -from dodal.devices.zebra import ( - AND3, - AND4, - DISCONNECT, - IN1_TTL, - IN3_TTL, - OR1, - PC_ARM, - PC_GATE, - PC_PULSE, - PULSE1, - PULSE2, - SOFT_IN2, - SOFT_IN3, - ArmDemand, - ArmSource, - I24Axes, - RotationDirection, - SoftInState, - TrigSource, - Zebra, -) - -# Detector specific outs -TTL_EIGER = 1 -TTL_PILATUS = 2 -TTL_FAST_SHUTTER = 4 - -SHUTTER_MODE = { - "manual": SoftInState.NO, - "auto": SoftInState.YES, -} - -GATE_START = 1.0 -SHUTTER_OPEN_TIME = 0.05 # For pp with long delays - -logger = logging.getLogger("I24ssx.setup_zebra") - - -def get_zebra_settings_for_extruder( - exp_time: float, - pump_exp: float, - pump_delay: float, -) -> Tuple[float, float]: - """Calculates and returns gate width and step for extruder collections with pump \ - probe. - - The gate width is calculated by adding the exposure time, pump exposure and \ - pump delay. From this value, the gate step is obtained by adding a 0.01 buffer to \ - the width. The value of this buffer is empirically determined. - """ - pump_probe_buffer = 0.01 - gate_width = pump_exp + pump_delay + exp_time - gate_step = gate_width + pump_probe_buffer - return gate_width, gate_step - - -def arm_zebra(zebra: Zebra): - yield from bps.abs_set(zebra.pc.arm, ArmDemand.ARM, wait=True) - logger.info("Zebra armed.") - - -def disarm_zebra(zebra: Zebra): - yield from bps.abs_set(zebra.pc.arm, ArmDemand.DISARM, wait=True) - logger.info("Zebra disarmed.") - - -def open_fast_shutter(zebra: Zebra): - yield from bps.abs_set(zebra.inputs.soft_in_2, SoftInState.YES, wait=True) - logger.info("Fast shutter open.") - - -def close_fast_shutter(zebra: Zebra): - yield from bps.abs_set(zebra.inputs.soft_in_2, SoftInState.NO, wait=True) - logger.info("Fast shutter closed.") - - -def set_shutter_mode(zebra: Zebra, mode: str): - # SOFT_IN:B0 has to be disabled for manual mode - yield from bps.abs_set(zebra.inputs.soft_in_1, SHUTTER_MODE[mode], wait=True) - logger.info(f"Shutter mode set to {mode}.") - - -def setup_pc_sources( - zebra: Zebra, gate_source: int, pulse_source: int, group: str = "pc_sources" -): - yield from bps.abs_set(zebra.pc.gate_source, gate_source, group=group) - yield from bps.abs_set(zebra.pc.pulse_source, pulse_source, group=group) - yield from bps.wait(group) - - -def setup_zebra_for_quickshot_plan( - zebra: Zebra, - exp_time: float, - num_images: int, - group: str = "setup_zebra_for_quickshot", - wait: bool = True, -): - """Set up the zebra for a static extruder experiment. - - Gate source set to 'External' and Pulse source set to 'Time'. - The gate start is set to 1.0 and the gate width is calculated from \ - exposure time*number of images plus a 0.5 buffer. - - Args: - zebra (Zebra): The zebra ophyd device. - exp_time (float): Collection exposure time, in s. - num_images (float): Number of images to be collected. - """ - logger.info("Setup ZEBRA for quickshot collection.") - yield from bps.abs_set(zebra.pc.arm_source, ArmSource.SOFT, group=group) - yield from setup_pc_sources(zebra, TrigSource.TIME, TrigSource.EXTERNAL) - - gate_width = exp_time * num_images + 0.5 - logger.info(f"Gate start set to {GATE_START}, with width {gate_width}.") - yield from bps.abs_set(zebra.pc.gate_start, GATE_START, group=group) - yield from bps.abs_set(zebra.pc.gate_width, gate_width, group=group) - - yield from bps.abs_set(zebra.pc.gate_input, SOFT_IN2, group=group) - yield from bps.sleep(0.1) - - if wait: - yield from bps.wait(group) - logger.info("Finished setting up zebra.") - - -def set_logic_gates_for_porto_triggering( - zebra: Zebra, group: str = "porto_logic_gates" -): - # To OUT2_TTL - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[1], SOFT_IN2, group=group - ) - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[2], PULSE1, group=group - ) - # To OUT1_TTL - yield from bps.abs_set( - zebra.logic_gates.and_gates[4].sources[1], SOFT_IN2, group=group - ) - yield from bps.abs_set( - zebra.logic_gates.and_gates[4].sources[2], PULSE2, group=group - ) - yield from bps.wait(group=group) - - -def setup_zebra_for_extruder_with_pump_probe_plan( - zebra: Zebra, - det_type: str, - exp_time: float, - num_images: int, - pump_exp: float, - pump_delay: float, - pulse1_delay: float = 0.0, - group: str = "setup_zebra_for_extruder_pp", - wait: bool = True, -): - """Zebra setup for extruder pump probe experiment using PORTO laser triggering. - - For this use case, both the laser and detector set up is taken care of by the Zebra. - WARNING. This means that some hardware changes have been made. - Because all four of the zebra ttl outputs are in use in this mode, when the \ - detector in use is the Eiger, the Pilatus cable is repurposed to trigger the light \ - source, and viceversa. - - The data collection output is OUT1_TTL for Eiger and OUT2_TTL for Pilatus and \ - should be set to AND3. - - Position compare settings: - - The gate input is on SOFT_IN2. - - The number of gates should be equal to the number of images to collect. - - Gate source set to 'Time' and Pulse source set to 'External'. - - Pulse output settings: - - Pulse1 is the laser control on the Zebra. It is set with a 0.0 delay and a \ - width equal to the requested laser dwell. - - Pulse2 is the detector control. It is set with a delay equal to the laser \ - delay and a width equal to the exposure time. - - Args: - zebra (Zebra): The zebra ophyd device. - det_type (str): Detector in use, current choices are Eiger or Pilatus. - exp_time (float): Collection exposure time, in s. - num_images (int): Number of images to be collected. - pump_exp (float): Laser dwell, in s. - pump_delay (float): Laser delay, in s. - pulse1_delay (float, optional): Delay to start pulse1 (the laser control) after \ - gate start. Defaults to 0.0. - """ - logger.info("Setup ZEBRA for pump probe extruder collection.") - - yield from set_shutter_mode(zebra, "manual") - - # Set gate to "Time" and pulse source to "External" - yield from setup_pc_sources(zebra, TrigSource.TIME, TrigSource.EXTERNAL) - - # Logic gates - yield from set_logic_gates_for_porto_triggering(zebra) - - # Set TTL out depending on detector type - DET_TTL = TTL_EIGER if det_type == "eiger" else TTL_PILATUS - LASER_TTL = TTL_PILATUS if det_type == "eiger" else TTL_EIGER - yield from bps.abs_set(zebra.output.out_pvs[DET_TTL], AND4, group=group) - yield from bps.abs_set(zebra.output.out_pvs[LASER_TTL], AND3, group=group) - - yield from bps.abs_set(zebra.pc.gate_input, SOFT_IN2, group=group) - - gate_width, gate_step = get_zebra_settings_for_extruder( - exp_time, pump_exp, pump_delay - ) - logger.info( - f""" - Gate start set to {GATE_START}, with calculated width {gate_width} - and step {gate_step}. - """ - ) - yield from bps.abs_set(zebra.pc.gate_start, GATE_START, group=group) - yield from bps.abs_set(zebra.pc.gate_width, gate_width, group=group) - yield from bps.abs_set(zebra.pc.gate_step, gate_step, group=group) - # Number of gates is the same as the number of images - yield from bps.abs_set(zebra.pc.num_gates, num_images, group=group) - - # Settings for extruder pump probe: - # PULSE1_DLY is the start (0 usually), PULSE1_WID is the laser dwell set on edm - # PULSE2_DLY is the laser delay set on edm, PULSE2_WID is the exposure time - logger.info( - f"Pulse1 starting at {pulse1_delay} with width set to laser dwell {pump_exp}." - ) - yield from bps.abs_set(zebra.output.pulse_1.input, PC_GATE, group=group) - yield from bps.abs_set(zebra.output.pulse_1.delay, pulse1_delay, group=group) - yield from bps.abs_set(zebra.output.pulse_1.width, pump_exp, group=group) - logger.info( - f""" - Pulse2 starting at laser delay {pump_delay} with width set to \ - exposure time {exp_time}. - """ - ) - yield from bps.abs_set(zebra.output.pulse_2.input, PC_GATE, group=group) - yield from bps.abs_set(zebra.output.pulse_2.delay, pump_delay, group=group) - yield from bps.abs_set(zebra.output.pulse_2.width, exp_time, group=group) - - if wait: - yield from bps.wait(group) - logger.info("Finished setting up zebra.") - - -def setup_zebra_for_fastchip_plan( - zebra: Zebra, - det_type: str, - num_gates: int, - num_exposures: int, - exposure_time: float, - start_time_offset: float = 0.0, - group: str = "setup_zebra_for_fastchip", - wait: bool = True, -): - """Zebra setup for fixed-target triggering. - - For this use case, the laser set up is taken care of by the geobrick, leaving only \ - the detector side set up to the Zebra. - The data collection output is OUT1_TTL for Eiger and OUT2_TTL for Pilatus and \ - should be set to AND3. - - Position compare settings: - - The gate input is on IN3_TTL. - - The number of gates should be equal to the number of apertures to collect. - - Gate source set to 'External' and Pulse source set to 'Time' - - Trigger source set to the exposure time with a 100us buffer in order to \ - avoid missing any triggers. - - The trigger width is calculated depending on which detector is in use: the \ - Pilatus only needs the trigger rising edge to collect for a set time, while \ - the Eiger (used here in Externally Interrupter Exposure Series mode) \ - will only collect while the signal is high and will stop once a falling \ - edge is detected. For this reason a square wave pulse width will be set to \ - half the exposure time in the Pilatus case, and to the exposure time minus \ - a small drop (~100um) for the Eiger. - - Args: - zebra (Zebra): The zebra ophyd device. - det_type (str): Detector in use, current choices are Eiger or Pilatus. - num_gates (int): Number of apertures to visit in a chip. - num_exposures (int): Number of times data is collected in each aperture. - exposure_time (float): Exposure time for each shot. - start_time_offset (float): Delay on the start of the position compare. \ - Defaults to 0.0 (standard chip collection). - """ - logger.info("Setup ZEBRA for a fixed target collection.") - - yield from set_shutter_mode(zebra, "manual") - - yield from setup_pc_sources(zebra, TrigSource.EXTERNAL, TrigSource.TIME) - - # Logic Gates - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[1], SOFT_IN2, group=group - ) - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[2], PC_PULSE, group=group - ) - - yield from bps.abs_set(zebra.pc.gate_input, IN3_TTL, group=group) - - # Set TTL out depending on detector type - # And calculate some of the other settings - if det_type == "eiger": - yield from bps.abs_set(zebra.output.out_pvs[TTL_EIGER], AND3, group=group) - if det_type == "pilatus": - yield from bps.abs_set(zebra.output.out_pvs[TTL_PILATUS], AND3, group=group) - - # Square wave - needs a small drop to make it work for eiger - pulse_width = exposure_time - 0.0001 if det_type == "eiger" else exposure_time / 2 - - # 100us buffer needed to avoid missing some of the triggers - exptime_buffer = exposure_time + 0.0001 - - # Number of gates is the number of windows collected - yield from bps.abs_set(zebra.pc.num_gates, num_gates, group=group) - - yield from bps.abs_set(zebra.pc.pulse_start, start_time_offset, group=group) - yield from bps.abs_set(zebra.pc.pulse_step, exptime_buffer, group=group) - yield from bps.abs_set(zebra.pc.pulse_width, pulse_width, group=group) - yield from bps.abs_set(zebra.pc.pulse_max, num_exposures, group=group) - - if wait: - yield from bps.wait(group) - logger.info("Finished setting up zebra.") - - -def open_fast_shutter_at_each_position_plan( - zebra: Zebra, - num_exposures: int, - exposure_time: float, - group: str = "fast_shutter_control", - wait: bool = True, -): - """A plan to control the fast shutter so that it will open at each position. - This plan is a specific setup for pump probe fixed target triggering with long \ - delays between exposures. - - For this use case, the fast shutter opens and closes at every position to avoid \ - destroying the crystals by exposing them to the beam for a long time in between \ - collections. - - The shutter opening time, hardcoded to 0.05, has been empirically determined. - - Fast shutter (Pulse2) output settings: - - Output is OUT4_TTL set to PULSE2. - - Pulse2 is set with a delay equal to 0 and a width equal to the exposure time \ - multiplied by the number of exposures, plus the shutter opening time. - - Args: - zebra (Zebra): The zebra ophyd device. - num_exposures (int): Number of times data is collected in each aperture. - exposure_time (float): Exposure time for each shot. - """ - logger.info( - "ZEBRA setup for fastchip collection with long delays between exposures." - ) - logger.debug("Controlling the fast shutter on PULSE2.") - # Output panel pulse_2 settings - yield from bps.abs_set(zebra.output.pulse_2.input, PC_GATE, group=group) - yield from bps.abs_set(zebra.output.pulse_2.delay, 0.0, group=group) - pulse2_width = num_exposures * exposure_time + SHUTTER_OPEN_TIME - yield from bps.abs_set(zebra.output.pulse_2.width, pulse2_width, group=group) - - # Fast shutter - yield from bps.abs_set(zebra.output.out_pvs[TTL_FAST_SHUTTER], PULSE2, group=group) - - if wait: - yield from bps.wait(group=group) - logger.debug("Finished setting up for long delays.") - - -def reset_pc_gate_and_pulse(zebra: Zebra, group: str = "reset_pc"): - yield from bps.abs_set(zebra.pc.gate_start, 0, group=group) - yield from bps.abs_set(zebra.pc.pulse_width, 0, group=group) - yield from bps.abs_set(zebra.pc.pulse_step, 0, group=group) - yield from bps.wait(group=group) - - -def reset_output_panel(zebra: Zebra, group: str = "reset_zebra_outputs"): - # Reset TTL out - yield from bps.abs_set(zebra.output.out_pvs[2], PC_GATE, group=group) - yield from bps.abs_set(zebra.output.out_pvs[3], DISCONNECT, group=group) - yield from bps.abs_set(zebra.output.out_pvs[4], OR1, group=group) - - yield from bps.abs_set(zebra.output.pulse_1.input, DISCONNECT, group=group) - yield from bps.abs_set(zebra.output.pulse_2.input, DISCONNECT, group=group) - - yield from bps.wait(group=group) - - -def zebra_return_to_normal_plan( - zebra: Zebra, group: str = "zebra-return-to-normal", wait: bool = True -): - """A plan to reset the Zebra settings at the end of a collection. - - This plan should only be run after disarming the Zebra. - """ - yield from bps.abs_set(zebra.pc.reset, 1, group=group) - - # Reset PC_GATE and PC_SOURCE to "Position" - yield from setup_pc_sources(zebra, TrigSource.POSITION, TrigSource.POSITION) - - yield from bps.abs_set(zebra.pc.gate_input, SOFT_IN3, group=group) - yield from bps.abs_set(zebra.pc.num_gates, 1, group=group) - yield from bps.abs_set(zebra.pc.pulse_input, DISCONNECT, group=group) - - # Logic Gates - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[1], PC_ARM, group=group - ) - yield from bps.abs_set( - zebra.logic_gates.and_gates[3].sources[2], IN1_TTL, group=group - ) - - # Reset TTL out - yield from reset_output_panel(zebra) - - # Reset Pos Trigger and direction to rotation axis ("omega") and positive - yield from bps.abs_set(zebra.pc.gate_trigger, I24Axes.OMEGA.value, group=group) - yield from bps.abs_set(zebra.pc.dir, RotationDirection.POSITIVE, group=group) - - # - yield from reset_pc_gate_and_pulse(zebra) - - if wait: - yield from bps.wait(group) - logger.info("Zebra settings back to normal.") - - -def reset_zebra_when_collection_done_plan(zebra: Zebra): - """ - End of collection zebra operations: close fast shutter, disarm and reset settings. - """ - logger.debug("Close the fast shutter.") - yield from close_fast_shutter(zebra) - logger.debug("Disarm the zebra.") - yield from disarm_zebra(zebra) - logger.debug("Set zebra back to normal.") - yield from zebra_return_to_normal_plan(zebra, wait=True) diff --git a/src/mx_bluesky/I24/serial/start_blueapi.sh b/src/mx_bluesky/I24/serial/start_blueapi.sh deleted file mode 100644 index 3ae1c394f..000000000 --- a/src/mx_bluesky/I24/serial/start_blueapi.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# Get the directory of this script -current=$( realpath "$( dirname "$0" )" ) - -# Start the blueapi worker using the config file in this module -echo "Starting the blueapi runner" -blueapi -c "${current}/blueapi_config.yaml" serve & - -# Wait for blueapi to start -for i in {1..30} -do - echo "$(date)" - curl --head -X GET http://localhost:25565/status >/dev/null - ret_value=$? - if [ $ret_value -ne 0 ]; then - sleep 1 - else - break - fi -done - -if [ $ret_value -ne 0 ]; then - echo "$(date) BLUEAPI Failed to start!!!!" - exit 1 -else - echo "$(date) BLUEAPI started" -fi \ No newline at end of file diff --git a/src/mx_bluesky/I24/serial/write_nexus.py b/src/mx_bluesky/I24/serial/write_nexus.py deleted file mode 100644 index 97ead6025..000000000 --- a/src/mx_bluesky/I24/serial/write_nexus.py +++ /dev/null @@ -1,102 +0,0 @@ -import logging -import os -import pathlib -import pprint -import time -from datetime import datetime -from typing import Dict, Literal - -import requests - -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType, MappingType -from mx_bluesky.I24.serial.parameters import ExtruderParameters, FixedTargetParameters -from mx_bluesky.I24.serial.setup_beamline import Eiger, caget, cagetstring - -logger = logging.getLogger("I24ssx.nexus_writer") - - -def call_nexgen( - chip_prog_dict: Dict | None, - start_time: datetime, - parameters: ExtruderParameters | FixedTargetParameters, - wavelength: float, - expt_type: Literal["fixed-target", "extruder"] = "fixed-target", -): - det_type = parameters.detector_name - print(f"det_type: {det_type}") - - if expt_type == "fixed-target" and isinstance(parameters, FixedTargetParameters): - if ( - parameters.map_type == MappingType.NoMap - or parameters.chip.chip_type == ChipType.Custom - ): - # NOTE Nexgen server is still on nexgen v0.7.2 (fully working for ssx) - # Will need to be updated, for correctness sake map needs to be None. - currentchipmap = None - else: - currentchipmap = "/dls_sw/i24/scripts/fastchips/litemaps/currentchip.map" - pump_status = bool(parameters.pump_repeat) - total_numb_imgs = parameters.total_num_images - elif expt_type == "extruder" and isinstance(parameters, ExtruderParameters): - # chip_prog_dict should be None for extruder (passed as input for now) - total_numb_imgs = parameters.num_images - currentchipmap = None - pump_status = parameters.pump_status - - filename_prefix = cagetstring(Eiger.pv.filenameRBV) - meta_h5 = ( - pathlib.Path(parameters.visit) - / parameters.directory - / f"{filename_prefix}_meta.h5" - ) - t0 = time.time() - max_wait = 60 # seconds - logger.info(f"Watching for {meta_h5}") - while time.time() - t0 < max_wait: - if meta_h5.exists(): - logger.info(f"Found {meta_h5} after {time.time() - t0:.1f} seconds") - time.sleep(5) - break - logger.debug(f"Waiting for {meta_h5}") - time.sleep(1) - if not meta_h5.exists(): - logger.warning(f"Giving up waiting for {meta_h5} after {max_wait} seconds") - return False - - transmission = (float(caget(Eiger.pv.transmission)),) - - if det_type == Eiger.name: - bit_depth = int(caget(Eiger.pv.bit_depth)) - logger.debug( - f"Call to nexgen server with the following chip definition: \n{chip_prog_dict}" - ) - - access_token = pathlib.Path("/scratch/ssx_nexgen.key").read_text().strip() - url = "https://ssx-nexgen.diamond.ac.uk/ssx_eiger/write" - headers = {"Authorization": f"Bearer {access_token}"} - - payload = { - "beamline": "i24", - "beam_center": [caget(Eiger.pv.beamx), caget(Eiger.pv.beamy)], - "chipmap": currentchipmap, - "chip_info": chip_prog_dict, - "det_dist": parameters.detector_distance_mm, - "exp_time": parameters.exposure_time_s, - "expt_type": expt_type, - "filename": filename_prefix, - "num_imgs": total_numb_imgs, - "pump_status": pump_status, - "pump_exp": parameters.laser_dwell_s, - "pump_delay": parameters.laser_delay_s, - "transmission": transmission[0], - "visitpath": os.fspath(meta_h5.parent), - "wavelength": wavelength, - "bit_depth": bit_depth, - } - logger.info(f"Sending POST request to {url} with payload:") - logger.info(pprint.pformat(payload)) - response = requests.post(url, headers=headers, json=payload) - logger.info(f"Response: {response.text} (status code: {response.status_code})") - # the following will raise an error if the request was unsuccessful - return response.status_code == requests.codes.ok - return False diff --git a/tests/I24/serial/__init__.py b/tests/I24/serial/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/I24/serial/conftest.py b/tests/I24/serial/conftest.py deleted file mode 100644 index efe215162..000000000 --- a/tests/I24/serial/conftest.py +++ /dev/null @@ -1,127 +0,0 @@ -from __future__ import annotations - -import asyncio -import time -from unittest.mock import AsyncMock - -import pytest -from bluesky.run_engine import RunEngine -from dodal.beamlines import i24 -from dodal.devices.hutch_shutter import ( - HUTCH_SAFE_FOR_OPERATIONS, - HutchShutter, - ShutterDemand, - ShutterState, -) -from dodal.devices.i24.aperture import Aperture -from dodal.devices.i24.beamstop import Beamstop -from dodal.devices.i24.dcm import DCM -from dodal.devices.i24.dual_backlight import DualBacklight -from dodal.devices.i24.pmac import PMAC -from dodal.devices.zebra import Zebra -from ophyd_async.core import callback_on_mock_put, set_mock_value -from ophyd_async.epics.motion import Motor - - -def patch_motor(motor: Motor, initial_position: float = 0): - set_mock_value(motor.user_setpoint, initial_position) - set_mock_value(motor.user_readback, initial_position) - set_mock_value(motor.deadband, 0.001) - set_mock_value(motor.motor_done_move, 1) - set_mock_value(motor.velocity, 3) - return callback_on_mock_put( - motor.user_setpoint, - lambda pos, *args, **kwargs: set_mock_value(motor.user_readback, pos), - ) - - -@pytest.fixture -async def RE(): - RE = RunEngine() - # make sure the event loop is thoroughly up and running before we try to create - # any ophyd_async devices which might need it - timeout = time.monotonic() + 1 - while not RE.loop.is_running(): - await asyncio.sleep(0) - if time.monotonic() > timeout: - raise TimeoutError("This really shouldn't happen but just in case...") - yield RE - - -@pytest.fixture -def zebra(RE) -> Zebra: - zebra = i24.zebra(fake_with_ophyd_sim=True) - - async def mock_disarm(_): - await zebra.pc.arm.armed._backend.put(0) # type: ignore - - async def mock_arm(_): - await zebra.pc.arm.armed._backend.put(1) # type: ignore - - zebra.pc.arm.arm_set.set = AsyncMock(side_effect=mock_arm) - zebra.pc.arm.disarm_set.set = AsyncMock(side_effect=mock_disarm) - return zebra - - -@pytest.fixture -def shutter(RE) -> HutchShutter: - shutter = i24.shutter(fake_with_ophyd_sim=True) - set_mock_value(shutter.interlock.status, HUTCH_SAFE_FOR_OPERATIONS) - - def set_status(value: ShutterDemand, *args, **kwargs): - value_sta = ShutterState.OPEN if value == "Open" else ShutterState.CLOSED - set_mock_value(shutter.status, value_sta) - - callback_on_mock_put(shutter.control, set_status) - return shutter - - -@pytest.fixture -def detector_stage(RE): - detector_motion = i24.detector_motion(fake_with_ophyd_sim=True) - - with patch_motor(detector_motion.y), patch_motor(detector_motion.z): - yield detector_motion - - -@pytest.fixture -def aperture(RE): - aperture: Aperture = i24.aperture(fake_with_ophyd_sim=True) - with patch_motor(aperture.x), patch_motor(aperture.y): - yield aperture - - -@pytest.fixture -def backlight(RE) -> DualBacklight: - backlight = i24.backlight(fake_with_ophyd_sim=True) - return backlight - - -@pytest.fixture -def beamstop(RE): - beamstop: Beamstop = i24.beamstop(fake_with_ophyd_sim=True) - - with ( - patch_motor(beamstop.x), - patch_motor(beamstop.y), - patch_motor(beamstop.z), - patch_motor(beamstop.y_rotation), - ): - yield beamstop - - -@pytest.fixture -def pmac(RE): - pmac: PMAC = i24.pmac(fake_with_ophyd_sim=True) - with ( - patch_motor(pmac.x), - patch_motor(pmac.y), - patch_motor(pmac.z), - ): - yield pmac - - -@pytest.fixture -def dcm(RE) -> DCM: - dcm = i24.dcm(fake_with_ophyd_sim=True) - return dcm diff --git a/tests/I24/serial/extruder/__init__.py b/tests/I24/serial/extruder/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/I24/serial/extruder/test_extruder_collect.py b/tests/I24/serial/extruder/test_extruder_collect.py deleted file mode 100644 index b3cef31a1..000000000 --- a/tests/I24/serial/extruder/test_extruder_collect.py +++ /dev/null @@ -1,293 +0,0 @@ -from unittest.mock import ANY, MagicMock, call, patch - -import bluesky.plan_stubs as bps -import pytest -from dodal.devices.zebra import DISCONNECT, SOFT_IN3 -from ophyd_async.core import get_mock_put - -from mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2 import ( - TTL_EIGER, - TTL_PILATUS, - collection_aborted_plan, - collection_complete_plan, - enter_hutch, - initialise_extruder, - laser_check, - main_extruder_plan, - tidy_up_at_collection_end_plan, -) -from mx_bluesky.I24.serial.parameters import ExtruderParameters -from mx_bluesky.I24.serial.setup_beamline import Eiger, Pilatus - - -@pytest.fixture -def dummy_params(): - params = { - "visit": "foo", - "directory": "bar", - "filename": "protein", - "exposure_time_s": 0.1, - "detector_distance_mm": 100, - "detector_name": "eiger", - "num_images": 10, - "pump_status": False, - } - return ExtruderParameters(**params) - - -@pytest.fixture -def dummy_params_pp(): - params_pp = { - "visit": "foo", - "directory": "bar", - "filename": "protein", - "exposure_time_s": 0.1, - "detector_distance_mm": 100, - "detector_name": "pilatus", - "num_images": 10, - "pump_status": True, - "laser_dwell_s": 0.01, - "laser_delay_s": 0.005, - } - return ExtruderParameters(**params_pp) - - -def fake_generator(value): - yield from bps.null() - return value - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caget") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.get_detector_type") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.logger") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_logging") -def test_initialise_extruder( - fake_log_setup, - fake_log, - fake_det, - fake_caput, - fake_caget, - detector_stage, - RE, -): - fake_caget.return_value = "/path/to/visit" - fake_det.side_effect = [fake_generator(Eiger())] - RE(initialise_extruder(detector_stage)) - assert fake_caput.call_count == 10 - assert fake_caget.call_count == 1 - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_logging") -async def test_enterhutch(fake_log_setup, detector_stage, RE): - RE(enter_hutch(detector_stage)) - assert await detector_stage.z.user_readback.get_value() == 1480 - - -@pytest.mark.parametrize( - "laser_mode, det_type, expected_in1, expected_out", - [ - ("laseron", Eiger(), "Yes", SOFT_IN3), - ("laseroff", Eiger(), "No", DISCONNECT), - ("laseron", Pilatus(), "Yes", SOFT_IN3), - ("laseroff", Pilatus(), "No", DISCONNECT), - ], -) -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.get_detector_type") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_logging") -async def test_laser_check( - fake_log_setup, - fake_det, - laser_mode, - expected_in1, - expected_out, - det_type, - zebra, - detector_stage, - RE, -): - fake_det.side_effect = [fake_generator(det_type)] - RE(laser_check(laser_mode, zebra, detector_stage)) - - TTL = TTL_EIGER if isinstance(det_type, Pilatus) else TTL_PILATUS - assert await zebra.inputs.soft_in_1.get_value() == expected_in1 - assert await zebra.output.out_pvs[TTL].get_value() == expected_out - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sleep") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.DCID") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.call_nexgen") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caget") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sup") -@patch( - "mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_zebra_for_quickshot_plan" -) -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_logging") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.bps.rd") -def test_run_extruder_quickshot_with_eiger( - fake_read, - fake_log_setup, - mock_quickshot_plan, - fake_sup, - fake_caget, - fake_caput, - fake_nexgen, - fake_dcid, - fake_sleep, - RE, - zebra, - shutter, - aperture, - backlight, - beamstop, - detector_stage, - dcm, - dummy_params, -): - fake_start_time = MagicMock() - # Mock end of data collection (zebra disarmed) - fake_read.side_effect = [fake_generator(0.6), fake_generator(0)] - RE( - main_extruder_plan( - zebra, - aperture, - backlight, - beamstop, - detector_stage, - shutter, - dcm, - dummy_params, - fake_dcid, - fake_start_time, - ) - ) - fake_nexgen.assert_called_once_with(None, ANY, dummy_params, 0.6, "extruder") - assert fake_dcid.generate_dcid.call_count == 1 - assert fake_dcid.notify_start.call_count == 1 - assert fake_sup.setup_beamline_for_collection_plan.call_count == 1 - # Check temporary piilatus hack is in there - assert fake_sup.pilatus.call_count == 2 - mock_quickshot_plan.assert_called_once() - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sleep") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.DCID") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caget") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sup") -@patch( - "mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_zebra_for_extruder_with_pump_probe_plan" -) -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.setup_logging") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.bps.rd") -def test_run_extruder_pump_probe_with_pilatus( - fake_read, - fake_log_setup, - mock_pp_plan, - fake_sup, - fake_caget, - fake_caput, - fake_dcid, - fake_sleep, - RE, - zebra, - shutter, - aperture, - backlight, - beamstop, - detector_stage, - dcm, - dummy_params_pp, -): - fake_start_time = MagicMock() - # Mock end of data collection (zebra disarmed) - fake_read.side_effect = [fake_generator(0)] - RE( - main_extruder_plan( - zebra, - aperture, - backlight, - beamstop, - detector_stage, - shutter, - dcm, - dummy_params_pp, - fake_dcid, - fake_start_time, - ) - ) - assert fake_dcid.generate_dcid.call_count == 1 - assert fake_dcid.notify_start.call_count == 1 - assert fake_sup.move_detector_stage_to_position_plan.call_count == 1 - mock_pp_plan.assert_called_once() - - shutter_call_list = [ - call("Reset", wait=True, timeout=10.0), - call("Open", wait=True, timeout=10.0), - ] - mock_shutter = get_mock_put(shutter.control) - mock_shutter.assert_has_calls(shutter_call_list) - - -@patch( - "mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.reset_zebra_when_collection_done_plan" -) -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.DCID") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caget") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sup") -def test_tidy_up_at_collection_end_plan_with_eiger( - fake_sup, - fake_caget, - fake_caput, - fake_dcid, - mock_reset_zebra_plan, - RE, - zebra, - shutter, - dummy_params, -): - RE(tidy_up_at_collection_end_plan(zebra, shutter, dummy_params, fake_dcid)) - - mock_reset_zebra_plan.assert_called_once() - mock_shutter = get_mock_put(shutter.control) - mock_shutter.assert_has_calls([call("Close", wait=True, timeout=10.0)]) - - assert fake_dcid.notify_end.call_count == 1 - assert fake_caget.call_count == 1 - - fake_sup.eiger.assert_called_once_with("return-to-normal") - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sleep") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.DCID") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.disarm_zebra") -def test_aborted_plan_with_pilatus( - mock_disarm, fake_dcid, fake_caput, fake_sleep, RE, zebra -): - RE(collection_aborted_plan(zebra, "pilatus", fake_dcid)) - - mock_disarm.assert_called_once() - fake_caput.assert_has_calls([call(ANY, 0)]) - fake_dcid.collection_complete.assert_called_once_with(ANY, aborted=True) - - -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.shutil") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.DCID") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.sleep") -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.caput") -def test_collection_complete_plan_with_eiger( - fake_caput, fake_sleep, fake_dcid, fake_shutil, dummy_params, RE -): - RE( - collection_complete_plan( - dummy_params.collection_directory, dummy_params.detector_name, fake_dcid - ) - ) - - call_list = [call(ANY, 0), call(ANY, "Done")] - fake_caput.assert_has_calls(call_list) - - fake_dcid.collection_complete.assert_called_once_with(ANY, aborted=False) diff --git a/tests/I24/serial/fixed_target/__init__.py b/tests/I24/serial/fixed_target/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/I24/serial/fixed_target/conftest.py b/tests/I24/serial/fixed_target/conftest.py deleted file mode 100644 index dd60c11a9..000000000 --- a/tests/I24/serial/fixed_target/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -import pytest - -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType -from mx_bluesky.I24.serial.parameters import FixedTargetParameters, get_chip_format - - -@pytest.fixture -def dummy_params_without_pp(): - oxford_defaults = get_chip_format(ChipType.Oxford) - params = { - "visit": "foo", - "directory": "bar", - "filename": "chip", - "exposure_time_s": 0.01, - "detector_distance_mm": 100, - "detector_name": "eiger", - "num_exposures": 1, - "chip": oxford_defaults.dict(), - "map_type": 1, - "pump_repeat": 0, - "checker_pattern": False, - } - return FixedTargetParameters(**params) diff --git a/tests/I24/serial/fixed_target/test_chip_manager.py b/tests/I24/serial/fixed_target/test_chip_manager.py deleted file mode 100644 index 0c3742957..000000000 --- a/tests/I24/serial/fixed_target/test_chip_manager.py +++ /dev/null @@ -1,337 +0,0 @@ -import json -from typing import List -from unittest.mock import ANY, MagicMock, call, mock_open, patch - -import pytest -from dodal.devices.i24.beamstop import Beamstop -from dodal.devices.i24.dual_backlight import DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion -from dodal.devices.i24.pmac import PMAC -from ophyd_async.core import get_mock_put - -from mx_bluesky.I24.serial.fixed_target.ft_utils import Fiducials -from mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1 import ( - cs_maker, - cs_reset, - initialise_stages, - laser_control, - moveto, - moveto_preset, - pumpprobe_calc, - scrape_mtr_directions, - scrape_mtr_fiducials, - set_pmac_strings_for_cs, -) - -mtr_dir_str = """#Some words -mtr1_dir=1 -mtr2_dir=-1 -mtr3_dir=-1""" - -fiducial_1_str = """MTR RBV Corr -MTR1 0 1 -MTR2 1 -1 -MTR3 0 -1""" - -cs_json = '{"scalex":1, "scaley":2, "scalez":3, "skew":-0.5, "Sx_dir":1, "Sy_dir":-1, "Sz_dir":0}' - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.sys") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.get_detector_type") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caput") -async def test_initialise( - fake_caput: MagicMock, - fake_det: MagicMock, - fake_sys: MagicMock, - fake_log: MagicMock, - pmac: PMAC, - RE, -): - RE(initialise_stages(pmac)) - - assert await pmac.x.velocity.get_value() == 20 - assert await pmac.y.acceleration_time.get_value() == 0.01 - assert await pmac.z.high_limit_travel.get_value() == 5.1 - assert await pmac.z.low_limit_travel.get_value() == -4.1 - - mock_pmac_str = get_mock_put(pmac.pmac_string) - mock_pmac_str.assert_has_calls( - [ - call("m508=100 m509=150", wait=True, timeout=10.0), - call("m608=100 m609=150", wait=True, timeout=10.0), - call("m708=100 m709=150", wait=True, timeout=10.0), - call("m808=100 m809=150", wait=True, timeout=10.0), - ] - ) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -async def test_moveto_oxford_origin( - fake_caget: MagicMock, fake_log: MagicMock, pmac: PMAC, RE -): - fake_caget.return_value = 0 - RE(moveto(Fiducials.origin, pmac)) - assert fake_caget.call_count == 1 - assert await pmac.x.user_readback.get_value() == 0.0 - assert await pmac.y.user_readback.get_value() == 0.0 - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -async def test_moveto_oxford_inner_f1( - fake_caget: MagicMock, fake_log: MagicMock, pmac: PMAC, RE -): - fake_caget.return_value = 1 - RE(moveto(Fiducials.fid1, pmac)) - assert fake_caget.call_count == 1 - assert await pmac.x.user_readback.get_value() == 24.60 - assert await pmac.y.user_readback.get_value() == 0.0 - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -async def test_moveto_chip_aspecific(fake_log: MagicMock, pmac: PMAC, RE): - RE(moveto("zero", pmac)) - assert await pmac.pmac_string.get_value() == "!x0y0z0" - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caput") -async def test_moveto_preset( - fake_caput: MagicMock, - fake_log: MagicMock, - pmac: PMAC, - beamstop: Beamstop, - backlight: DualBacklight, - detector_stage: DetectorMotion, - RE, -): - RE(moveto_preset("zero", pmac, beamstop, backlight, detector_stage)) - assert await pmac.pmac_string.get_value() == "!x0y0z0" - - RE(moveto_preset("load_position", pmac, beamstop, backlight, detector_stage)) - assert await beamstop.pos_select.get_value() == "Robot" - assert await backlight.backlight_position.pos_level.get_value() == "Out" - assert await detector_stage.z.user_readback.get_value() == 1300 - - -@pytest.mark.parametrize( - "pos_request, expected_num_caput, expected_pmac_move, other_devices", - [ - ("collect_position", 1, [0.0, 0.0, 0.0], True), - ("microdrop_position", 0, [6.0, -7.8, 0.0], False), - ], -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caput") -async def test_moveto_preset_with_pmac_move( - fake_caput: MagicMock, - fake_log: MagicMock, - pos_request: str, - expected_num_caput: int, - expected_pmac_move: List, - other_devices: bool, - pmac: PMAC, - beamstop: Beamstop, - backlight: DualBacklight, - detector_stage: DetectorMotion, - RE, -): - RE(moveto_preset(pos_request, pmac, beamstop, backlight, detector_stage)) - assert fake_caput.call_count == expected_num_caput - - assert await pmac.x.user_readback.get_value() == expected_pmac_move[0] - assert await pmac.y.user_readback.get_value() == expected_pmac_move[1] - assert await pmac.z.user_readback.get_value() == expected_pmac_move[2] - - if other_devices: - assert await beamstop.pos_select.get_value() == "Data Collection" - assert await backlight.backlight_position.pos_level.get_value() == "In" - - -@pytest.mark.parametrize( - "laser_setting, expected_pmac_string", - [ - ("laser1on", " M712=1 M711=1"), - ("laser1off", " M712=0 M711=1"), - ("laser2on", " M812=1 M811=1"), - ("laser2off", " M812=0 M811=1"), - ], -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -async def test_laser_control_on_and_off( - fake_log: MagicMock, laser_setting: str, expected_pmac_string: str, pmac: PMAC, RE -): - RE(laser_control(laser_setting, pmac)) - - assert await pmac.pmac_string.get_value() == expected_pmac_string - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.bps.sleep") -def test_laser_control_burn_setting( - fake_sleep: MagicMock, fake_caget: MagicMock, fake_log: MagicMock, pmac: PMAC, RE -): - fake_caget.return_value = 0.1 - RE(laser_control("laser1burn", pmac)) - - fake_sleep.assert_called_once_with(0.1) - mock_pmac_str = get_mock_put(pmac.pmac_string) - mock_pmac_str.assert_has_calls( - [ - call(" M712=1 M711=1", wait=True, timeout=10.0), - call(" M712=0 M711=1", wait=True, timeout=10.0), - ] - ) - - -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.open", - mock_open(read_data=mtr_dir_str), -) -def test_scrape_mtr_directions(): - res = scrape_mtr_directions() - assert len(res) == 3 - assert res == (1.0, -1.0, -1.0) - - -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.open", - mock_open(read_data=fiducial_1_str), -) -def test_scrape_mtr_fiducials(): - res = scrape_mtr_fiducials(1) - assert len(res) == 3 - assert res == (0.0, 1.0, 0.0) - - -def test_cs_pmac_str_set(pmac: PMAC, RE): - RE( - set_pmac_strings_for_cs( - pmac, - { - "cs1": "#1->-10000X+0Y+0Z", - "cs2": "#2->+0X+10000Y+0Z", - "cs3": "#3->0X+0Y+10000Z", - }, - ) - ) - mock_pmac_str = get_mock_put(pmac.pmac_string) - mock_pmac_str.assert_has_calls( - [ - call("&2", wait=True, timeout=10.0), - call("#1->-10000X+0Y+0Z", wait=True, timeout=10.0), - call("#2->+0X+10000Y+0Z", wait=True, timeout=10.0), - call("#3->0X+0Y+10000Z", wait=True, timeout=10.0), - ] - ) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.set_pmac_strings_for_cs" -) -def test_cs_reset(mock_set_pmac_str: MagicMock, fake_log: MagicMock, pmac: PMAC, RE): - RE(cs_reset(pmac)) - mock_set_pmac_str.assert_called_once() - - -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.open", - mock_open(read_data='{"a":11, "b":12,}'), -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_directions" -) -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_fiducials" -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -def test_cs_maker_raises_error_for_invalid_json( - fake_log: MagicMock, - fake_fid: MagicMock, - fake_dir: MagicMock, - fake_caget: MagicMock, - pmac: PMAC, - RE, -): - fake_dir.return_value = (1, 1, 1) - fake_fid.return_value = (0, 0, 0) - with pytest.raises(json.JSONDecodeError): - RE(cs_maker(pmac)) - - -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.open", - mock_open(read_data='{"scalex":11, "skew":12}'), -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_directions" -) -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_fiducials" -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -def test_cs_maker_raises_error_for_missing_key_in_json( - fake_log: MagicMock, - fake_fid: MagicMock, - fake_dir: MagicMock, - fake_caget: MagicMock, - pmac: PMAC, - RE, -): - fake_dir.return_value = (1, 1, 1) - fake_fid.return_value = (0, 0, 0) - with pytest.raises(KeyError): - RE(cs_maker(pmac)) - - -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.open", - mock_open(read_data=cs_json), -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_directions" -) -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.scrape_mtr_fiducials" -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -def test_cs_maker_raises_error_for_wrong_direction_in_json( - fake_log: MagicMock, - fake_fid: MagicMock, - fake_dir: MagicMock, - fake_caget: MagicMock, - pmac: PMAC, - RE, -): - fake_dir.return_value = (1, 1, 1) - fake_fid.return_value = (0, 0, 0) - with pytest.raises(ValueError): - RE(cs_maker(pmac)) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.setup_logging") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caput") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Manager_py3v1.caget") -def test_pumpprobe_calc( - fake_caget: MagicMock, fake_caput: MagicMock, fake_log: MagicMock, RE -): - fake_caget.side_effect = [0.01, 0.005] - RE(pumpprobe_calc()) - assert fake_caget.call_count == 2 - assert fake_caput.call_count == 5 - fake_caput.assert_has_calls( - [ - call(ANY, 0.62), - call(ANY, 1.24), - call(ANY, 1.86), - call(ANY, 3.1), - call(ANY, 6.2), - ] - ) diff --git a/tests/I24/serial/fixed_target/test_chip_startup.py b/tests/I24/serial/fixed_target/test_chip_startup.py deleted file mode 100644 index 2b93cef8b..000000000 --- a/tests/I24/serial/fixed_target/test_chip_startup.py +++ /dev/null @@ -1,41 +0,0 @@ -from unittest.mock import patch - -import pytest - -from mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_StartUp_py3v1 import ( - check_files, - fiducials, - pathli, -) - - -def test_fiducials(): - assert len(fiducials(0)) == 0 - assert len(fiducials(1)) == 0 - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_StartUp_py3v1.os") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_StartUp_py3v1.read_parameter_file" -) -def test_check_files(fake_read_params, mock_os, dummy_params_without_pp): - fake_read_params.return_value = dummy_params_without_pp - check_files("i24", [".a", ".b"]) - - -@pytest.mark.parametrize( - "list_in, way, reverse, expected_res", - [ - ( - [1, 2, 3], - "typewriter", - False, - [1, 2, 3] * 3, - ), # Result should be list * len(list) - ([1, 2, 3], "typewriter", True, [3, 2, 1] * 3), # list[::-1] * len(list) - ([4, 5], "snake", False, [4, 5, 5, 4]), # Snakes the list - ([4, 5], "expand", False, [4, 4, 5, 5]), # Repeats each value - ], -) -def test_pathli(list_in, way, reverse, expected_res): - assert pathli(list_in, way, reverse) == expected_res diff --git a/tests/I24/serial/fixed_target/test_ft_collect.py b/tests/I24/serial/fixed_target/test_ft_collect.py deleted file mode 100644 index d6a49a4e7..000000000 --- a/tests/I24/serial/fixed_target/test_ft_collect.py +++ /dev/null @@ -1,243 +0,0 @@ -from unittest.mock import ANY, MagicMock, call, mock_open, patch - -import bluesky.plan_stubs as bps -import pytest -from dodal.devices.hutch_shutter import HutchShutter -from dodal.devices.i24.pmac import PMAC -from dodal.devices.zebra import Zebra -from ophyd_async.core import get_mock_put - -from mx_bluesky.I24.serial.fixed_target.ft_utils import MappingType -from mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1 import ( - datasetsizei24, - finish_i24, - get_chip_prog_values, - get_prog_num, - load_motion_program_data, - run_aborted_plan, - start_i24, - tidy_up_after_collection_plan, -) - -chipmap_str = """01status P3011 1 -02status P3021 0 -03status P3031 0 -04status P3041 0""" - - -def fake_generator(value): - yield from bps.null() - return value - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.caput") -def test_datasetsizei24_for_one_block_and_two_exposures( - fake_caput, dummy_params_without_pp -): - with patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.open", - mock_open(read_data=chipmap_str), - ): - tot_num_imgs = datasetsizei24(2, dummy_params_without_pp.chip, MappingType.Lite) - assert tot_num_imgs == 800 - fake_caput.assert_called_once_with("ME14E-MO-IOC-01:GP10", 800) - - -def test_get_chip_prog_values(dummy_params_without_pp): - dummy_params_without_pp.num_exposures = 2 - chip_dict = get_chip_prog_values( - dummy_params_without_pp, - ) - assert isinstance(chip_dict, dict) - assert chip_dict["X_NUM_STEPS"][1] == 20 and chip_dict["X_NUM_BLOCKS"][1] == 8 - assert chip_dict["PUMP_REPEAT"][1] == 0 - assert chip_dict["N_EXPOSURES"][1] == 2 - - -@pytest.mark.parametrize( - "chip_type, map_type, pump_repeat, expected_prog", - [ - (0, 0, 0, 11), # Oxford chip, full chip, no pump - (0, 1, 0, 12), # Oxford chip, map generated by mapping lite, no pump - (2, "", 0, 11), # Custom chip, map type not needed(full assumed), no pump - (0, "", 2, 14), # Oxford chip, assumes mapping lite, pump 2 - (3, "", 0, 11), # Minichip, no map type, no pump probe - ], -) -def test_get_prog_number(chip_type, map_type, pump_repeat, expected_prog): - assert get_prog_num(chip_type, map_type, pump_repeat) == expected_prog - - -@pytest.mark.parametrize( - "map_type, pump_repeat, checker, expected_calls", - [ - (0, 0, False, ["P1100=1"]), # Full chip, no pump probe, no checker - (1, 0, False, ["P1200=1"]), # Mapping lite, no pp, no checker - ( - 1, - 2, - False, - ["P1439=0", "P1441=0", "P1400=1"], - ), # Map irrelevant, pp to Repeat1, no checker - ( - 0, - 3, - True, - ["P1439=0", "P1439=1", "P1441=0", "P1400=1"], - ), # Map irrelevant, pp to Repeat2, checker enabled - ( - 1, - 8, - False, - ["P1439=0", "P1441=50", "P1400=1"], - ), # Map irrelevant, pp to Medium1, checker disabled - ], -) -def test_load_motion_program_data( - map_type: int, - pump_repeat: int, - checker: bool, - expected_calls: list, - pmac: PMAC, - RE, -): - test_dict = {"N_EXPOSURES": [0, 1]} - RE(load_motion_program_data(pmac, test_dict, map_type, pump_repeat, checker)) - call_list = [] - for i in expected_calls: - call_list.append(call(i, wait=True, timeout=10.0)) - mock_pmac_str = get_mock_put(pmac.pmac_string) - mock_pmac_str.assert_has_calls(call_list) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.DCID") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.caput") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.caget") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.sup") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.sleep") -def test_start_i24_with_eiger( - fake_sleep, - fake_sup, - fake_caget, - fake_caput, - fake_dcid, - zebra: Zebra, - shutter: HutchShutter, - RE, - aperture, - backlight, - beamstop, - detector_stage, - dummy_params_without_pp, -): - dummy_params_without_pp.total_num_images = 800 - RE( - start_i24( - zebra, - aperture, - backlight, - beamstop, - detector_stage, - shutter, - dummy_params_without_pp, - fake_dcid, - ) - ) - assert fake_sup.eiger.call_count == 1 - assert fake_sup.setup_beamline_for_collection_plan.call_count == 1 - assert fake_sup.move_detector_stage_to_position_plan.call_count == 1 - # Pilatus gets called for hack to create directory - assert fake_sup.pilatus.call_count == 2 - assert fake_dcid.generate_dcid.call_count == 1 - - shutter_call_list = [ - call("Reset", wait=True, timeout=10.0), - call("Open", wait=True, timeout=10.0), - ] - mock_shutter = get_mock_put(shutter.control) - mock_shutter.assert_has_calls(shutter_call_list) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.write_userlog") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.sleep") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.cagetstring") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.caget") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.sup") -@patch( - "mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.reset_zebra_when_collection_done_plan" -) -@patch("mx_bluesky.I24.serial.extruder.i24ssx_Extruder_Collect_py3v2.bps.rd") -def test_finish_i24( - fake_read, - fake_reset_zebra, - fake_sup, - fake_caget, - fake_cagetstring, - fake_sleep, - fake_userlog, - zebra, - pmac, - shutter, - dcm, - dummy_params_without_pp, - RE, -): - fake_read.side_effect = [fake_generator(0.6)] - fake_caget.return_value = 0.0 - fake_cagetstring.return_value = "chip_01" - RE(finish_i24(zebra, pmac, shutter, dcm, dummy_params_without_pp)) - - fake_reset_zebra.assert_called_once() - - fake_sup.eiger.assert_called_once_with("return-to-normal") - - mock_pmac_string = get_mock_put(pmac.pmac_string) - mock_pmac_string.assert_has_calls([call("!x0y0z0", wait=True, timeout=ANY)]) - - mock_shutter = get_mock_put(shutter.control) - mock_shutter.assert_has_calls([call("Close", wait=True, timeout=ANY)]) - - fake_userlog.assert_called_once_with(dummy_params_without_pp, "chip_01", 0.0, 0.6) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.DCID") -def test_run_aborted_plan(fake_dcid: MagicMock, pmac: PMAC, RE): - RE(run_aborted_plan(pmac, fake_dcid)) - - mock_pmac_string = get_mock_put(pmac.pmac_string) - pmac_string_calls = [ - call("A", wait=True, timeout=ANY), - call("P2401=0", wait=True, timeout=ANY), - ] - mock_pmac_string.assert_has_calls(pmac_string_calls) - fake_dcid.collection_complete.assert_called_once_with(ANY, aborted=True) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.finish_i24") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.sleep") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.DCID") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_Chip_Collect_py3v1.caput") -async def test_tidy_up_after_collection_plan( - fake_caput, - fake_dcid, - fake_sleep, - mock_finish, - zebra, - pmac, - shutter, - dcm, - RE, - dummy_params_without_pp, -): - RE( - tidy_up_after_collection_plan( - zebra, pmac, shutter, dcm, dummy_params_without_pp, fake_dcid - ) - ) - assert await zebra.inputs.soft_in_2.get_value() == "No" - - fake_dcid.notify_end.assert_called_once() - - fake_caput.assert_has_calls([call(ANY, 0), call(ANY, "Done")]) - - mock_finish.assert_called_once() diff --git a/tests/I24/serial/fixed_target/test_moveonclick.py b/tests/I24/serial/fixed_target/test_moveonclick.py deleted file mode 100644 index f902a682c..000000000 --- a/tests/I24/serial/fixed_target/test_moveonclick.py +++ /dev/null @@ -1,67 +0,0 @@ -from unittest.mock import ANY, MagicMock, call, patch - -import cv2 as cv -import pytest -from dodal.devices.i24.pmac import PMAC -from dodal.devices.oav.oav_detector import OAV -from ophyd_async.core import get_mock_put - -from mx_bluesky.I24.serial.fixed_target.i24ssx_moveonclick import ( - onMouse, - update_ui, - zoomcalibrator, -) - - -@pytest.mark.parametrize( - "beam_position, expected_xmove, expected_ymove", - [ - ( - (15, 10), - "#1J:-" + str(15 * zoomcalibrator), - "#2J:-" + str(10 * zoomcalibrator), - ), - ( - (475, 309), - "#1J:-" + str(475 * zoomcalibrator), - "#2J:-" + str(309 * zoomcalibrator), - ), - ( - (638, 392), - "#1J:-" + str(638 * zoomcalibrator), - "#2J:-" + str(392 * zoomcalibrator), - ), - ], -) -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_moveonclick._get_beam_centre") -def test_onMouse_gets_beam_position_and_sends_correct_str( - fake_get_beam_pos: MagicMock, - beam_position: tuple, - expected_xmove: str, - expected_ymove: str, - pmac: PMAC, - RE, -): - fake_get_beam_pos.side_effect = [beam_position] - fake_oav: OAV = MagicMock(spec=OAV) - RE(onMouse(cv.EVENT_LBUTTONUP, 0, 0, "", param=[pmac, fake_oav])) - mock_pmac_str = get_mock_put(pmac.pmac_string) - mock_pmac_str.assert_has_calls( - [ - call(expected_xmove, wait=True, timeout=10), - call(expected_ymove, wait=True, timeout=10), - ] - ) - - -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_moveonclick.cv") -@patch("mx_bluesky.I24.serial.fixed_target.i24ssx_moveonclick._get_beam_centre") -def test_update_ui_uses_correct_beam_centre_for_ellipse(fake_beam_pos, fake_cv): - mock_frame = MagicMock() - mock_oav = MagicMock() - fake_beam_pos.side_effect = [(15, 10)] - update_ui(mock_oav, mock_frame) - fake_cv.ellipse.assert_called_once() - fake_cv.ellipse.assert_has_calls( - [call(ANY, (15, 10), (12, 8), 0.0, 0.0, 360, (0, 255, 255), thickness=2)] - ) diff --git a/tests/I24/serial/parameters/test_utils.py b/tests/I24/serial/parameters/test_utils.py deleted file mode 100644 index f94c9cf30..000000000 --- a/tests/I24/serial/parameters/test_utils.py +++ /dev/null @@ -1,38 +0,0 @@ -from unittest.mock import MagicMock, patch - -import pytest - -from mx_bluesky.I24.serial.fixed_target.ft_utils import ChipType -from mx_bluesky.I24.serial.parameters import get_chip_format - - -@pytest.mark.parametrize( - "chip_type, expected_num_blocks, expected_step_size, expected_num_steps", - [(0, 8, 0.125, 20), (1, 1, 0.6, 25), (3, 1, 0.125, 20)], -) -def test_get_chip_format_for_oxford_chips( - chip_type: int, - expected_num_blocks: int, - expected_step_size: float, - expected_num_steps: int, -): - test_defaults = get_chip_format(ChipType(chip_type)).dict() - - assert ( - test_defaults["x_num_steps"] == expected_num_steps - and test_defaults["x_num_steps"] == test_defaults["y_num_steps"] - ) - assert test_defaults["y_blocks"] == expected_num_blocks - assert test_defaults["x_step_size"] == expected_step_size - - -@patch("mx_bluesky.I24.serial.parameters.utils.caget") -def test_get_chip_format_for_custom_chips(fake_caget: MagicMock): - fake_caget.side_effect = ["10", "2", "0.2", "0.2"] - test_chip_type = ChipType(2) - test_defaults = get_chip_format(test_chip_type).dict() - - assert test_defaults["x_num_steps"] == 10 - assert test_defaults["y_num_steps"] == 2 - assert test_defaults["x_step_size"] == 0.2 and test_defaults["y_step_size"] == 0.2 - assert test_defaults["y_blocks"] == 1 diff --git a/tests/I24/serial/setup_beamline/__init__.py b/tests/I24/serial/setup_beamline/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/I24/serial/setup_beamline/test_pv_abstract.py b/tests/I24/serial/setup_beamline/test_pv_abstract.py deleted file mode 100644 index 3a816b97e..000000000 --- a/tests/I24/serial/setup_beamline/test_pv_abstract.py +++ /dev/null @@ -1,11 +0,0 @@ -from mx_bluesky.I24.serial.setup_beamline import Eiger, Pilatus - - -def test_eiger(): - eig = Eiger() - assert eig.image_size_mm == (233.1, 244.65) - - -def test_pilatus(): - pil = Pilatus() - assert pil.image_size_mm == (423.636, 434.644) diff --git a/tests/I24/serial/setup_beamline/test_setup_beamline.py b/tests/I24/serial/setup_beamline/test_setup_beamline.py deleted file mode 100644 index 0569148bf..000000000 --- a/tests/I24/serial/setup_beamline/test_setup_beamline.py +++ /dev/null @@ -1,57 +0,0 @@ -from unittest.mock import patch - -import pytest -from dodal.devices.i24.aperture import Aperture -from dodal.devices.i24.beamstop import Beamstop -from dodal.devices.i24.dual_backlight import DualBacklight -from dodal.devices.i24.I24_detector_motion import DetectorMotion - -from mx_bluesky.I24.serial.setup_beamline import setup_beamline - - -async def test_setup_beamline_for_collection_plan( - aperture: Aperture, backlight: DualBacklight, beamstop: Beamstop, RE -): - RE(setup_beamline.setup_beamline_for_collection_plan(aperture, backlight, beamstop)) - - assert await aperture.position.get_value() == "In" - assert await beamstop.pos_select.get_value() == "Data Collection" - assert await beamstop.y_rotation.user_readback.get_value() == 0 - - assert await backlight.backlight_position.pos_level.get_value() == "Out" - - -async def test_move_detector_stage_to_position_plan(detector_stage: DetectorMotion, RE): - det_dist = 100 - RE(setup_beamline.move_detector_stage_to_position_plan(detector_stage, det_dist)) - - assert await detector_stage.z.user_readback.get_value() == det_dist - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caput") -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caget") -def test_pilatus_raises_error_if_fastchip_and_no_args_list(fake_caget, fake_caput): - with pytest.raises(TypeError): - setup_beamline.pilatus("fastchip") - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caput") -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caget") -def test_pilatus_quickshot(fake_caget, fake_caput): - setup_beamline.pilatus("quickshot", ["", "", 1, 0.1]) - assert fake_caput.call_count == 12 - assert fake_caget.call_count == 2 - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caput") -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caget") -def test_eiger_raises_error_if_quickshot_and_no_args_list(fake_caget, fake_caput): - with pytest.raises(TypeError): - setup_beamline.eiger("quickshot") - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caput") -@patch("mx_bluesky.I24.serial.setup_beamline.setup_beamline.caget") -def test_eiger_quickshot(fake_caget, fake_caput): - setup_beamline.eiger("quickshot", ["", "", "1", "0.1"]) - assert fake_caput.call_count == 32 diff --git a/tests/I24/serial/setup_beamline/test_setup_detector.py b/tests/I24/serial/setup_beamline/test_setup_detector.py deleted file mode 100644 index 8ca700a82..000000000 --- a/tests/I24/serial/setup_beamline/test_setup_detector.py +++ /dev/null @@ -1,53 +0,0 @@ -from unittest.mock import patch - -import pytest -from ophyd_async.core import set_mock_value - -from mx_bluesky.I24.serial.parameters.constants import SSXType -from mx_bluesky.I24.serial.setup_beamline import Eiger, Pilatus -from mx_bluesky.I24.serial.setup_beamline.setup_detector import ( - DetRequest, - _get_requested_detector, - get_detector_type, - setup_detector_stage, -) - - -def test_get_detector_type(detector_stage): - set_mock_value(detector_stage.y, -22) - det_type = yield from get_detector_type(detector_stage) - assert det_type.name == "eiger" - - -def test_get_detector_type_finds_pilatus(detector_stage): - set_mock_value(detector_stage.y, 566) - det_type = yield from get_detector_type(detector_stage) - assert det_type.name == "pilatus" - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_detector.caget") -def test_get_requested_detector(fake_caget): - fake_caget.return_value = "pilatus" - assert _get_requested_detector("some_pv") == Pilatus.name - - fake_caget.return_value = "0" - assert _get_requested_detector("some_pv") == Eiger.name - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_detector.caget") -def test_get_requested_detector_raises_error_for_invalid_value(fake_caget): - fake_caget.return_value = "something" - with pytest.raises(ValueError): - _get_requested_detector("some_pv") - - -@patch("mx_bluesky.I24.serial.setup_beamline.setup_detector.setup_logging") -@patch("mx_bluesky.I24.serial.setup_beamline.setup_detector.caget") -async def test_setup_detector_stage(fake_caget, fake_log, detector_stage, RE): - fake_caget.return_value = DetRequest.eiger.value - RE(setup_detector_stage(SSXType.FIXED, detector_stage)) - assert await detector_stage.y.user_readback.get_value() == Eiger.det_y_target - - fake_caget.return_value = DetRequest.pilatus.value - RE(setup_detector_stage(SSXType.EXTRUDER, detector_stage)) - assert await detector_stage.y.user_readback.get_value() == Pilatus.det_y_target diff --git a/tests/I24/serial/setup_beamline/test_zebra_plans.py b/tests/I24/serial/setup_beamline/test_zebra_plans.py deleted file mode 100644 index 396051c53..000000000 --- a/tests/I24/serial/setup_beamline/test_zebra_plans.py +++ /dev/null @@ -1,182 +0,0 @@ -import pytest -from dodal.devices.zebra import ( - AND3, - AND4, - DISCONNECT, - OR1, - PC_GATE, - PULSE2, - SOFT_IN2, - TrigSource, - Zebra, -) - -from mx_bluesky.I24.serial.setup_beamline.setup_zebra_plans import ( - arm_zebra, - disarm_zebra, - get_zebra_settings_for_extruder, - open_fast_shutter_at_each_position_plan, - reset_output_panel, - reset_pc_gate_and_pulse, - reset_zebra_when_collection_done_plan, - set_shutter_mode, - setup_pc_sources, - setup_zebra_for_extruder_with_pump_probe_plan, - setup_zebra_for_fastchip_plan, - setup_zebra_for_quickshot_plan, - zebra_return_to_normal_plan, -) - - -async def test_arm_and_disarm_zebra(zebra: Zebra, RE): - zebra.pc.arm.TIMEOUT = 1 - - RE(arm_zebra(zebra)) - assert await zebra.pc.is_armed() - - RE(disarm_zebra(zebra)) - assert await zebra.pc.is_armed() is False - - -async def test_set_shutter_mode(zebra: Zebra, RE): - RE(set_shutter_mode(zebra, "manual")) - assert await zebra.inputs.soft_in_1.get_value() == "No" - - -async def test_setup_pc_sources(zebra: Zebra, RE): - RE(setup_pc_sources(zebra, TrigSource.TIME, TrigSource.POSITION)) - - assert await zebra.pc.gate_source.get_value() == "Time" - assert await zebra.pc.pulse_source.get_value() == "Position" - - -def test_get_zebra_settings_for_extruder_pumpprobe(): - width, step = get_zebra_settings_for_extruder(0.01, 0.005, 0.001) - assert round(width, 3) == 0.016 - assert round(step, 3) == 0.026 - - -async def test_setup_zebra_for_quickshot(zebra: Zebra, RE): - RE(setup_zebra_for_quickshot_plan(zebra, exp_time=0.001, num_images=10, wait=True)) - assert await zebra.pc.arm_source.get_value() == "Soft" - assert await zebra.pc.gate_start.get_value() == 1.0 - assert await zebra.pc.gate_input.get_value() == SOFT_IN2 - - -async def test_setup_zebra_for_extruder_pp_eiger_collection(zebra: Zebra, RE): - inputs_list = (0.01, 10, 0.005, 0.001) - # With eiger - RE( - setup_zebra_for_extruder_with_pump_probe_plan( - zebra, "eiger", *inputs_list, wait=True - ) - ) - assert await zebra.output.out_pvs[1].get_value() == AND4 - assert await zebra.output.out_pvs[2].get_value() == AND3 - - assert await zebra.inputs.soft_in_1.get_value() == "No" - assert await zebra.logic_gates.and_gates[3].sources[1].get_value() == SOFT_IN2 - assert await zebra.pc.num_gates.get_value() == 10 - - -async def test_setup_zebra_for_extruder_pp_pilatus_collection(zebra: Zebra, RE): - inputs_list = (0.01, 10, 0.005, 0.001) - # With pilatus - RE( - setup_zebra_for_extruder_with_pump_probe_plan( - zebra, "pilatus", *inputs_list, wait=True - ) - ) - # Check that SOFT_IN:B0 gets disabled - assert await zebra.output.out_pvs[1].get_value() == AND3 - - assert await zebra.pc.gate_start.get_value() == 1.0 - assert await zebra.output.pulse_1.delay.get_value() == 0.0 - assert await zebra.output.pulse_2.delay.get_value() == 0.001 - - -async def test_setup_zebra_for_fastchip(zebra: Zebra, RE): - num_gates = 400 - num_exposures = 2 - exposure_time = 0.001 - # With Eiger - RE( - setup_zebra_for_fastchip_plan( - zebra, "eiger", num_gates, num_exposures, exposure_time, wait=True - ) - ) - # Check that SOFT_IN:B0 gets disabled - assert await zebra.output.out_pvs[1].get_value() == AND3 - - # Check ttl out1 is set to AND3 - assert await zebra.output.out_pvs[1].get_value() == AND3 - assert await zebra.pc.num_gates.get_value() == num_gates - assert await zebra.pc.pulse_max.get_value() == num_exposures - assert await zebra.pc.pulse_width.get_value() == exposure_time - 0.0001 - - # With Pilatus - RE( - setup_zebra_for_fastchip_plan( - zebra, "pilatus", num_gates, num_exposures, exposure_time, wait=True - ) - ) - # Check ttl out2 is set to AND3 - assert await zebra.output.out_pvs[2].get_value() == AND3 - - assert await zebra.pc.pulse_start.get_value() == 0.0 - assert await zebra.pc.pulse_width.get_value() == exposure_time / 2 - assert await zebra.pc.pulse_step.get_value() == exposure_time + 0.0001 - - -async def test_open_fast_shutter_at_each_position_plan(zebra: Zebra, RE): - num_exposures = 2 - exposure_time = 0.001 - - RE(open_fast_shutter_at_each_position_plan(zebra, num_exposures, exposure_time)) - - # Check output Pulse2 is set - assert await zebra.output.pulse_2.input.get_value() == PC_GATE - assert await zebra.output.pulse_2.delay.get_value() == 0.0 - expected_pulse_width = num_exposures * exposure_time + 0.05 - assert await zebra.output.pulse_2.width.get_value() == pytest.approx( - expected_pulse_width, abs=1e-3 - ) - - assert await zebra.output.out_pvs[4].get_value() == PULSE2 - - -async def test_reset_pc_gate_and_pulse(zebra: Zebra, RE): - RE(reset_pc_gate_and_pulse(zebra)) - - assert await zebra.pc.gate_start.get_value() == 0 - assert await zebra.pc.pulse_width.get_value() == 0 - assert await zebra.pc.pulse_step.get_value() == 0 - - -async def test_reset_output_panel(zebra: Zebra, RE): - RE(reset_output_panel(zebra)) - - assert await zebra.output.out_pvs[2].get_value() == PC_GATE - assert await zebra.output.out_pvs[4].get_value() == OR1 - assert await zebra.output.pulse_1.input.get_value() == DISCONNECT - assert await zebra.output.pulse_2.input.get_value() == DISCONNECT - - -async def test_zebra_return_to_normal(zebra: Zebra, RE): - RE(zebra_return_to_normal_plan(zebra, wait=True)) - - assert await zebra.pc.reset.get_value() == 1 - assert await zebra.pc.gate_source.get_value() == "Position" - assert await zebra.pc.pulse_source.get_value() == "Position" - assert await zebra.pc.gate_trigger.get_value() == "Enc2" - assert await zebra.pc.gate_start.get_value() == 0 - - assert await zebra.output.out_pvs[3].get_value() == DISCONNECT - assert await zebra.output.pulse_1.input.get_value() == DISCONNECT - - -async def test_reset_zebra_plan(zebra: Zebra, RE): - RE(reset_zebra_when_collection_done_plan(zebra)) - - assert await zebra.inputs.soft_in_2.get_value() == "No" - assert await zebra.pc.is_armed() is False diff --git a/tests/I24/serial/test_dcid.py b/tests/I24/serial/test_dcid.py deleted file mode 100644 index 31897c550..000000000 --- a/tests/I24/serial/test_dcid.py +++ /dev/null @@ -1,30 +0,0 @@ -from unittest.mock import patch - -from mx_bluesky.I24.serial.dcid import get_beam_center, get_beamsize, get_resolution -from mx_bluesky.I24.serial.setup_beamline import Eiger, Pilatus - - -@patch("mx_bluesky.I24.serial.dcid.caget") -def test_beamsize(fake_caget): - beam_size = get_beamsize() - assert type(beam_size) is tuple - assert fake_caget.call_count == 2 - - -@patch("mx_bluesky.I24.serial.dcid.caget") -def test_beam_center(fake_caget): - beam_center = get_beam_center(Eiger()) - assert type(beam_center) is tuple - assert len(beam_center) == 2 - assert fake_caget.call_count == 2 - - -def test_get_resolution(): - distance = 100 - wavelength = 0.649 - - eiger_resolution = get_resolution(Eiger(), distance, wavelength) - pilatus_resolution = get_resolution(Pilatus(), distance, wavelength) - - assert eiger_resolution == 0.78 - assert pilatus_resolution == 0.61 diff --git a/tests/I24/serial/test_log.py b/tests/I24/serial/test_log.py deleted file mode 100644 index 474ad3b1a..000000000 --- a/tests/I24/serial/test_log.py +++ /dev/null @@ -1,68 +0,0 @@ -import logging -from pathlib import Path -from unittest.mock import patch - -import pytest - -from mx_bluesky.I24.serial import log - - -@pytest.fixture -def dummy_logger(): - logger = logging.getLogger("I24ssx") - yield logger - - -def _destroy_handlers(logger): - for handler in logger.handlers: - handler.close() - logger.handlers.clear() - - -@patch("mx_bluesky.I24.serial.log.environ") -@patch("mx_bluesky.I24.serial.log.Path.mkdir") -def test_logging_file_path(mock_dir, mock_environ): - mock_environ.get.return_value = None - log_path = log._get_logging_file_path() - assert mock_dir.call_count == 1 - assert log_path.as_posix() == "tmp/logs" - - -@patch("mx_bluesky.I24.serial.log._read_visit_directory_from_file") -@patch("mx_bluesky.I24.serial.log.environ") -@patch("mx_bluesky.I24.serial.log.Path.mkdir") -def test_logging_file_path_on_beamline(mock_dir, mock_environ, mock_visit): - mock_environ.get.return_value = "i24" - mock_visit.return_value = Path("/path/to/i24/data") - log_path = log._get_logging_file_path() - assert mock_dir.call_count == 1 - assert log_path.as_posix() == "/path/to/i24/data/tmp/serial/logs" - - -def test_basic_logging_config(dummy_logger): - assert dummy_logger.hasHandlers() is True - assert len(dummy_logger.handlers) == 1 - assert dummy_logger.handlers[0].level == logging.DEBUG - - -@patch("mx_bluesky.I24.serial.log.integrate_bluesky_and_ophyd_logging") -def test_default_logging_setup_removes_dodal_stream(mock_blusky_ophyd_logs): - with patch("mx_bluesky.I24.serial.log.dodal_logger") as mock_dodal_logger: - log.default_logging_setup(dev_mode=True) - mock_blusky_ophyd_logs.assert_called_once() - assert mock_dodal_logger.addHandler.call_count == 4 - mock_dodal_logger.removeHandler.assert_called_once() - - -@patch("mx_bluesky.I24.serial.log.Path.mkdir") -@patch("mx_bluesky.I24.serial.log.default_logging_setup") -def test_logging_config_with_filehandler(mock_default, mock_dir, dummy_logger): - # dodal handlers mocked out - log.config("dummy.log", delayed=True, dev_mode=True) - assert len(dummy_logger.handlers) == 2 - # assert len(dummy_logger.parent.handlers) == 3 - assert mock_dir.call_count == 1 - assert dummy_logger.handlers[1].level == logging.DEBUG - # Clear FileHandler to avoid other tests failing if it is kept open - dummy_logger.removeHandler(dummy_logger.handlers[1]) - _destroy_handlers(dummy_logger.parent)