|
ENLIGHTEN
Cross-platform desktop GUI for Wasatch Photonics spectrometers
|
This plugin is provided to control so-called "multichannel" spectrometer systems where two or more spectrometers (at least eight have been tested) are wired together for simultaneous measurements using "external hardware triggering. More...
Public Member Functions | |
| disconnect (self) | |
| Called when ENLIGHTEN is shutting down. | |
| get_configuration (self) | |
| End backwards compatible object-returning wrappers #####. | |
| process_request (self, request) | |
| This plugin doesn't actually do anything with spectra, but this is a convenient place to update the outputs for the Trigger and Fan fields. | |
| trigger_callback (self) | |
| The user has clicked the "Trigger" button on the plugin GUI, so briefly pulse laser_enable on the spectrometer configured as the "trigger master". | |
Public Member Functions inherited from EnlightenPlugin.EnlightenPluginBase | |
| __init__ (self, ctl) | |
| connect (self) | |
| Do whatever you have to do to prepare for processing measurements. | |
| field (self, **kwargs) | |
| get_axis (self, processed_reading=None) | |
| get_axis_name (self) | |
| get_axis_short_name (self) | |
| get_configuration_obj (self) | |
| End functional-plugins backend ####. | |
| get_plugin_field (self, name) | |
| get the associated enlighten.Plugins.PluginFieldWidget (which IS a QWidget, mind you) | |
| get_widget_from_name (self, name) | |
| get the associated QLabel, QSpinBox, etc | |
| log (self, *msgs) | |
| Begin functional-plugins backend ###. | |
| output (self, name, value) | |
| plot (self, y, x=None, title=None, color=None) | |
| When plotting on the main scope graph the (co)domain matches that existing graph. | |
| process_request_obj (self, request) | |
| to_graph (self, x) | |
| Undo to_pixel conversion, and set point back to currently selected graph X-Axis. | |
| to_pixel (self, x, domain=None) | |
| domain is an array where the index corresponds to a detector pixel number. | |
| update_visibility (self) | |
| Something has happened which might cause the plugin to wish to refresh its visible state – perhaps a new spectrometer was connected. | |
| wavelength_to_pixel (self, wavelength) | |
| wavenumber_to_pixel (self, wavenumber) | |
Public Attributes | |
| str | fan_name = None |
| fan_spec = None | |
| str | trigger_name = None |
| trigger_spec = None | |
Public Attributes inherited from EnlightenPlugin.EnlightenPluginBase | |
| auto_enable = None | |
| bool | block_enlighten = False |
| ctl = ctl | |
| error_message = None | |
| bool | has_other_graph = False |
| bool | is_blocking = False |
| bool | lock_enable = False |
| logfile = os.path.join(common.get_default_data_dir(), 'plugin.log') | |
| marquee_message = None | |
| dict | metadata = {} |
| bool | multi_devices = False |
| name = None | |
| dict | outputs = {} |
| dict | overrides = {} |
| bool | process_requests = True |
| dict | series = {} |
| list | signals = [] |
| bool | streaming = True |
| table = None | |
| x_axis_label = None | |
| y_axis_label = None | |
Additional Inherited Members | |
Protected Attributes inherited from EnlightenPlugin.EnlightenPluginBase | |
| _config = None | |
| list | _fields = [] |
This plugin is provided to control so-called "multichannel" spectrometer systems where two or more spectrometers (at least eight have been tested) are wired together for simultaneous measurements using "external hardware triggering.
" Although most Wasatch spectrometers have an "external_trigger_in" pin to <em>receive</em> external triggers, many do not have an available output GPIO discrete for use in <em>generating</em> trigger signals. Therefore, when using X/XM series FX2-based spectrometers (R0 and R2 detectors tested), we can use the laser_enable pin on one spectrometer as a "controllable output discrete". That pin can then be multiplexed into the "external_hardware_in" pins on several spectrometers – including the "trigger master" unit! – to cause the entire set of spectrometers to start a new acquisition at nearly the same time. ("Nearly" due to the necessarily free-running function of CCDs which keeps each detector "empty" and ready to start a new acquisition with minimal latency – literally the minimum integration time of a given model, irrespect- ive of the currently configured integration time.) Obviously, if the laser_enable signal is being re-used in this manner, then the signal cannot easily be used for Raman operation, so this multichannel architecture is essentially limited to non-Raman applications. @par EEPROM Configuration This plugin assumes that the connected units each have Page 4 (User Data) populated with a string matching one of the following patterns: - "pos=n" (where n is an integer in the range 0-127) - "pos=n;feature=FEATURE" (where FEATURE is either "trigger" or "fan")
Examples:
| Multichannel.Multichannel.disconnect | ( | self | ) |
Called when ENLIGHTEN is shutting down.
Release any resources you have. The next time you're needed, there will be a new call to connect().
Reimplemented from EnlightenPlugin.EnlightenPluginBase.
| Multichannel.Multichannel.get_configuration | ( | self | ) |
End backwards compatible object-returning wrappers #####.
Can be called BEFORE or AFTER connect. Should be idempotent. Ideally should return same object on multiple calls, but at least should be "equivalent" objects.
Reimplemented from EnlightenPlugin.EnlightenPluginBase.
| Multichannel.Multichannel.process_request | ( | self, | |
| request ) |
This plugin doesn't actually do anything with spectra, but this is a convenient place to update the outputs for the Trigger and Fan fields.
Reimplemented from EnlightenPlugin.EnlightenPluginBase.
| Multichannel.Multichannel.trigger_callback | ( | self | ) |
The user has clicked the "Trigger" button on the plugin GUI, so briefly pulse laser_enable on the spectrometer configured as the "trigger master".
| str Multichannel.Multichannel.fan_name = None |
| Multichannel.Multichannel.fan_spec = None |
| str Multichannel.Multichannel.trigger_name = None |
| Multichannel.Multichannel.trigger_spec = None |