wip simplify direct integration
This commit is contained in:
@@ -5,10 +5,10 @@ from typing import TYPE_CHECKING
|
||||
|
||||
import numpy as np
|
||||
from bec_lib.devicemanager import ScanInfo
|
||||
from bec_server.device_server.devices.devicemanager import DeviceManagerDS
|
||||
from bec_lib.logger import bec_logger
|
||||
from bec_lib.endpoints import MessageEndpoints
|
||||
from bec_lib.logger import bec_logger
|
||||
from bec_lib.messages import DeviceMessage
|
||||
from bec_server.device_server.devices.devicemanager import DeviceManagerDS
|
||||
from ophyd import Component as Cpt
|
||||
from ophyd import Device
|
||||
from ophyd import DynamicDeviceComponent as DDC
|
||||
@@ -41,32 +41,12 @@ class DXPControl(Device):
|
||||
elapsed_real_time = Cpt(EpicsSignalRO, "ElapsedRealTime", kind=Kind.omitted, auto_monitor=True)
|
||||
|
||||
|
||||
class ROI(Device):
|
||||
|
||||
# 'name' is not an allowed attribute
|
||||
label = Cpt(EpicsSignal, "NM", lazy=True)
|
||||
count = Cpt(EpicsSignalRO, "", lazy=True)
|
||||
net_count = Cpt(EpicsSignalRO, "N", lazy=True)
|
||||
|
||||
|
||||
def add_rois(range_, **kwargs):
|
||||
defn = OrderedDict()
|
||||
|
||||
for roi in range_:
|
||||
if not (0 <= roi < 32):
|
||||
raise ValueError("roi must be in the set [0,31]")
|
||||
|
||||
attr = "roi{}".format(roi)
|
||||
defn[attr] = (ROI, ".R{}".format(roi), kwargs)
|
||||
|
||||
return defn
|
||||
|
||||
|
||||
class MCAControl(Device):
|
||||
"""MCA Control Device for Falcon detector"""
|
||||
|
||||
spectrum = Cpt(EpicsSignalRO, ".VAL", kind=Kind.omitted, auto_monitor=True)
|
||||
rois = DDC(add_rois(range(0, 1), kind="omitted"), kind="omitted")
|
||||
roi_count = Cpt(EpicsSignalRO, ".R0", kind=Kind.omitted, auto_monitor=True)
|
||||
roi_label = Cpt(EpicsSignal, ".R0NM", kind=Kind.omitted, auto_monitor=True)
|
||||
elapsed_real_time = Cpt(EpicsSignalRO, ".ERTM", kind=Kind.omitted, auto_monitor=True)
|
||||
|
||||
|
||||
@@ -152,7 +132,9 @@ class FalconControlDirect(Device):
|
||||
class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
|
||||
"""Falcon implementierung at SuperXAS. prefix: 'X10DA-SITORO:'"""
|
||||
|
||||
preview = Cpt(Signal, name="preview", kind=Kind.omitted, doc="Preview signal for Falcon detector")
|
||||
preview = Cpt(
|
||||
Signal, name="preview", kind=Kind.omitted, doc="Preview signal for Falcon detector"
|
||||
)
|
||||
icr = Cpt(
|
||||
AsyncSignal, name="icr", ndim=0, max_size=int(1e6), doc="Async input count rate signal"
|
||||
)
|
||||
@@ -181,7 +163,14 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
|
||||
# Beamline Specific Implementations #
|
||||
########################################
|
||||
|
||||
def __init__(self, name: str, prefix: str = "", scan_info: ScanInfo | None = None, device_manager:DeviceManagerDS|None = None, **kwargs):
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
prefix: str = "",
|
||||
scan_info: ScanInfo | None = None,
|
||||
device_manager: DeviceManagerDS | None = None,
|
||||
**kwargs,
|
||||
):
|
||||
"""
|
||||
Initialize Falcon device.
|
||||
|
||||
@@ -191,7 +180,9 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
|
||||
scan_info (ScanInfo): Information about the scan
|
||||
**kwargs: Additional keyword arguments
|
||||
"""
|
||||
super().__init__(name=name, prefix=prefix, scan_info=scan_info, device_manager=device_manager,**kwargs)
|
||||
super().__init__(
|
||||
name=name, prefix=prefix, scan_info=scan_info, device_manager=device_manager, **kwargs
|
||||
)
|
||||
self.dm = device_manager
|
||||
self._pv_timeout = 1
|
||||
self._async_read_data = [
|
||||
@@ -216,7 +207,7 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
|
||||
"""
|
||||
# self.mca1.spectrum.subscribe(self._update_preview, run=False)
|
||||
|
||||
#TODO add again once PreviewSIgnal works with GUI
|
||||
# TODO add again once PreviewSIgnal works with GUI
|
||||
# def _update_preview(self, old_value, value, **kwargs) -> None:
|
||||
# """Update the preview signal with the latest spectrum data."""
|
||||
# logger.info(f"Received new spectrum data: {value}")
|
||||
@@ -297,13 +288,11 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
|
||||
self._send_preview_async()
|
||||
logger.info(f"Data sent for {self.name} at {time.time()- time_started}")
|
||||
|
||||
def _send_preview_async(self)->None:
|
||||
def _send_preview_async(self) -> None:
|
||||
metadata = self.scan_info.msg.metadata
|
||||
metadata.update({"async_update": {"type" : "add", "max_shape" : None}})
|
||||
data = {self.preview.name : {"value" : self.mca1.spectrum.get(), "timestamp" : time.time()}}
|
||||
msg = DeviceMessage(
|
||||
signals=data, metadata=metadata
|
||||
)
|
||||
metadata.update({"async_update": {"type": "add", "max_shape": None}})
|
||||
data = {self.preview.name: {"value": self.mca1.spectrum.get(), "timestamp": time.time()}}
|
||||
msg = DeviceMessage(signals=data, metadata=metadata)
|
||||
self.dm.connector.xadd(
|
||||
MessageEndpoints.device_async_readback(
|
||||
scan_id=self.scan_info.msg.scan_id, device=self.name
|
||||
|
||||
Reference in New Issue
Block a user