From 5b76c3f769a97c169d7019fca053d9357c0cb928 Mon Sep 17 00:00:00 2001 From: x01dc Date: Thu, 16 Oct 2025 12:11:21 +0200 Subject: [PATCH] feat(gui_instruction_device): added gui instruction device from epics --- csaxs_bec/device_configs/flomni_config.yaml | 13 +++- csaxs_bec/devices/omny/xray_epics_gui.py | 74 +++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 csaxs_bec/devices/omny/xray_epics_gui.py diff --git a/csaxs_bec/device_configs/flomni_config.yaml b/csaxs_bec/device_configs/flomni_config.yaml index ab0b16f..fd72916 100644 --- a/csaxs_bec/device_configs/flomni_config.yaml +++ b/csaxs_bec/device_configs/flomni_config.yaml @@ -417,4 +417,15 @@ flomni_temphum: enabled: true onFailure: buffer readOnly: false - readoutPriority: baseline \ No newline at end of file + readoutPriority: baseline +############################################################ +#################### GUI Signals ########################### +############################################################ +omny_xray_gui: + description: Gui Epics signals + deviceClass: csaxs_bec.devices.omny.xray_epics_gui.OMNYXRayEpicsGUI + deviceConfig: {} + enabled: true + onFailure: buffer + readOnly: false + readoutPriority: on_request \ No newline at end of file diff --git a/csaxs_bec/devices/omny/xray_epics_gui.py b/csaxs_bec/devices/omny/xray_epics_gui.py new file mode 100644 index 0000000..7db7bb7 --- /dev/null +++ b/csaxs_bec/devices/omny/xray_epics_gui.py @@ -0,0 +1,74 @@ + +from ophyd import Component as Cpt +from ophyd import Device +from ophyd import DynamicDeviceComponent as Dcpt +from ophyd import EpicsSignal + + + +class OMNYXRayEpicsGUI(Device): + + save_frame = Cpt( + EpicsSignal, name="save_frame", read_pv="XOMNYI-XEYE-SAVFRAME:0",auto_monitor=True + ) + update_frame_acqdone = Cpt( + EpicsSignal, name="update_frame_acqdone", read_pv="XOMNYI-XEYE-ACQDONE:0",auto_monitor=True + ) + update_frame_acq = Cpt( + EpicsSignal, name="update_frame_acq", read_pv="XOMNYI-XEYE-ACQ:0",auto_monitor=True + ) + width_y_dynamic = { + f"width_y_{i}": (EpicsSignal, f"XOMNYI-XEYE-YWIDTH_Y:{i}", {"auto_monitor": True}) for i in range(0, 11) + } + width_y = Dcpt(width_y_dynamic) + width_x_dynamic = { + f"width_x_{i}": (EpicsSignal, f"XOMNYI-XEYE-XWIDTH_X:{i}", {"auto_monitor": True}) for i in range(0, 11) + } + width_x = Dcpt(width_x_dynamic) + enable_mv_x = Cpt( + EpicsSignal, name="enable_mv_x", read_pv="XOMNYI-XEYE-ENAMVX:0",auto_monitor=True + ) + enable_mv_y = Cpt( + EpicsSignal, name="enable_mv_y", read_pv="XOMNYI-XEYE-ENAMVY:0",auto_monitor=True + ) + send_message = Cpt( + EpicsSignal, name="send_message", read_pv="XOMNYI-XEYE-MESSAGE:0.DESC",auto_monitor=True + ) + sample_name = Cpt( + EpicsSignal, name="sample_name", read_pv="XOMNYI-XEYE-SAMPLENAME:0.DESC",auto_monitor=True + ) + angle = Cpt( + EpicsSignal, name="angle", read_pv="XOMNYI-XEYE-ANGLE:0",auto_monitor=True + ) + pixel_size = Cpt( + EpicsSignal, name="pixel_size", read_pv="XOMNYI-XEYE-PIXELSIZE:0",auto_monitor=True + ) + submit = Cpt( + EpicsSignal, name="submit", read_pv="XOMNYI-XEYE-SUBMIT:0",auto_monitor=True + ) + step = Cpt( + EpicsSignal, name="step", read_pv="XOMNYI-XEYE-STEP:0",auto_monitor=True + ) + xval_x_dynamic = { + f"xval_x_{i}": (EpicsSignal, f"XOMNYI-XEYE-XVAL_X:{i}", {"auto_monitor": True}) for i in range(0, 11) + } + xval_x = Dcpt(xval_x_dynamic) + yval_y_dynamic = { + f"yval_y_{i}": (EpicsSignal, f"XOMNYI-XEYE-YVAL_Y:{i}", {"auto_monitor": True}) for i in range(0, 11) + } + yval_y = Dcpt(yval_y_dynamic) + recbg = Cpt( + EpicsSignal, name="recbg", read_pv="XOMNYI-XEYE-RECBG:0",auto_monitor=True + ) + stage_pos_x_dynamic = { + f"stage_pos_x_{i}": (EpicsSignal, f"XOMNYI-XEYE-STAGEPOSX:{i}", {"auto_monitor": True}) for i in range(1, 6) + } + stage_pos_x = Dcpt(stage_pos_x_dynamic) + mvx = Cpt( + EpicsSignal, name="mvx", read_pv="XOMNYI-XEYE-MVX:0",auto_monitor=True + ) + mvy = Cpt( + EpicsSignal, name="mvy", read_pv="XOMNYI-XEYE-MVY:0",auto_monitor=True + ) + +