diff --git a/slic/core/acquisition/__init__.py b/slic/core/acquisition/__init__.py index 161d9bff..bee0c73e 100644 --- a/slic/core/acquisition/__init__.py +++ b/slic/core/acquisition/__init__.py @@ -2,6 +2,7 @@ from .bsacquisition import BSAcquisition from .dbacquisition import DBAcquisition from .diaacquisition import DIAAcquisition +from .nudiaracquisition import NuDIArAcquisition from .pvacquisition import PVAcquisition diff --git a/slic/core/acquisition/nudiaracquisition.py b/slic/core/acquisition/nudiaracquisition.py new file mode 100644 index 00000000..2ac3d804 --- /dev/null +++ b/slic/core/acquisition/nudiaracquisition.py @@ -0,0 +1,56 @@ +import os +from time import sleep + +from slic.utils.channels import Channels +from slic.core.task import DAQTask + +from .baseacquisition import BaseAcquisition +from .sfpaths import SwissFELPaths + +from .broker_client import BrokerClient + + +class NuDIArAcquisition(BaseAcquisition): + + def __init__(self, instrument, pgroup, default_channels=None, api_address="http://sf-daq-1:10002", rate_multiplicator=1): + self.instrument = instrument + self.pgroup = pgroup + + self.paths = SwissFELPaths(instrument, pgroup) + + if not default_channels: + default_channel_list = self.paths.default_channel_list + default_channels = Channels(default_channel_list) + + self.default_channels = default_channels + self.api_address = api_address + self.client = BrokerClient(pgroup, address=api_address, rate_multiplicator=rate_multiplicator) + + self.current_task = None + + + def acquire(self, filename=None, channels=None, n_pulses=100): + if not filename: + filename = "/dev/null" + + if not channels: + print("No channels specified, using default channel list.") + channels = self.default_channels + + client = self.client + client.set_config(n_pulses, filename, channels=channels) + + task = DAQTask(client.start, stopper=client.stop, filename=filename, hold=False) + self.current_task = task + return task + + + @property + def status(self): + return self.client.status + + def __repr__(self): + return "New unnamed DIA replacement on {} (status: {})".format(self.api_address, self.status) + + +