diff --git a/tomcat_bec/device_configs/microxas_test_bed.yaml b/tomcat_bec/device_configs/microxas_test_bed.yaml index 1dd228d..d16dfd2 100644 --- a/tomcat_bec/device_configs/microxas_test_bed.yaml +++ b/tomcat_bec/device_configs/microxas_test_bed.yaml @@ -119,25 +119,25 @@ femto_mean_curr: # readoutPriority: monitored # softwareTrigger: true -# gfcam: -# description: GigaFrost camera client -# deviceClass: tomcat_bec.devices.GigaFrostCamera -# deviceConfig: -# prefix: 'X02DA-CAM-GF2:' -# backend_url: 'http://sls-daq-001:8080' -# auto_soft_enable: true -# std_daq_live: 'tcp://129.129.95.111:20000' -# std_daq_ws: 'ws://129.129.95.111:8080' -# std_daq_rest: 'http://129.129.95.111:5000' -# deviceTags: -# - camera -# - trigger -# - gfcam -# enabled: true -# onFailure: buffer -# readOnly: false -# readoutPriority: monitored -# softwareTrigger: true +gfcam: + description: GigaFrost camera client + deviceClass: tomcat_bec.devices.GigaFrostCamera + deviceConfig: + prefix: 'X02DA-CAM-GF2:' + backend_url: 'http://sls-daq-001:8080' + auto_soft_enable: true + std_daq_live: 'tcp://129.129.95.111:20000' + std_daq_ws: 'ws://129.129.95.111:8080' + std_daq_rest: 'http://129.129.95.111:5000' + deviceTags: + - camera + - trigger + - gfcam + enabled: true + onFailure: buffer + readOnly: false + readoutPriority: monitored + softwareTrigger: true # gfdaq: # description: GigaFrost stdDAQ client @@ -169,23 +169,23 @@ femto_mean_curr: # readoutPriority: monitored # softwareTrigger: false -pcocam: - description: PCO.edge camera client - deviceClass: tomcat_bec.devices.PcoEdge5M - deviceConfig: - prefix: 'X02DA-CCDCAM2:' - std_daq_live: 'tcp://129.129.95.111:20010' - std_daq_ws: 'ws://129.129.95.111:8081' - std_daq_rest: 'http://129.129.95.111:5010' - deviceTags: - - camera - - trigger - - pcocam - enabled: true - onFailure: buffer - readOnly: false - readoutPriority: monitored - softwareTrigger: true +# pcocam: +# description: PCO.edge camera client +# deviceClass: tomcat_bec.devices.PcoEdge5M +# deviceConfig: +# prefix: 'X02DA-CCDCAM2:' +# std_daq_live: 'tcp://129.129.95.111:20010' +# std_daq_ws: 'ws://129.129.95.111:8081' +# std_daq_rest: 'http://129.129.95.111:5010' +# deviceTags: +# - camera +# - trigger +# - pcocam +# enabled: true +# onFailure: buffer +# readOnly: false +# readoutPriority: monitored +# softwareTrigger: true # pcodaq: # description: GigaFrost stdDAQ client diff --git a/tomcat_bec/devices/gigafrost/pco_datasink.py b/tomcat_bec/devices/gigafrost/pco_datasink.py index e64f3ac..4e7c8c9 100644 --- a/tomcat_bec/devices/gigafrost/pco_datasink.py +++ b/tomcat_bec/devices/gigafrost/pco_datasink.py @@ -105,7 +105,7 @@ class PcoTestConsumerMixin(CustomDetectorMixin): raise finally: try: - self.parent._socket.disconnect() + self.parent._socket.disconnect(self.parent.url.get()) except RuntimeError: pass self.parent._mon = None diff --git a/tomcat_bec/devices/gigafrost/pcoedgecamera.py b/tomcat_bec/devices/gigafrost/pcoedgecamera.py index 1e8105d..7653bdd 100644 --- a/tomcat_bec/devices/gigafrost/pcoedgecamera.py +++ b/tomcat_bec/devices/gigafrost/pcoedgecamera.py @@ -6,7 +6,6 @@ Created on Wed Dec 6 11:33:54 2023 """ import time import numpy as np -from ophyd import Component, EpicsSignal, EpicsSignalRO, Kind from ophyd.status import SubscriptionStatus, DeviceStatus from ophyd_devices.interfaces.base_classes.psi_device_base import PSIDeviceBase @@ -182,18 +181,18 @@ class PcoEdge5M(PSIDeviceBase, PcoEdgeBase): ) # Start the acquisition (this sets parameers and starts acquisition) - self.camStatusCmd.set("Running").wait() + self.acquire.set("Running").wait() # Subscribe and wait for update def is_running(*, value, timestamp, **_): return bool(value == 6) - status = SubscriptionStatus(self.camStatusCode, is_running, timeout=5, settle_time=0.2) + status = SubscriptionStatus(self.camera_statuscode, is_running, timeout=5, settle_time=0.2) status.wait() def disarm(self): """Bluesky style unstage: stop the detector""" - self.camStatusCmd.set("Idle").wait() + self.acquire.set("Idle").wait() # Data streaming is stopped by setting the max index to 0 # FIXME: This might interrupt data transfer diff --git a/tomcat_bec/devices/gigafrost/std_daq_client.py b/tomcat_bec/devices/gigafrost/std_daq_client.py index fc4364c..241e790 100644 --- a/tomcat_bec/devices/gigafrost/std_daq_client.py +++ b/tomcat_bec/devices/gigafrost/std_daq_client.py @@ -176,9 +176,9 @@ class StdDaqClient: """ old_config = self.get_config() if update: - cfg = copy.deepcopy(self._config) - cfg.update(config) - new_config = cfg + cfg = copy.deepcopy(self._config) + cfg.update(config) + new_config = cfg else: new_config = config @@ -276,7 +276,7 @@ class StdDaqClient: self._shutdown_event.set() if self._ws_monitor_thread is not None: self._ws_monitor_thread.join() - logger.warning("Shutdown joined") + logger.warning("Thread joined") if self._ws_client is not None: self._ws_client.close() self._ws_client = None @@ -306,7 +306,6 @@ class StdDaqClient: with self._ws_recv_mutex: while not self._shutdown_event.is_set(): - logger.warning("NI") self._wait_for_server_running() try: msg = self._ws_client.recv(timeout=0.1) diff --git a/tomcat_bec/devices/gigafrost/std_daq_preview.py b/tomcat_bec/devices/gigafrost/std_daq_preview.py index fcb1696..03884d0 100644 --- a/tomcat_bec/devices/gigafrost/std_daq_preview.py +++ b/tomcat_bec/devices/gigafrost/std_daq_preview.py @@ -2,6 +2,7 @@ import json import threading import time from typing import Callable +import traceback import numpy as np import zmq @@ -86,7 +87,9 @@ class StdDaqPreview: t_last = t_curr except ValueError: # Happens when ZMQ partially delivers the multipart message - pass + content = traceback.format_exc() + logger.warning(f"Websocket connection closed unexpectedly: {content}") + continue except zmq.error.Again: # Happens when receive queue is empty time.sleep(0.1)