Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e428140e8 |
@@ -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."""
|
||||||
|
|||||||
Reference in New Issue
Block a user