herosdevices.core.templates.acq_device¶
Template for general acquisition devices like cameras and oscilloscopes.
Module Contents¶
- class herosdevices.core.templates.acq_device.AcquisitionDeviceTemplate(config_dict: dict, default_config: str | None = None, keep_device_open: bool = True, payload_metadata: dict | None = None)[source]¶
Bases:
herosdevices.interfaces.heros.ConfiguredDeviceTemplate (base class) for acquisition-like devices.
Template for devices which are based on the concept of configuring the device first and then running an acquisition thread which collects data (like images, osci traces,…).
To make a functional device driver, the user needs to implement all abstract methods. In addition, this call does not cover the mechanism the actually retrieve the data from the device since it is typically special to each vendor/API. A general guideline should be to start a separate thread for the acquisition which uses the _acquisition_lock to prohibit concurrent exposures. For each received data set, the event
acquisition_data()should be called. In addition,acquisition_stopped()should be emitted after the acquisition.The driver must also define the default_config_dict attribute, intended for configuration values which are applied to all user configurations if the corresponding keys are not specified.
- acquisition_running: bool = False¶
- payload_metadata: dict¶
- default_config_dict: dict¶
- keep_device_open = True¶
- default_config: str¶
- get_device() collections.abc.Iterator[None][source]¶
Yield a device handle.
# use the device in a with statement with self.get_device() as camera: camera.do_something()
- reset() None[source]¶
Reset the device by aborting any ongoing exposure, closing and re-opening the handler.
- get_status() dict[source]¶
Get a dict with the current device status.
- Returns:
A dict with the device status
- property config_dict: dict¶
Get a copy of the configuration dict.
- Returns:
Copy of the configuration dict
- update_configuration(new_config_dict: dict, merge: bool = True) None[source]¶
Update the configuration dict with new configuration.
Each dict key corresponds a (new) configuration name. Each value is a dict with config property -> config value.
- Parameters:
new_config_dict – A dict of configurations where the keys are the configuration names
merge – If
True, the new dict is recursively merged with the current set config dict. IfFalsethe old configurations with the provided names (keys) are overwritten.
- get_configuration() dict[source]¶
Get the currently active configuration.
- Returns:
The currently active configuration.
- configure(config: str = '', metadata: dict | None = None) bool[source]¶
Configure the device with the known configuration config.
To add a configuration to the device, use
update_configuration().- Parameters:
config – Key (name) of the configuration
metadata – Metadata that is merged into the current payload metadata dict which is send with every emitted
acquisition_dataevent.
- set_configuration¶
- update_payload_metadata(metadata: dict, merge: bool = True) None[source]¶
Update metadata dict send with every emitted frame by the
acquisition_dataevent method.- Parameters:
metadata – Metadata that is merged into the current payload metadata dict which is send with every emitted
acquisition_dataevent.merge – If
True, the new dict is merged with the current set metadata dict. IfFalsethe old metadata is overwritten by the given dict.
- arm(metadata: dict | None = None, kill_running: bool = False) bool[source]¶
Arm the device with the currently active configuration.
- Parameters:
metadata – Metadata that is merged into the current payload metadata dict which is send with every emitted
acquisition_dataevent.kill_running – If
Trueany running acquisition will be stopped. IfFalseand an acquisition isrunning (already)
raised. (an error will be)
- Returns:
True if arming was successful else False
- acquisition_data(frame: numpy.ndarray, metadata: dict | None = None) tuple¶
Event to emit new frames.
Note
The dtype of the frame is not changed here.
- Parameters:
frame – The frame payload data (for example an image or an scope trace)
metadata – The metadata which is passed along the payload. This argument takes precedence over the
payload_metadataattribute (for example set by theupdate_payload_metadatamethod) while merging the two dicts.
- Returns:
A tuple of image and metadata(-dict)
- acquisition_started(metadata: dict | None = None) dict¶
Event emitted when the acquisition thread starts.
- Returns:
A dict with acquisition metadata
- acquisition_stopped(metadata: dict | None = None) dict¶
Event emitted when the acquisition thread stops.
- Returns:
A dict with acquisition metadata