1 Commits

Author SHA1 Message Date
wakonig_k 2e428140e8 fix(samcam): move to psi device base
CI for pxiii_bec / test (pull_request) Successful in 1m16s
CI for pxiii_bec / test (push) Successful in 29s
2025-11-14 10:52:21 +01:00
+57 -25
View File
@@ -11,42 +11,74 @@ Created on Thu Jan 30 2025
@author: mohacsi_i @author: mohacsi_i
""" """
from ophyd import ADComponent from __future__ import annotations
from ophyd_devices.devices.areadetector.cam import GenICam
# from ophyd_devices.devices.areadetector.plugins import ImagePlugin_V35 from typing import TYPE_CHECKING
from ophyd_devices.interfaces.base_classes.psi_detector_base import (
PSIDetectorBase,
CustomDetectorMixin,
)
from bec_lib import bec_logger from bec_lib import bec_logger
from ophyd import ADComponent
from ophyd_devices.devices.areadetector.cam import GenICam
from ophyd_devices.interfaces.base_classes.psi_device_base import PSIDeviceBase
if TYPE_CHECKING:
from ophyd import DeviceStatus, StatusBase
logger = bec_logger.logger logger = bec_logger.logger
class SamCamSetup(CustomDetectorMixin): class SamCamDetector(PSIDeviceBase):
"""Simple camera mixin class, the SAMCAM is usually streaming"""
def on_stage(self):
"""Just make sure it's running continously"""
self.parent.cam.acquire.put(1, wait=True)
def on_unstage(self):
"""Should run continously"""
def on_stop(self):
"""Should run continously"""
class SamCamDetector(PSIDetectorBase):
"""Sample camera device """Sample camera device
The SAMCAM continously streams images to the GUI and sample alignment The SAMCAM continously streams images to the GUI and sample alignment
scripts via ZMQ. scripts via ZMQ.
""" """
custom_prepare_cls = SamCamSetup
cam = ADComponent(GenICam, "cam1:") cam = ADComponent(GenICam, "cam1:")
# image = ADComponent(ImagePlugin_V35, "image1:")
########################################
# Beamline Specific Implementations #
########################################
def on_init(self) -> None:
"""
Called when the device is initialized.
No signals are connected at this point. If you like to
set default values on signals, please use on_connected instead.
"""
def on_connected(self) -> None:
"""
Called after the device is connected and its signals are connected.
Default values for signals should be set here.
"""
def on_stage(self) -> DeviceStatus | StatusBase | None:
"""
Called while staging the device.
Information about the upcoming scan can be accessed from the scan_info (self.scan_info.msg) object.
"""
self.parent.cam.acquire.put(1, wait=True)
def on_unstage(self) -> DeviceStatus | StatusBase | None:
"""Called while unstaging the device."""
def on_pre_scan(self) -> DeviceStatus | StatusBase | None:
"""Called right before the scan starts on all devices automatically."""
def on_trigger(self) -> DeviceStatus | StatusBase | None:
"""Called when the device is triggered."""
def on_complete(self) -> DeviceStatus | StatusBase | None:
"""Called to inquire if a device has completed a scans."""
def on_kickoff(self) -> DeviceStatus | StatusBase | None:
"""Called to kickoff a device for a fly scan. Has to be called explicitly."""
def on_stop(self) -> None:
"""Called when the device is stopped."""
def on_destroy(self) -> None:
"""Called when the device is destroyed. Cleanup resources here."""