├── MuSwitch ├── README.md └── MuSwitch.py ├── PID_Controller ├── simple_pid │ └── __init__.py ├── readme.md ├── LICENSE.md └── PID_Controller.py ├── NI_DAQ ├── .DS_Store ├── README.md └── PyDAQmx │ ├── example │ ├── __init__.py │ ├── test │ │ ├── test_MultiChannelAnalogInput.py │ │ └── __init__.py │ ├── callback_Task.py │ ├── ContinuousPulseTrainGeneration.py │ ├── callback_oo.py │ ├── callback_test_unregister.py │ ├── callback.py │ └── callback_Task_synchronous.py │ ├── __init__.py │ ├── DAQmxTypes.py │ ├── DAQmxConstants.py │ └── DAQmxCallBack.py ├── Examples ├── .DS_Store └── SimpleSignalGenerator │ └── SimpleSignalGenerator.py ├── Ocean_Optics_Spectrometer ├── seabreeze │ ├── __init__.py │ ├── cseabreeze │ │ ├── wrapper.pyd │ │ └── __init__.py │ ├── pyseabreeze │ │ ├── interfaces │ │ │ ├── wavelength.py │ │ │ ├── eeprom.py │ │ │ ├── nonlinearity.py │ │ │ └── thermoelectric.py │ │ └── __init__.py │ └── backends.py ├── .DS_Store ├── README.md └── Ocean_Optics_Spectrometer.ini ├── Vaunix_Attenuator ├── VNX_atten.dll └── README.md ├── LabBrick_LMS_Synthesizer ├── .DS_Store ├── DLL │ ├── vnx_fmsynth.dll │ └── vnx_fmsynth.lib └── README.md ├── Keysight_PXI_AWG ├── InternalTrigger.HVI ├── InternalTrigger.HVIprj ├── readme.md └── Keysight_PXI_AWG-UpgradeCfg.py ├── Keysight_PXI_HVI_Trigger ├── trigger.png ├── HVI │ ├── InternalTrigger_1_0.HVI │ ├── InternalTrigger_1_1.HVI │ ├── InternalTrigger_2_0.HVI │ ├── InternalTrigger_2_1.HVI │ ├── InternalTrigger_3_0.HVI │ ├── InternalTrigger_3_1.HVI │ ├── InternalTrigger_4_0.HVI │ ├── InternalTrigger_4_1.HVI │ ├── InternalTrigger_5_0.HVI │ ├── InternalTrigger_5_1.HVI │ ├── InternalTrigger_6_0.HVI │ ├── InternalTrigger_6_1.HVI │ ├── InternalTrigger_7_0.HVI │ ├── InternalTrigger_7_1.HVI │ ├── InternalTrigger_8_0.HVI │ ├── InternalTrigger_8_1.HVI │ ├── InternalTrigger_9_0.HVI │ ├── InternalTrigger_9_1.HVI │ ├── InternalTrigger_10_0.HVI │ ├── InternalTrigger_10_1.HVI │ ├── InternalTrigger_11_0.HVI │ ├── InternalTrigger_11_1.HVI │ ├── InternalTrigger_12_0.HVI │ ├── InternalTrigger_12_1.HVI │ ├── InternalTrigger_13_0.HVI │ ├── InternalTrigger_13_1.HVI │ ├── InternalTrigger_14_0.HVI │ ├── InternalTrigger_14_1.HVI │ ├── InternalTrigger_15_0.HVI │ ├── InternalTrigger_15_1.HVI │ ├── InternalTrigger_16_0.HVI │ ├── InternalTrigger_16_1.HVI │ ├── InternalTrigger_17_0.HVI │ ├── InternalTrigger_17_1.HVI │ ├── InternalTrigger_18_0.HVI │ ├── InternalTrigger_18_1.HVI │ ├── InternalTrigger_10_0.HVIprj │ ├── InternalTrigger_10_1.HVIprj │ ├── InternalTrigger_11_0.HVIprj │ ├── InternalTrigger_11_1.HVIprj │ ├── InternalTrigger_12_0.HVIprj │ ├── InternalTrigger_12_1.HVIprj │ ├── InternalTrigger_13_0.HVIprj │ ├── InternalTrigger_13_1.HVIprj │ ├── InternalTrigger_14_0.HVIprj │ ├── InternalTrigger_14_1.HVIprj │ ├── InternalTrigger_15_0.HVIprj │ ├── InternalTrigger_15_1.HVIprj │ ├── InternalTrigger_16_0.HVIprj │ ├── InternalTrigger_16_1.HVIprj │ ├── InternalTrigger_17_0.HVIprj │ ├── InternalTrigger_17_1.HVIprj │ ├── InternalTrigger_18_0.HVIprj │ ├── InternalTrigger_18_1.HVIprj │ ├── InternalTrigger_1_0.HVIprj │ ├── InternalTrigger_1_1.HVIprj │ ├── InternalTrigger_2_0.HVIprj │ ├── InternalTrigger_2_1.HVIprj │ ├── InternalTrigger_3_0.HVIprj │ ├── InternalTrigger_3_1.HVIprj │ ├── InternalTrigger_4_0.HVIprj │ ├── InternalTrigger_4_1.HVIprj │ ├── InternalTrigger_5_0.HVIprj │ ├── InternalTrigger_5_1.HVIprj │ ├── InternalTrigger_6_0.HVIprj │ ├── InternalTrigger_6_1.HVIprj │ ├── InternalTrigger_7_0.HVIprj │ ├── InternalTrigger_7_1.HVIprj │ ├── InternalTrigger_8_0.HVIprj │ ├── InternalTrigger_8_1.HVIprj │ ├── InternalTrigger_9_0.HVIprj │ └── InternalTrigger_9_1.HVIprj ├── HVI_Delay │ ├── InternalTrigger_10_0.HVI │ ├── InternalTrigger_10_1.HVI │ ├── InternalTrigger_10_2.HVI │ ├── InternalTrigger_11_0.HVI │ ├── InternalTrigger_11_1.HVI │ ├── InternalTrigger_11_2.HVI │ ├── InternalTrigger_12_0.HVI │ ├── InternalTrigger_12_1.HVI │ ├── InternalTrigger_12_2.HVI │ ├── InternalTrigger_13_0.HVI │ ├── InternalTrigger_13_1.HVI │ ├── InternalTrigger_13_2.HVI │ ├── InternalTrigger_14_0.HVI │ ├── InternalTrigger_14_1.HVI │ ├── InternalTrigger_14_2.HVI │ ├── InternalTrigger_15_0.HVI │ ├── InternalTrigger_15_1.HVI │ ├── InternalTrigger_15_2.HVI │ ├── InternalTrigger_16_0.HVI │ ├── InternalTrigger_16_1.HVI │ ├── InternalTrigger_16_2.HVI │ ├── InternalTrigger_17_0.HVI │ ├── InternalTrigger_17_1.HVI │ ├── InternalTrigger_17_2.HVI │ ├── InternalTrigger_18_0.HVI │ ├── InternalTrigger_18_1.HVI │ ├── InternalTrigger_18_2.HVI │ ├── InternalTrigger_1_0.HVI │ ├── InternalTrigger_1_1.HVI │ ├── InternalTrigger_1_2.HVI │ ├── InternalTrigger_2_0.HVI │ ├── InternalTrigger_2_1.HVI │ ├── InternalTrigger_2_2.HVI │ ├── InternalTrigger_3_0.HVI │ ├── InternalTrigger_3_1.HVI │ ├── InternalTrigger_3_2.HVI │ ├── InternalTrigger_4_0.HVI │ ├── InternalTrigger_4_1.HVI │ ├── InternalTrigger_4_2.HVI │ ├── InternalTrigger_5_0.HVI │ ├── InternalTrigger_5_1.HVI │ ├── InternalTrigger_5_2.HVI │ ├── InternalTrigger_6_0.HVI │ ├── InternalTrigger_6_1.HVI │ ├── InternalTrigger_6_2.HVI │ ├── InternalTrigger_7_0.HVI │ ├── InternalTrigger_7_1.HVI │ ├── InternalTrigger_7_2.HVI │ ├── InternalTrigger_8_0.HVI │ ├── InternalTrigger_8_1.HVI │ ├── InternalTrigger_8_2.HVI │ ├── InternalTrigger_9_0.HVI │ ├── InternalTrigger_9_1.HVI │ ├── InternalTrigger_9_2.HVI │ ├── InternalTrigger_10_0.HVIprj │ ├── InternalTrigger_10_1.HVIprj │ ├── InternalTrigger_10_2.HVIprj │ ├── InternalTrigger_11_0.HVIprj │ ├── InternalTrigger_11_1.HVIprj │ ├── InternalTrigger_11_2.HVIprj │ ├── InternalTrigger_12_0.HVIprj │ ├── InternalTrigger_12_1.HVIprj │ ├── InternalTrigger_12_2.HVIprj │ ├── InternalTrigger_13_0.HVIprj │ ├── InternalTrigger_13_1.HVIprj │ ├── InternalTrigger_13_2.HVIprj │ ├── InternalTrigger_14_0.HVIprj │ ├── InternalTrigger_14_1.HVIprj │ ├── InternalTrigger_14_2.HVIprj │ ├── InternalTrigger_15_0.HVIprj │ ├── InternalTrigger_15_1.HVIprj │ ├── InternalTrigger_15_2.HVIprj │ ├── InternalTrigger_16_0.HVIprj │ ├── InternalTrigger_16_1.HVIprj │ ├── InternalTrigger_16_2.HVIprj │ ├── InternalTrigger_17_0.HVIprj │ ├── InternalTrigger_17_1.HVIprj │ ├── InternalTrigger_17_2.HVIprj │ ├── InternalTrigger_18_0.HVIprj │ ├── InternalTrigger_18_1.HVIprj │ ├── InternalTrigger_18_2.HVIprj │ ├── InternalTrigger_1_0.HVIprj │ ├── InternalTrigger_1_1.HVIprj │ ├── InternalTrigger_1_2.HVIprj │ ├── InternalTrigger_2_0.HVIprj │ ├── InternalTrigger_2_1.HVIprj │ ├── InternalTrigger_2_2.HVIprj │ ├── InternalTrigger_30_2.HVIprj │ ├── InternalTrigger_3_0.HVIprj │ ├── InternalTrigger_3_1.HVIprj │ ├── InternalTrigger_3_2.HVIprj │ ├── InternalTrigger_4_0.HVIprj │ ├── InternalTrigger_4_1.HVIprj │ ├── InternalTrigger_4_2.HVIprj │ ├── InternalTrigger_5_0.HVIprj │ ├── InternalTrigger_5_1.HVIprj │ ├── InternalTrigger_5_2.HVIprj │ ├── InternalTrigger_6_0.HVIprj │ ├── InternalTrigger_6_1.HVIprj │ ├── InternalTrigger_6_2.HVIprj │ ├── InternalTrigger_7_0.HVIprj │ ├── InternalTrigger_7_1.HVIprj │ ├── InternalTrigger_7_2.HVIprj │ ├── InternalTrigger_8_0.HVIprj │ ├── InternalTrigger_8_1.HVIprj │ ├── InternalTrigger_8_2.HVIprj │ ├── InternalTrigger_9_0.HVIprj │ ├── InternalTrigger_9_1.HVIprj │ └── InternalTrigger_9_2.HVIprj └── readme.md ├── MultiQubit_PulseGenerator ├── .DS_Store ├── docs │ ├── classdiagrams.rst │ ├── summary.rst │ ├── index.rst │ ├── Makefile │ └── make.bat ├── recovery_rb_table.pickle ├── recovery_rb_table_iSWAP.pickle ├── README.md └── MultiQubit_PulseGenerator-UpgradeCfg.py ├── SingleQubit_PulseGenerator └── .DS_Store ├── LabBrick_LSG_SignalGenerator ├── .DS_Store ├── DLL │ ├── vnx_fsynsth.dll │ └── vnx_fsynsth.lib ├── README.md └── LabBrick_LSG_SignalGenerator.ini ├── SignalHound_SpectrumAnalyzer ├── sa_api.dll └── README.md ├── README.md ├── SingleQubit_Simulator ├── _integrateHNoNumpy_ForDriver.pyd ├── _integrateHNoNumpy_ForDriver.so ├── _integrateHNoNumpy_ForDriver.cp35-win32.pyd ├── _integrateHNoNumpy_ForDriver.cp35-win_amd64.pyd ├── _integrateHNoNumpy_ForDriver.cp36-win_amd64.pyd ├── _integrateHNoNumpy_ForDriver.cp37-win_amd64.pyd ├── _integrateHNoNumpy_ForDriver.cpython-35m-darwin.so ├── _integrateHNoNumpy_ForDriver.cpython-36m-darwin.so ├── _integrateHNoNumpy_ForDriver.cpython-36m-x86_64-linux-gnu.so └── compileCython.py ├── Tabor_SE5082_AWG └── readme.md ├── AlazarTech_Digitizer └── README.md ├── Acqiris_U1084A ├── README.md └── Acqiris_U1084A-UpgradeCfg.py ├── PXI_Aeroflex302x └── README.md ├── PXI_Aeroflex303x └── README.md ├── MiniCircuits_Switch └── README.md ├── Keysight_PXI_Digitizer └── readme.md ├── Signadyne_AWG └── readme.md ├── Signadyne_Digitizer └── readme.md ├── QSolver └── readme.md ├── UserInput ├── readme.md ├── UserInput.py └── UserInput.ini ├── NI_USB_6218 ├── PyDAQmx │ ├── example │ │ ├── __init__.py │ │ ├── test │ │ │ ├── test_MultiChannelAnalogInput.py │ │ │ └── __init__.py │ │ ├── callback_Task.py │ │ ├── ContinuousPulseTrainGeneration.py │ │ ├── callback_oo.py │ │ ├── callback_test_unregister.py │ │ ├── callback.py │ │ └── callback_Task_synchronous.py │ ├── __init__.py │ ├── DAQmxTypes.py │ ├── DAQmxConstants.py │ └── DAQmxCallBack.py └── README.md ├── Triton └── readme.md ├── Zurich_Instruments_HDAWG └── readme.md ├── Lakeshore 33x └── Lakeshore 33x.py ├── Stanford_DS345 └── Stanford_DS345.py ├── Yokogawa_7651 └── Yokogawa_7651-UpgradeCfg.py ├── Oxford Mercury iPS └── README.md ├── Keysight_MXA_SA_MODE └── Keysight_MXA_SA_MODE-UpgradeCfg.py ├── Agilent_SpectrumAnalyzer └── Agilent_SpectrumAnalyzer-UpgradeCfg.py ├── Zurich Instruments UHF └── readme.md ├── LICENSE ├── Oxford_ILM └── Oxford_ILM.py ├── Stanford_SRS844 └── Stanford_SRS844.py ├── Advantest_R8340 └── Advantest_R8340.py ├── WITec └── readme.md ├── Stanford_SRS830 └── Stanford_SRS830.py ├── Holzworth_HS9000_Synthesizer └── Holzworth_HS9000_Synthesizer.py ├── .gitignore ├── Stanford_SRS86x └── SRS_SR86x.py ├── Keysight_PXI_LO └── Keysight_PXI_LO.py ├── Lakeshore 475 └── Lakeshore 475.py ├── MuSwitchEX └── MuSwitchEX.py ├── LeidenPressure └── LeidenPressure.py ├── Cryomagnetics LM510 └── Cryomagnetics LM510.py ├── Rigol DSG3000 └── Rigol DSG3000.py ├── Oxford_Mercury_IPS └── Oxford_Mercury_IPS.py ├── Oxford IPS120 └── Oxford IPS120.py ├── Z-Crosstalk_Compensation └── Z-Crosstalk_Compensation.py ├── SimpleSignalGenerator ├── SimpleSignalGenerator.py └── SimpleSignalGenerator.ini ├── Keysight_6000X_Scope └── Keysight_6000X_Scope.py ├── Signal Recovery 726x └── Signal Recovery 726x.py ├── Timer ├── Timer.ini └── Timer.py ├── Waveform_demodulate └── Waveform_demodulate.ini ├── Tektronix_Oscilloscope └── Tektronix_Oscilloscope.py ├── Manual └── Manual.ini └── Agilent_33250A_WaveformGenerator └── Agilent_33250A_WaveformGenerator.py /MuSwitch/README.md: -------------------------------------------------------------------------------- 1 | ## Arduino-based microwave switch 2 | 3 | -------------------------------------------------------------------------------- /PID_Controller/simple_pid/__init__.py: -------------------------------------------------------------------------------- 1 | from .PID import PID 2 | -------------------------------------------------------------------------------- /NI_DAQ/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/NI_DAQ/.DS_Store -------------------------------------------------------------------------------- /Examples/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Examples/.DS_Store -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from seabreeze.backends import use 3 | 4 | __version__ = "0.5.3" 5 | -------------------------------------------------------------------------------- /Vaunix_Attenuator/VNX_atten.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Vaunix_Attenuator/VNX_atten.dll -------------------------------------------------------------------------------- /LabBrick_LMS_Synthesizer/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LMS_Synthesizer/.DS_Store -------------------------------------------------------------------------------- /Keysight_PXI_AWG/InternalTrigger.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_AWG/InternalTrigger.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/trigger.png -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/MultiQubit_PulseGenerator/.DS_Store -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Ocean_Optics_Spectrometer/.DS_Store -------------------------------------------------------------------------------- /SingleQubit_PulseGenerator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_PulseGenerator/.DS_Store -------------------------------------------------------------------------------- /Keysight_PXI_AWG/InternalTrigger.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_AWG/InternalTrigger.HVIprj -------------------------------------------------------------------------------- /LabBrick_LSG_SignalGenerator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LSG_SignalGenerator/.DS_Store -------------------------------------------------------------------------------- /SignalHound_SpectrumAnalyzer/sa_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SignalHound_SpectrumAnalyzer/sa_api.dll -------------------------------------------------------------------------------- /LabBrick_LMS_Synthesizer/DLL/vnx_fmsynth.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LMS_Synthesizer/DLL/vnx_fmsynth.dll -------------------------------------------------------------------------------- /LabBrick_LMS_Synthesizer/DLL/vnx_fmsynth.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LMS_Synthesizer/DLL/vnx_fmsynth.lib -------------------------------------------------------------------------------- /LabBrick_LSG_SignalGenerator/DLL/vnx_fsynsth.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LSG_SignalGenerator/DLL/vnx_fsynsth.dll -------------------------------------------------------------------------------- /LabBrick_LSG_SignalGenerator/DLL/vnx_fsynsth.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/LabBrick_LSG_SignalGenerator/DLL/vnx_fsynsth.lib -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Labber 2 | Instrument drivers for Labber, a software package for Instrument control and Measurement automation. 3 | 4 | http://labber.org 5 | -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_1.HVI -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/docs/classdiagrams.rst: -------------------------------------------------------------------------------- 1 | Class diagrams 2 | ============== 3 | 4 | .. inheritance-diagram:: gates 5 | :top-classes: gates.BaseGate 6 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/recovery_rb_table.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/MultiQubit_PulseGenerator/recovery_rb_table.pickle -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_1.HVI -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.pyd -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.so -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_10_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_11_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_12_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_13_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_14_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_15_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_16_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_17_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_18_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_1_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_2_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_3_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_4_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_5_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_6_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_7_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_8_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI/InternalTrigger_9_1.HVIprj -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/recovery_rb_table_iSWAP.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/MultiQubit_PulseGenerator/recovery_rb_table_iSWAP.pickle -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_2.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_0.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_0.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_1.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_1.HVI -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_2.HVI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_2.HVI -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/cseabreeze/wrapper.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Ocean_Optics_Spectrometer/seabreeze/cseabreeze/wrapper.pyd -------------------------------------------------------------------------------- /Tabor_SE5082_AWG/readme.md: -------------------------------------------------------------------------------- 1 | #Tabor SE5082 AWG 2 | 3 | The driver requires the Tabor python code provided by Tabor. Please copy the file *pyte16.py* into this folder. 4 | 5 | -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_10_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_11_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_12_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_13_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_14_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_15_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_16_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_17_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_18_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_1_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_2_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_30_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_30_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_3_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_4_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_5_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_6_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_7_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_8_2.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_0.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_0.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_1.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_1.HVIprj -------------------------------------------------------------------------------- /Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_2.HVIprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/Keysight_PXI_HVI_Trigger/HVI_Delay/InternalTrigger_9_2.HVIprj -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp35-win32.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp35-win32.pyd -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp35-win_amd64.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp35-win_amd64.pyd -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp36-win_amd64.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp36-win_amd64.pyd -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp37-win_amd64.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cp37-win_amd64.pyd -------------------------------------------------------------------------------- /AlazarTech_Digitizer/README.md: -------------------------------------------------------------------------------- 1 | ## AlazarTech Digitizer 2 | The driver requires the Windows DLL "ATSApi.dll", which is part of the software package that can be downloaded from the AlazarTech website. 3 | -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-35m-darwin.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-35m-darwin.so -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-36m-darwin.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-36m-darwin.so -------------------------------------------------------------------------------- /Acqiris_U1084A/README.md: -------------------------------------------------------------------------------- 1 | ## Acqiris U1084A Digitizer 2 | The driver requires the Windows DLL "AgMD1Fundamental.dll, which is part of the software package that can be downloaded from the Keysight website. 3 | -------------------------------------------------------------------------------- /Vaunix_Attenuator/README.md: -------------------------------------------------------------------------------- 1 | ## Vaunix Lab Brick Attenuator 2 | The driver requires the Windows DLL "VNX_atten.dll", which is part of the software package that can be downloaded from the Vaunix website. 3 | -------------------------------------------------------------------------------- /PXI_Aeroflex302x/README.md: -------------------------------------------------------------------------------- 1 | ## Aeroflex PXI Signal Generator 2 | The driver requires the Windows DLL "afSigGenDll_32.dll", which is part of the software package that can be downloaded from the Aeroflex website. 3 | -------------------------------------------------------------------------------- /PXI_Aeroflex303x/README.md: -------------------------------------------------------------------------------- 1 | ## Aeroflex PXI Digitizer 2 | The driver requires the Windows DLL "afDigitizerDll_32.dll", which is part of the software package that can be downloaded from the Aeroflex website. 3 | -------------------------------------------------------------------------------- /MiniCircuits_Switch/README.md: -------------------------------------------------------------------------------- 1 | ## MiniCircuits Switch 2 | The driver requires the Windows DLL "MCL_RF_Switch_Controller.dll", which is part of the software package that can be downloaded from the MiniCircuits website. 3 | -------------------------------------------------------------------------------- /SignalHound_SpectrumAnalyzer/README.md: -------------------------------------------------------------------------------- 1 | ## Signal Hound Spectrum Analyzer 2 | The driver requires the Windows DLL "sa_api.dll", which is part of the software package that can be downloaded from the Signal Hound website. 3 | -------------------------------------------------------------------------------- /SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-36m-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Labber-software/Drivers/HEAD/SingleQubit_Simulator/_integrateHNoNumpy_ForDriver.cpython-36m-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /PID_Controller/readme.md: -------------------------------------------------------------------------------- 1 | # PID Controller 2 | 3 | This driver uses the open-source package simple-pid for implementing the PID controller. 4 | 5 | For more information, see: 6 | https://pypi.org/project/simple-pid/#description -------------------------------------------------------------------------------- /Keysight_PXI_AWG/readme.md: -------------------------------------------------------------------------------- 1 | #Keysight PXI AWG 2 | 3 | The driver requires the Windows DLL "SD1core.dll" and the Python driver module "keysightSD1.py", which are part of the software package that can be downloaded from the Keysight website. 4 | 5 | -------------------------------------------------------------------------------- /LabBrick_LMS_Synthesizer/README.md: -------------------------------------------------------------------------------- 1 | ## Lab Brick LMS Synthesizer 2 | The driver requires the Windows DLL "vnx_fmsynth.dll", which is part of the software package that can be downloaded from the Lab Brick website. Place the file in the "DLL" folder 3 | -------------------------------------------------------------------------------- /Keysight_PXI_Digitizer/readme.md: -------------------------------------------------------------------------------- 1 | #Keysight PXI Digitizer 2 | 3 | The driver requires the Windows DLL "SD1core.dll" and the Python driver module "keysightSD1.py", which are part of the software package that can be downloaded from the Keysight website. 4 | 5 | -------------------------------------------------------------------------------- /LabBrick_LSG_SignalGenerator/README.md: -------------------------------------------------------------------------------- 1 | ## Lab Brick LSG Signal Generator 2 | The driver requires the Windows DLL "vnx_fsynsth.dll", which is part of the software package that can be downloaded from the Lab Brick website. Place the file in the "DLL" folder 3 | -------------------------------------------------------------------------------- /Signadyne_AWG/readme.md: -------------------------------------------------------------------------------- 1 | #Signadyne / Keysight AWG 2 | 3 | The driver requires the Windows DLL "SD_DLL_009600.dll" and the Python driver module "signadyne.py", which are part of the software package that can be downloaded from the Keysight/Signadyne website. 4 | 5 | -------------------------------------------------------------------------------- /NI_DAQ/README.md: -------------------------------------------------------------------------------- 1 | ## NI DAQ 2 | The driver requires the PyDAQmx package. 3 | PyDAQmx : a Python interface to the National Instruments DAQmx driver, Pierre CLADÉ, http://pythonhosted.org/PyDAQmx/. 4 | 5 | The PyDAQmx folder should be placed directly in the driver folder. 6 | -------------------------------------------------------------------------------- /Signadyne_Digitizer/readme.md: -------------------------------------------------------------------------------- 1 | #Signadyne / Keysight Digitizer 2 | 3 | The driver requires the Windows DLL "SD_DLL_009600.dll" and the Python driver module "signadyne.py", which are part of the software package that can be downloaded from the Keysight/Signadyne website. 4 | 5 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/docs/summary.rst: -------------------------------------------------------------------------------- 1 | API Reference 2 | ============= 3 | 4 | .. autosummary:: 5 | :toctree: _stubs 6 | 7 | sequence 8 | gates 9 | pulse 10 | crosstalk 11 | predistortion 12 | readout 13 | sequence_builtin 14 | sequence_rb 15 | tomography 16 | -------------------------------------------------------------------------------- /QSolver/readme.md: -------------------------------------------------------------------------------- 1 | # QSolver 2 | 3 | This driver uses the open-source package QuTiP for performing the simulations. 4 | Please install QuTiP in your local Python distribution, and use that distribution as your Labber Python distribution. 5 | 6 | For more information, see: 7 | http://qutip.org/ 8 | -------------------------------------------------------------------------------- /UserInput/readme.md: -------------------------------------------------------------------------------- 1 | #User Input 2 | 3 | This virtual driver will pause the measurement and wait for input from the user. 4 | 5 | - *Set value* is used as a set-channel and will pause the measurement until the user clicks ok 6 | - *Get value* should be used as a read-channel and asks the user for a number 7 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/__init__.py: -------------------------------------------------------------------------------- 1 | from .ContinuousPulseTrainGeneration import ContinuousPulseTrainGeneration 2 | from .MultiChannelAnalogInput import MultiChannelAnalogInput 3 | from .callback_Task_synchronous import CallbackTaskSynchronous 4 | from .callback_test_unregister import CallbackWithUnregister 5 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/__init__.py: -------------------------------------------------------------------------------- 1 | from .ContinuousPulseTrainGeneration import ContinuousPulseTrainGeneration 2 | from .MultiChannelAnalogInput import MultiChannelAnalogInput 3 | from .callback_Task_synchronous import CallbackTaskSynchronous 4 | from .callback_test_unregister import CallbackWithUnregister 5 | -------------------------------------------------------------------------------- /NI_USB_6218/README.md: -------------------------------------------------------------------------------- 1 | ## NI USB 6218 2 | The driver requires the PyDAQmx package. 3 | PyDAQmx : a Python interface to the National Instruments DAQmx driver, Pierre CLADÉ, http://pythonhosted.org/PyDAQmx/. 4 | 5 | The PyDAQmx folder should be placed directly in the driver folder. 6 | 7 | The driver also requires the NIDAQmx driver from National Instruments. 8 | -------------------------------------------------------------------------------- /Triton/readme.md: -------------------------------------------------------------------------------- 1 | #Triton driver 2 | 3 | Since v1.1 (vector) magnets are supported. This driver should detect the configuration of magnetic fields and switch heaters automatically and decide on its own when a sweep should be initialized. This means, that if multiple vector components are set in a single step, the sweep is initialized after the last component has been set. The driver will also wait for the magnetic field to settle ("idle") and implements a sweep mode. -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/test/test_MultiChannelAnalogInput.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | from ..MultiChannelAnalogInput import MultiChannelAnalogInput 4 | 5 | class Test(unittest.TestCase): 6 | def test(self): 7 | multipleAI = MultiChannelAnalogInput(["TestDevice/ai2","TestDevice/ai1"], reset=True) 8 | multipleAI.configure() 9 | multipleAI.read("TestDevice/ai2") 10 | 11 | 12 | suite = unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(Test)]) 13 | 14 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/test/test_MultiChannelAnalogInput.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | from ..MultiChannelAnalogInput import MultiChannelAnalogInput 4 | 5 | class Test(unittest.TestCase): 6 | def test(self): 7 | multipleAI = MultiChannelAnalogInput(["TestDevice/ai2","TestDevice/ai1"], reset=True) 8 | multipleAI.configure() 9 | multipleAI.read("TestDevice/ai2") 10 | 11 | 12 | suite = unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(Test)]) 13 | 14 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/docs/index.rst: -------------------------------------------------------------------------------- 1 | .. Multi Qubit Pulse Generator documentation master file, created by 2 | sphinx-quickstart on Thu May 24 11:36:09 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to Multi Qubit Pulse Generator's documentation! 7 | ======================================================= 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :numbered: 12 | 13 | classdiagrams 14 | summary 15 | -------------------------------------------------------------------------------- /Zurich_Instruments_HDAWG/readme.md: -------------------------------------------------------------------------------- 1 | # Zurich Instruments HDAWG 2 | 3 | This driver encapsulates most features of the Zurich Instruments 8-channel HDAWG. However, communication is done through ziPython and the LabOne server, which you will have to obtain both from Zurich Instruments. While the LabOne server needs to be running during measurement, the ziPython libs need to be copied to the driver path. Just install ziPython (you do not need an actual local Python installation) and copy the zhinst folder from *C:\PythonX\Lib\site-packages\* to the driver folder (next to *Zurich_Instruments_HDAWG.py*). 4 | 5 | -------------------------------------------------------------------------------- /Lakeshore 33x/Lakeshore 33x.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | __version__ = "0.0.1" 6 | 7 | class Error(Exception): 8 | pass 9 | 10 | class Driver(VISA_Driver): 11 | """ This class implements the Lakeshore 33x driver""" 12 | 13 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 14 | """Perform the set value operation""" 15 | # The default precision of labber is too high... 16 | self.writeAndLog(quant.set_cmd + str(value)) 17 | return value 18 | 19 | if __name__ == '__main__': 20 | pass 21 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/pyseabreeze/interfaces/wavelength.py: -------------------------------------------------------------------------------- 1 | 2 | from .common import SeaBreezeError, get_pyseabreeze_decorator 3 | from .eeprom import EEPromFeature 4 | 5 | convert_exceptions = get_pyseabreeze_decorator('interfaces.wavelength') 6 | 7 | 8 | class WavelengthCoefficientsEEPromFeature(EEPromFeature): 9 | 10 | @convert_exceptions("") 11 | def get_wavelength_coefficients(self): 12 | # The spectrometers store the wavelength calibration in slots 1,2,3,4 13 | coeffs = [] 14 | for i in range(1, 5): 15 | coeffs.append(float(self.read_eeprom_slot(i))) 16 | return coeffs 17 | 18 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/test/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | from types import ModuleType 3 | import unittest 4 | 5 | 6 | from . import test_MultiChannelAnalogInput 7 | 8 | #suite = unittest.TestSuite([test_MultiChannelAnalogInput.suite]) 9 | 10 | 11 | # This function is called by unittest.main 12 | # Do no delete !!!! 13 | def load_tests(loader, standard_tests, pattern): 14 | for name, elm in list(globals().items()): 15 | if name.startswith('test') and isinstance(elm, ModuleType): 16 | suite = loader.loadTestsFromModule(elm) 17 | standard_tests.addTests(suite) 18 | return standard_tests 19 | 20 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/test/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | from types import ModuleType 3 | import unittest 4 | 5 | 6 | from . import test_MultiChannelAnalogInput 7 | 8 | #suite = unittest.TestSuite([test_MultiChannelAnalogInput.suite]) 9 | 10 | 11 | # This function is called by unittest.main 12 | # Do no delete !!!! 13 | def load_tests(loader, standard_tests, pattern): 14 | for name, elm in list(globals().items()): 15 | if name.startswith('test') and isinstance(elm, ModuleType): 16 | suite = loader.loadTestsFromModule(elm) 17 | standard_tests.addTests(suite) 18 | return standard_tests 19 | 20 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = MultiQubitPulseGenerator 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /Acqiris_U1084A/Acqiris_U1084A-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.0': 10 | # convert version 1.0 -> 1.1 11 | # changes: 12 | # demodulation not on by default 13 | version = '1.1' 14 | # if converting from old driver, turn on demodulation 15 | dValue['Enable demodulation'] = True 16 | # return new version and data 17 | return (version, dValue, dOption, dQuantReplace) 18 | -------------------------------------------------------------------------------- /SingleQubit_Simulator/compileCython.py: -------------------------------------------------------------------------------- 1 | from distutils.core import setup 2 | from distutils.extension import Extension 3 | from Cython.Build import cythonize 4 | import numpy as np 5 | extensions = [ 6 | Extension("_integrateHNoNumpy_ForDriver", ["_integrateHNoNumpy_ForDriver.pyx"], 7 | include_dirs = [np.get_include()]),] 8 | setup( 9 | ext_modules = cythonize(extensions)) 10 | 11 | # WIN: use same compiler as for python, Microsoft Build Tools for Visual Studio 2017 or 12 | # Microsoft Visual C++ Build Tools 2015. 13 | # see https://wiki.python.org/moin/WindowsCompilers 14 | # run with python .\compileCython.py build_ext --inplace 15 | 16 | # MAC, Py3: run with python compileCython.py build_ext --inplace 17 | 18 | 19 | -------------------------------------------------------------------------------- /Stanford_DS345/Stanford_DS345.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | class Driver(VISA_Driver): 6 | """ The DS 345 driver re-implements the VISA driver for taking care of units""" 7 | 8 | def performGetValue(self, quant, options={}): 9 | """Perform the Get Value instrument operation""" 10 | # perform special getValue for amplitude command 11 | if quant.name == 'Amplitude': 12 | # get voltage string from instrument 13 | sAns = self.askAndLog('AMPL? VP').strip() 14 | # strip "VP" from string 15 | sData = sAns.split('VP')[0] 16 | # return float 17 | return float(sData) 18 | else: 19 | # for all other cases, just run the generic visa driver 20 | return VISA_Driver.performGetValue(self, quant, options=options) 21 | 22 | -------------------------------------------------------------------------------- /Yokogawa_7651/Yokogawa_7651-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.0': 10 | # convert version 1.0 -> 1.1 11 | # changes: 12 | # seperate voltage/current quantities instead of generic value 13 | version = '1.1' 14 | # assume old value quantity was referring to a voltage 15 | if 'Value' in dValue: 16 | dValue['Voltage'] = dValue.pop('Value') 17 | # replace 'Value' with 'Voltage' 18 | dQuantReplace['Value'] = 'Voltage' 19 | # return new version and data 20 | return (version, dValue, dOption, dQuantReplace) 21 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=MultiQubitPulseGenerator 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /Oxford Mercury iPS/README.md: -------------------------------------------------------------------------------- 1 | #Oxford Mercury iPS 2 | 3 | The available options (field axes and presence of switch heater) have to be set manually. It is highly recommended to start the driver as "get config". 4 | 5 | The setting "SwitchHeaterDelay" sets the amount of time for the switch heater to settle. The driver will completely block while displaying a message "Waiting for switch heater" after each change of the heater setting. The optimum setting depends on the device and the default is set quite high. However, if you do not wait long enough before driving the magnet after switching you might risk a quench! 6 | 7 | If the switch heater is on when driving the magnetic field, the driver will set the target field and start a ramp immediately. If the switch heater is off, the driver will turn it on (wait for it), set the target field, start a ramp and finally disable the switch heater again (and wait again). The latter method will save a lot of LHe if the fiel is mostly constant and only has to be changed once in a while. 8 | -------------------------------------------------------------------------------- /Keysight_MXA_SA_MODE/Keysight_MXA_SA_MODE-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.0': 10 | # convert version 1.0 -> 1.1 11 | # changes: 12 | # zero-span mode moved from bool to combo box with start-stop, center-span 13 | version = '1.1' 14 | # assume old value quantity was referring to a voltage 15 | if 'Zero-span mode' in dValue: 16 | bZeroSpan = dValue.pop('Zero-span mode') 17 | if bZeroSpan: 18 | dValue['Range type'] = 'Zero-span mode' 19 | else: 20 | dValue['Range type'] = 'Center - Span' 21 | # return new version and data 22 | return (version, dValue, dOption, dQuantReplace) 23 | -------------------------------------------------------------------------------- /Agilent_SpectrumAnalyzer/Agilent_SpectrumAnalyzer-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.0': 10 | # convert version 1.0 -> 1.1 11 | # changes: 12 | # zero-span mode moved from bool to combo box with start-stop, center-span 13 | version = '1.1' 14 | # assume old value quantity was referring to a voltage 15 | if 'Zero-span mode' in dValue: 16 | bZeroSpan = dValue.pop('Zero-span mode') 17 | if bZeroSpan: 18 | dValue['Range type'] = 'Zero-span mode' 19 | else: 20 | dValue['Range type'] = 'Center - Span' 21 | # return new version and data 22 | return (version, dValue, dOption, dQuantReplace) 23 | -------------------------------------------------------------------------------- /PID_Controller/LICENSE.md: -------------------------------------------------------------------------------- 1 | 2 | MIT License 3 | 4 | Copyright (c) 2018 Martin Lundberg 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 11 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/README.md: -------------------------------------------------------------------------------- 1 | # Multi-Qubit Pulse Generator 2 | The mult-qubit pulse generator creates baseband pulses for applying X/Y and Z rotations to systems with superconducting qubits. 3 | 4 | The driver uses a library for generating the sequences, which are organized in the following modules and classes: 5 | 6 | ## sequence.py 7 | 8 | Classes for defining gate sequences. To create a new sequence, subclass the **Sequence** class and implement the gate sequence in the function *generate_sequence*. The built-in sequences are defined in the file *sequence_builtin.py* 9 | 10 | ## pulse.py 11 | 12 | Classes and code related to creating pulses for driving qubits. 13 | 14 | ## predistortion.py 15 | 16 | Classes and code related to predistorting waveforms to fix pulse imperfections. 17 | 18 | ## crosstalk.py 19 | 20 | Classes and code related to minimizing and compensating for signal crosstalk. 21 | 22 | ## readout.py 23 | 24 | Classes and code for generating waveforms for reading out superconducting qubits. 25 | 26 | ## docs 27 | Run make html or make latexpdf to create the documentation for the driver. 28 | -------------------------------------------------------------------------------- /UserInput/UserInput.py: -------------------------------------------------------------------------------- 1 | import InstrumentDriver 2 | 3 | class Driver(InstrumentDriver.InstrumentWorker): 4 | """ This class implements a user input driver""" 5 | 6 | 7 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 8 | """Perform the Set Value instrument operation""" 9 | # proceed depending on quantity 10 | if quant.name == 'Set value': 11 | # get value from user dialog 12 | newValue = self.getValueFromUserDialog(value, 13 | title='User input - Set value') 14 | return newValue 15 | else: 16 | return quant.getValue() 17 | 18 | 19 | def performGetValue(self, quant, options={}): 20 | """Perform the Get Value instrument operation""" 21 | # proceed depending on quantity 22 | if quant.name == 'Get value': 23 | # get value from user dialog 24 | newValue = self.getValueFromUserDialog(quant.getValue(), 25 | title='User input - Get value') 26 | return newValue 27 | else: 28 | return quant.getValue() 29 | 30 | 31 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from . import DAQmxConfig 4 | 5 | from .DAQmxTypes import * 6 | from .DAQmxConstants import * 7 | from .DAQmxFunctions import * 8 | from .Task import Task 9 | 10 | from . import DAQmxConstants 11 | from . import DAQmxFunctions 12 | 13 | all_types = ['int8', 'uInt8', 'int16', 'uInt16', 'int32', 'uInt32', 'float32', 'float64', 'int64', 'uInt64', 'bool32', 14 | 'TaskHandle', 'CalHandle', 'DAQmxEveryNSamplesEventCallbackPtr', 'DAQmxDoneEventCallbackPtr', 'DAQmxSignalEventCallbackPtr', 'CtypesString'] 15 | 16 | 17 | __all__ = DAQmxConstants.constant_list + list(DAQmxFunctions.function_dict.keys()) + ['Task'] + all_types + DAQmxFunctions.error_list 18 | 19 | for name in DAQmxConstants.constant_list + list(DAQmxFunctions.function_dict.keys()): 20 | if name.startswith('DAQmx_'): 21 | new_name = name[6:] 22 | elif name.startswith('DAQmx'): 23 | new_name = name[5:] 24 | globals()[new_name] = globals()[name] 25 | 26 | 27 | __version_info__ = (1, 4) 28 | __version__ = '.'.join(str(num) for num in __version_info__) 29 | 30 | __author__ ='Pierre Cladé' 31 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from . import DAQmxConfig 4 | 5 | from .DAQmxTypes import * 6 | from .DAQmxConstants import * 7 | from .DAQmxFunctions import * 8 | from .Task import Task 9 | 10 | from . import DAQmxConstants 11 | from . import DAQmxFunctions 12 | 13 | all_types = ['int8', 'uInt8', 'int16', 'uInt16', 'int32', 'uInt32', 'float32', 'float64', 'int64', 'uInt64', 'bool32', 14 | 'TaskHandle', 'CalHandle', 'DAQmxEveryNSamplesEventCallbackPtr', 'DAQmxDoneEventCallbackPtr', 'DAQmxSignalEventCallbackPtr', 'CtypesString'] 15 | 16 | 17 | __all__ = DAQmxConstants.constant_list + list(DAQmxFunctions.function_dict.keys()) + ['Task'] + all_types + DAQmxFunctions.error_list 18 | 19 | for name in DAQmxConstants.constant_list + list(DAQmxFunctions.function_dict.keys()): 20 | if name.startswith('DAQmx_'): 21 | new_name = name[6:] 22 | elif name.startswith('DAQmx'): 23 | new_name = name[5:] 24 | globals()[new_name] = globals()[name] 25 | 26 | 27 | __version_info__ = (1, 4) 28 | __version__ = '.'.join(str(num) for num in __version_info__) 29 | 30 | __author__ ='Pierre Cladé' 31 | -------------------------------------------------------------------------------- /Zurich Instruments UHF/readme.md: -------------------------------------------------------------------------------- 1 | #Zurich Instruments UHF 2 | 3 | This driver encapsulates most features of the Zurich Instruments UHF lock-in amplifier. However, communication is done through ziPython and the LabOne server, which you will have to obtain both from Zurich Instruments. While the LabOne server needs to be running during measurement, the ziPython libs need to be copied to the driver path. Just install ziPython (you do not need an actual local Python installation) and copy the zhinst folder from *C:\PythonX\Lib\site-packages\* to the driver folder (next to *Zurich Instruments UHF.py*). 4 | 5 | ##Trace Step 6 | The trace step function allows to record a timed trace during which other parameters are changed. The other parameter can be set to two values at given delays. 7 | 8 | To enable this function *TimeStep* has to be set to on. The second channel is selected from *TimeStepChannel*. If a trace is started, the trace will run over the duration *TraceLength*, but after *TimeStepDelayA* the value of *TimeStepChannel* will be set to *TimeStepSetpointA*. After an additional delay of *TimeStepDelayB* it will be set to *TimeStepSetpointB* (which can be used to reset the value before the next trace). -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/pyseabreeze/interfaces/eeprom.py: -------------------------------------------------------------------------------- 1 | 2 | from .common import SeaBreezeError, get_pyseabreeze_decorator 3 | from .communication import USBCommOOI 4 | 5 | import struct 6 | 7 | convert_exceptions = get_pyseabreeze_decorator('interfaces.eeprom') 8 | 9 | 10 | class EEPromFeature(USBCommOOI): 11 | 12 | def has_eeprom_feature(self): 13 | return [True] 14 | 15 | @convert_exceptions("Error during EEProm read.") 16 | def read_eeprom_slot(self, slot_number): 17 | """reads data from an eeprom slot""" 18 | ret = self.read_eeprom_slot_raw(slot_number) 19 | data = ret[2:ret[2:].index(0)+2].tostring().decode('utf-8') 20 | return data.rstrip('\x00') 21 | 22 | def write_eeprom_slot(self, slot_number, data): 23 | raise NotImplementedError 24 | 25 | def read_eeprom_slot_raw(self, slot_number): 26 | """reads the raw data from an eeprom slot""" 27 | self.usb_send(struct.pack('= (3,): 35 | if isinstance(param, str): 36 | param = param.encode('ascii') 37 | return c_char_p(param) 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/DAQmxTypes.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from ctypes import * 4 | import ctypes 5 | from .DAQmxConstants import DAQmx_copyright_year 6 | 7 | # New types definitions 8 | # Correspondance between the name used in the NiDAQmx.h file and ctypes 9 | int8 = c_byte 10 | uInt8 = c_ubyte 11 | int16 = c_short 12 | uInt16 = c_ushort 13 | int32 = c_int 14 | uInt32 = c_uint 15 | float32 = c_float 16 | float64 = c_double 17 | int64 =c_longlong 18 | uInt64 = c_ulonglong 19 | bool32 = uInt32 20 | if DAQmx_copyright_year<2010: 21 | TaskHandle = uInt32 22 | else: 23 | TaskHandle = c_void_p 24 | CalHandle = uInt32 25 | 26 | # CFUNCTYPE defined in NIDAQmx.h 27 | DAQmxEveryNSamplesEventCallbackPtr = CFUNCTYPE(int32, TaskHandle, int32, uInt32, c_void_p) 28 | DAQmxDoneEventCallbackPtr = CFUNCTYPE(int32, TaskHandle, int32, c_void_p) 29 | DAQmxSignalEventCallbackPtr = CFUNCTYPE(int32, TaskHandle, int32, c_void_p) 30 | 31 | class CtypesString(object): 32 | """ Argtypes to automatically convert str to bytes in Python3 """ 33 | def from_param(self, param): 34 | if sys.version_info >= (3,): 35 | if isinstance(param, str): 36 | param = param.encode('ascii') 37 | return c_char_p(param) 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Stanford_SRS844/Stanford_SRS844.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | class Driver(VISA_Driver): 6 | """ The SRS 844 driver re-implements the VISA driver with extra options""" 7 | 8 | # def performOpen(self, options={}): 9 | # """Perform the operation of opening the instrument connection""" 10 | # # calling the generic VISA open to make sure we have a connection 11 | # VISA_Driver.performOpen(self, options=options) 12 | # # set termination character 13 | # self.com.term_chars = '\r' 14 | 15 | def performGetValue(self, quant, options={}): 16 | """Perform the Get Value instrument operation""" 17 | # perform special getValue for reading complex value 18 | name = str(quant.name) 19 | if name == 'Value': 20 | # get complex value in one instrument reading 21 | sCmd = 'SNAP?1,2' 22 | sAns = self.askAndLog(sCmd).strip() 23 | lData = sAns.split(',') 24 | # return complex values 25 | return complex(float(lData[0].strip()), float(lData[1].strip())) 26 | else: 27 | # run the generic visa driver case 28 | return VISA_Driver.performGetValue(self, quant, options=options) 29 | 30 | 31 | if __name__ == '__main__': 32 | pass 33 | -------------------------------------------------------------------------------- /Advantest_R8340/Advantest_R8340.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | 6 | class Driver(VISA_Driver): 7 | """ The driver re-implements the VISA driver with some more options""" 8 | 9 | 10 | def performGetValue(self, quant, options={}): 11 | """Perform the Get Value instrument operation""" 12 | # do special case get value for some quantities 13 | if quant.name in ('Current', 'Resistance'): 14 | # check if charge/discharge 15 | discharge = self.getValue('Discharge/charge before measuring') 16 | if discharge: 17 | delay_time = self.getValue('Delay between charging/measuring') 18 | # start by discharging, then charging 19 | self.writeAndLog('MD2') 20 | self.writeAndLog('OT1') 21 | self.writeAndLog('MD1') 22 | # wait some time 23 | self.wait(delay_time) 24 | # turn on measurement mode 25 | self.writeAndLog('MD0') 26 | # after charging/discharing, run the visa driver case to get value 27 | return VISA_Driver.performGetValue(self, quant, options=options) 28 | else: 29 | # run the generic visa driver case 30 | return VISA_Driver.performGetValue(self, quant, options=options) 31 | 32 | 33 | 34 | if __name__ == '__main__': 35 | pass 36 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/README.md: -------------------------------------------------------------------------------- 1 | ## Ocean Optics Spectrometer 2 | The driver requires that the SeaBreeze software has been installed (https://sourceforge.net/projects/seabreeze/files/SeaBreeze/installers/) 3 | 4 | Download and run the *32 bit* version (seabreeze-x.x.x-Setup32.msi) 5 | 6 | The driver is based on the python-seabreeze package, which is released under the MIT license: 7 | 8 | Copyright (C) 2012-2016 Andreas Poehlmann 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | -------------------------------------------------------------------------------- /WITec/readme.md: -------------------------------------------------------------------------------- 1 | #WITec Control FOUR remote 2 | 3 | ##Prerequisite 4 | 5 | This driver uses the COM-interface of the WITec Control FOUR software. This interface has to be enabled first or the driver will not work at all. (Please refer to the WITec manuals for this.) 6 | 7 | ##General notes 8 | - The auto-close function closes any WITec-window which has not been open when the function has been activated. Therefore, enable the remote in the WITec software before activating this channel. 9 | - For automatical naming add an auto-name channel as a step channel and enable channel relations to set it to the same value as the main loop. You can then use the number of the auto-name channel as a placeholder in the naming following the Python "format" function. (For example, use {0} as a placeholder for the first auto-name channel) 10 | - A measurement is triggered by reading one of the trigger-channels. 11 | - "TriggerAndReadSingleSpectrum" can retrieve the data of a single spectrum into Labber. This is done by telling WITec to save the current project to the HDD and then read the latest spectrum from this file. For this to work, you have to change some setting in "Auto Save": Make sure, that the file is saved using the "extra directory" and that WITec is set to override files. The driver will change the output to C:\Labber-Temp by itself. It is also highly recommended to "Store and clear" to speed up this process. Unfortunately, with this method you will have your data in Labber only. 12 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/DAQmxConstants.py: -------------------------------------------------------------------------------- 1 | """ Initialize the constants from the NIDAQmx.h file 2 | 3 | Read the NIDAQmx.h file and "execute" the #define command 4 | """ 5 | 6 | import re 7 | from .DAQmxConfig import dot_h_file 8 | 9 | include_file = open(dot_h_file,'r') #Open NIDAQmx.h file 10 | 11 | # Try get the version of NIDAQmx 12 | preamble = [] 13 | for line in include_file: 14 | if line.startswith('/*'): 15 | preamble.append(line) 16 | else: 17 | break 18 | 19 | for copyright_line in preamble: 20 | if "Copyright" in copyright_line: 21 | DAQmx_copyright_year = max(list(map(int, re.findall('\d\d\d\d', copyright_line)))) 22 | break 23 | else: 24 | DAQmx_copyright_year = 2003 25 | 26 | # Regular expression to parse the #define line 27 | # Parse line like : #define PI 3.141592 28 | # The first group is the name of the constant 29 | # The second group the value 30 | define = re.compile(r'\#define\s+(\S+)\s+(".*"|\S+)') 31 | 32 | # List containing all the name of the constant 33 | constant_list = [] 34 | 35 | for line in include_file: 36 | m = define.match(line) 37 | if m: 38 | name = m.group(1) 39 | value = m.group(2) 40 | try: 41 | exec(name+'='+value) 42 | except NameError: 43 | pass 44 | except SyntaxError: 45 | pass 46 | else: 47 | constant_list.append(name) 48 | 49 | include_file.close() 50 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/DAQmxConstants.py: -------------------------------------------------------------------------------- 1 | """ Initialize the constants from the NIDAQmx.h file 2 | 3 | Read the NIDAQmx.h file and "execute" the #define command 4 | """ 5 | 6 | import re 7 | from .DAQmxConfig import dot_h_file 8 | 9 | include_file = open(dot_h_file,'r') #Open NIDAQmx.h file 10 | 11 | # Try get the version of NIDAQmx 12 | preamble = [] 13 | for line in include_file: 14 | if line.startswith('/*'): 15 | preamble.append(line) 16 | else: 17 | break 18 | 19 | for copyright_line in preamble: 20 | if "Copyright" in copyright_line: 21 | DAQmx_copyright_year = max(list(map(int, re.findall('\d\d\d\d', copyright_line)))) 22 | break 23 | else: 24 | DAQmx_copyright_year = 2003 25 | 26 | # Regular expression to parse the #define line 27 | # Parse line like : #define PI 3.141592 28 | # The first group is the name of the constant 29 | # The second group the value 30 | define = re.compile(r'\#define\s+(\S+)\s+(".*"|\S+)') 31 | 32 | # List containing all the name of the constant 33 | constant_list = [] 34 | 35 | for line in include_file: 36 | m = define.match(line) 37 | if m: 38 | name = m.group(1) 39 | value = m.group(2) 40 | try: 41 | exec(name+'='+value) 42 | except NameError: 43 | pass 44 | except SyntaxError: 45 | pass 46 | else: 47 | constant_list.append(name) 48 | 49 | include_file.close() 50 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/pyseabreeze/interfaces/nonlinearity.py: -------------------------------------------------------------------------------- 1 | 2 | from .common import SeaBreezeError, get_pyseabreeze_decorator 3 | from .eeprom import EEPromFeature 4 | from .communication import USBCommOBP 5 | 6 | import struct 7 | 8 | convert_exceptions = get_pyseabreeze_decorator('interfaces.nonlinearity') 9 | 10 | 11 | class NonlinearityCoefficientsEEPromFeature(EEPromFeature): 12 | 13 | def has_nonlinearity_coeffs_feature(self): 14 | return [True] 15 | 16 | @convert_exceptions("Error when reading nonlinearity coeffs.") 17 | def get_nonlinearity_coeffs(self): 18 | # The spectrometers store the wavelength calibration in slots 6..13 19 | coeffs = [] 20 | for i in range(6, 14): 21 | coeffs.append(float(self.read_eeprom_slot(i))) 22 | return coeffs 23 | 24 | 25 | class NonlinearityCoefficientsOBPFeature(USBCommOBP): 26 | 27 | def has_nonlinearity_coeffs_feature(self): 28 | return [True] 29 | 30 | @convert_exceptions("Error when reading nonlinearity coeffs.") 31 | def get_nonlinearity_coeffs(self): 32 | # get number of nonlinearity coefficients 33 | data = self.query(0x00181100, "") 34 | N = struct.unpack(" 2: 22 | lData = sAns[:int(len(sAns)/2)].split(',') 23 | #Also, sometimes we receive an additional "-" at the end of a value 24 | #(0.12e-3,4.56e-7- instead of 0.12e-3,4.56e-7) 25 | #Hence, another simple fix: 26 | if lData[1][-1] == "-": 27 | lData[1] = lData[1][:-1] 28 | 29 | # return complex values 30 | return complex(float(lData[0].strip()), float(lData[1].strip())) 31 | else: 32 | # run the generic visa driver case 33 | return VISA_Driver.performGetValue(self, quant, options=options) 34 | 35 | 36 | if __name__ == '__main__': 37 | pass 38 | -------------------------------------------------------------------------------- /Holzworth_HS9000_Synthesizer/Holzworth_HS9000_Synthesizer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | import SR_String 5 | 6 | __version__ = "0.0.1" 7 | 8 | class Error(Exception): 9 | pass 10 | 11 | class Driver(VISA_Driver): 12 | """ This class re-implements special cases of the Holzworth HS9000 driver""" 13 | 14 | def performGetValue(self, quant, options={}): 15 | """Perform the Get Value instrument operation""" 16 | # simple workaround to deal with status queries not matching cmd_def vals 17 | if quant.name == 'Reference': 18 | # common method for these quants 19 | 20 | s1 = self.askAndLog(':CH0:STATUS?') 21 | # check for errors and raise exception if necesary 22 | self.queryErrors() 23 | if s1 == 'Internal 100MHz': 24 | return 'INT:100MHz' 25 | elif s1 == 'External 10MHz': 26 | return 'EXT:10MHz' 27 | else: 28 | return 'EXT:100MHz' 29 | elif quant.name in [('Ch%d - Frequency' % (n+1)) for n in range(8)]: 30 | sCh = quant.name[2] 31 | s1 = self.askAndLog(':CH%s:FREQ?' % sCh) 32 | s2 = s1.split('Hz')[0] 33 | return SR_String.getValueFromSIString(s2) 34 | else: 35 | # run the generic visa driver case 36 | return VISA_Driver.performGetValue(self, quant, options=options) 37 | 38 | if __name__ == '__main__': 39 | pass -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[co] 4 | 5 | # C extensions 6 | 7 | # Distribution / packaging 8 | .Python 9 | env/ 10 | build/ 11 | develop-eggs/ 12 | dist/ 13 | downloads/ 14 | eggs/ 15 | .eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # PyInstaller 26 | # Usually these files are written by a python script from a template 27 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 28 | *.manifest 29 | *.spec 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .coverage.* 40 | .cache 41 | nosetests.xml 42 | coverage.xml 43 | *,cover 44 | 45 | # Translations 46 | *.mo 47 | *.pot 48 | 49 | # Django stuff: 50 | *.log 51 | 52 | # Sphinx documentation 53 | */docs/_build/ 54 | */docs/_stubs/ 55 | 56 | # PyBuilder 57 | target/ 58 | 59 | AlazarTech_Digitizer/atsapi/__init__.py 60 | 61 | AlazarTech_Digitizer/atsapi/atsapi.py 62 | 63 | AlazarTech_Digitizer/atsapi/ATSApi32.dll 64 | 65 | Signadyne_Digitizer/SD_DLL_009600.dll 66 | 67 | Signadyne_Digitizer/signadyne.py 68 | 69 | Signadyne_AWG/signadyne.py 70 | 71 | Keysight_PXI_AWG/signadyne.py 72 | 73 | Keysight_PXI_Digitizer/signadyne.py 74 | 75 | # OS generated files # 76 | ###################### 77 | .DS_Store 78 | .DS_Store? 79 | ._* 80 | .Spotlight-V100 81 | .Trashes 82 | ehthumbs.db 83 | Thumbs.db 84 | *.bak 85 | Zurich_Instruments_HDAWG/zhinst/ 86 | -------------------------------------------------------------------------------- /Stanford_SRS86x/SRS_SR86x.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | class Driver(VISA_Driver): 6 | """ The SRS 86x driver re-implements the VISA driver with extra options""" 7 | 8 | def performGetValue(self, quant, options={}): 9 | """Perform the Get Value instrument operation""" 10 | # perform special getValue for reading complex value 11 | name = str(quant.name) 12 | if name == 'Value': 13 | # get complex value in one instrument reading 14 | sCmd = 'SNAP? 0,1' 15 | sAns = self.askAndLog(sCmd).strip() 16 | lData = sAns.split(',') 17 | 18 | #Sometimes, we receive the value twice 19 | #(0.12e-3,4.56e-70.12e-3,4.56e-7 instead of 0.12e-3,4.56e-7) 20 | #This is a simple fix: 21 | if len(lData) > 2: 22 | lData = sAns[:int(len(sAns)/2)].split(',') 23 | #Also, sometimes we receive an additional "-" at the end of a value 24 | #(0.12e-3,4.56e-7- instead of 0.12e-3,4.56e-7) 25 | #Hence, another simple fix: 26 | if lData[1][-1] == "-": 27 | lData[1] = ldata[1][:-1] 28 | 29 | # return complex values 30 | return complex(float(lData[0].strip()), float(lData[1].strip())) 31 | else: 32 | # run the generic visa driver case 33 | return VISA_Driver.performGetValue(self, quant, options=options) 34 | 35 | 36 | if __name__ == '__main__': 37 | pass 38 | -------------------------------------------------------------------------------- /Keysight_PXI_LO/Keysight_PXI_LO.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | 6 | class Driver(VISA_Driver): 7 | """ This class implements the Keysight PXI LO""" 8 | 9 | 10 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 11 | """Perform the Set Value instrument operation. This function should 12 | return the actual value set by the instrument""" 13 | # start with setting local quant value 14 | # proceed depending on command 15 | if quant.name == 'Clock source': 16 | # for clock source, first read current value 17 | old_clock = self.askAndLog(':CLK:SOUR?') 18 | # get command string for new value, check if they match 19 | new_clock = quant.getCmdStringFromValue(value) 20 | if old_clock != new_clock: 21 | # clock has changed, update 22 | self.writeAndLog(':CLK:SOUR %s' % new_clock) 23 | # if internal, make sure clock frequency is 19.2 GHz 24 | if new_clock == 'CLKIN': 25 | self.writeAndLog(':CLK:FREQ 19.2E9') 26 | # after clock change, we need to calibrate the system clock 27 | self.writeAndLog(':CAL:SCLK') 28 | 29 | else: 30 | # for all other cases, call VISA driver 31 | value = VISA_Driver.performSetValue(self, quant, value, sweepRate, 32 | options=options) 33 | return value 34 | 35 | 36 | 37 | if __name__ == '__main__': 38 | pass 39 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/backends.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | 3 | __SEABREEZE_BACKEND = 'cseabreeze' 4 | 5 | def use(backend): 6 | if not backend in ['cseabreeze', 'pyseabreeze']: 7 | raise Exception('Choose backend from "cseabreeze", "pyseabreeze"') 8 | else: 9 | global __SEABREEZE_BACKEND 10 | __SEABREEZE_BACKEND = backend 11 | 12 | def get_backend(): 13 | global __SEABREEZE_BACKEND 14 | if __SEABREEZE_BACKEND == 'cseabreeze': 15 | b = _use_cseabreeze() 16 | if b: return b 17 | warnings.warn("Falling back to 'pyseabreeze'.") 18 | b = _use_pyseabreeze() 19 | if b: return b 20 | if __SEABREEZE_BACKEND == 'pyseabreeze': 21 | b = _use_pyseabreeze() 22 | if b: return b 23 | warnings.warn("Falling back to 'cseabreeze'.") 24 | b = _use_cseabreeze() 25 | if b: return b 26 | raise ImportError('Could not import any backends. Wanted "%s"' % __SEABREEZE_BACKEND) 27 | 28 | def _use_cseabreeze(): 29 | try: 30 | import seabreeze.cseabreeze as sbb 31 | except ImportError as err: 32 | warnings.warn("Can't load seabreeze c library wrapper, because:\n'%s'\n" % err.message ) 33 | return None 34 | else: 35 | sbb.initialize() 36 | return sbb 37 | 38 | def _use_pyseabreeze(): 39 | try: 40 | import seabreeze.pyseabreeze as sbb 41 | except ImportError as err: 42 | warnings.warn("Can't load pyusb wrapper, because:\n'%s'\n" % err.message ) 43 | return None 44 | else: 45 | sbb.initialize() 46 | return sbb 47 | 48 | 49 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/callback_Task.py: -------------------------------------------------------------------------------- 1 | from PyDAQmx import * 2 | from PyDAQmx.DAQmxCallBack import * 3 | from numpy import zeros 4 | 5 | """This example is a PyDAQmx version of the ContAcq_IntClk.c example 6 | It illustrates the use of callback functions 7 | 8 | This example demonstrates how to acquire a continuous amount of 9 | data using the DAQ device's internal clock. It incrementally stores the data 10 | in a Python list. 11 | 12 | This example is also an example of the object oriented uses of PyDAQmx 13 | """ 14 | 15 | class CallbackTask(Task): 16 | def __init__(self): 17 | Task.__init__(self) 18 | self.data = zeros(1000) 19 | self.a = [] 20 | self.CreateAIVoltageChan("Dev1/ai0","",DAQmx_Val_RSE,-10.0,10.0,DAQmx_Val_Volts,None) 21 | self.CfgSampClkTiming("",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000) 22 | self.AutoRegisterEveryNSamplesEvent(DAQmx_Val_Acquired_Into_Buffer,1000,0) 23 | self.AutoRegisterDoneEvent(0) 24 | def EveryNCallback(self): 25 | read = int32() 26 | self.ReadAnalogF64(1000,10.0,DAQmx_Val_GroupByScanNumber,self.data,1000,byref(read),None) 27 | self.a.extend(self.data.tolist()) 28 | print(self.data[0]) 29 | return 0 # The function should return an integer 30 | def DoneCallback(self, status): 31 | print("Status",status.value) 32 | return 0 # The function should return an integer 33 | 34 | 35 | task=CallbackTask() 36 | task.StartTask() 37 | 38 | input('Acquiring samples continuously. Press Enter to interrupt\n') 39 | 40 | task.StopTask() 41 | task.ClearTask() 42 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/callback_Task.py: -------------------------------------------------------------------------------- 1 | from PyDAQmx import * 2 | from PyDAQmx.DAQmxCallBack import * 3 | from numpy import zeros 4 | 5 | """This example is a PyDAQmx version of the ContAcq_IntClk.c example 6 | It illustrates the use of callback functions 7 | 8 | This example demonstrates how to acquire a continuous amount of 9 | data using the DAQ device's internal clock. It incrementally stores the data 10 | in a Python list. 11 | 12 | This example is also an example of the object oriented uses of PyDAQmx 13 | """ 14 | 15 | class CallbackTask(Task): 16 | def __init__(self): 17 | Task.__init__(self) 18 | self.data = zeros(1000) 19 | self.a = [] 20 | self.CreateAIVoltageChan("Dev1/ai0","",DAQmx_Val_RSE,-10.0,10.0,DAQmx_Val_Volts,None) 21 | self.CfgSampClkTiming("",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000) 22 | self.AutoRegisterEveryNSamplesEvent(DAQmx_Val_Acquired_Into_Buffer,1000,0) 23 | self.AutoRegisterDoneEvent(0) 24 | def EveryNCallback(self): 25 | read = int32() 26 | self.ReadAnalogF64(1000,10.0,DAQmx_Val_GroupByScanNumber,self.data,1000,byref(read),None) 27 | self.a.extend(self.data.tolist()) 28 | print(self.data[0]) 29 | return 0 # The function should return an integer 30 | def DoneCallback(self, status): 31 | print("Status",status.value) 32 | return 0 # The function should return an integer 33 | 34 | 35 | task=CallbackTask() 36 | task.StartTask() 37 | 38 | input('Acquiring samples continuously. Press Enter to interrupt\n') 39 | 40 | task.StopTask() 41 | task.ClearTask() 42 | -------------------------------------------------------------------------------- /MuSwitch/MuSwitch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | 6 | class Driver(VISA_Driver): 7 | """ The MuSwitch driver""" 8 | 9 | def performOpen(self, options={}): 10 | """Perform the operation of opening the instrument connection""" 11 | # start by calling the generic VISA open to make sure we have a connection 12 | VISA_Driver.performOpen(self, options=options) 13 | #Reads out the Arduino upon start 14 | reply = self.read() 15 | self.log('Response at startup: ' + reply) 16 | 17 | 18 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 19 | """Perform the Set Value instrument operation. This function should 20 | return the actual value set by the instrument""" 21 | if quant.name in ('A1', 'A2', 'A3', 'A4', 'A5', 'A6', 22 | 'B1', 'B2', 'B3', 'B4', 'B5', 'B6'): 23 | sSet = 's' if value else 'r' 24 | sBank = quant.name[0].lower() 25 | sChannel = quant.name[1] 26 | dPulse = self.getValue('Pulse Length %s' % quant.name[0])*1E3 27 | sCmd = '%s%s%s,%d' % (sSet, sBank, sChannel, dPulse) 28 | self.writeAndLog(sCmd) 29 | reply = self.read() 30 | self.log('Response: ' + reply) 31 | return value 32 | else: 33 | # for all other quantities, call the generic VISA driver 34 | return VISA_Driver.performSetValue(self, quant, value, sweepRate, 35 | options=options) 36 | 37 | 38 | if __name__ == '__main__': 39 | pass 40 | -------------------------------------------------------------------------------- /Lakeshore 475/Lakeshore 475.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | import visa 6 | from InstrumentConfig import InstrumentQuantity 7 | 8 | __version__ = "0.0.1" 9 | 10 | class Error(Exception): 11 | pass 12 | 13 | class Driver(VISA_Driver): 14 | """ This class implements the Lakeshore 475 driver""" 15 | 16 | def performOpen(self, options={}): 17 | """Perform the operation of opening the instrument connection""" 18 | VISA_Driver.performOpen(self, options=options) 19 | 20 | 21 | def performGetValue(self, quant, options={}): 22 | """Perform the Get Value instrument operation""" 23 | value = VISA_Driver.performGetValue(self, quant, options) 24 | return value 25 | 26 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 27 | """Perform the set value operation""" 28 | # check type of quantity 29 | if quant.name[:7] in ('B-Field'): 30 | #We do not want the driver to return before the field has reched its target 31 | #within the precision selected by the user 32 | precision = self.instrCfg.getQuantity('StopThreshold').getValue() 33 | self.writeAndLog(quant.set_cmd.replace('<*>', str(value))) 34 | diff = abs(float(self.askAndLog("RDGFIELD?")) - value) 35 | while diff > precision: 36 | self.wait(0.1) 37 | diff = abs(float(self.askAndLog("RDGFIELD?")) - value) 38 | value = float(self.askAndLog("RDGFIELD?")) 39 | return value 40 | 41 | if __name__ == '__main__': 42 | pass 43 | -------------------------------------------------------------------------------- /MuSwitchEX/MuSwitchEX.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | 6 | class Driver(VISA_Driver): 7 | """ The MuSwitch driver""" 8 | 9 | def performOpen(self, options={}): 10 | """Perform the operation of opening the instrument connection""" 11 | # start by calling the generic VISA open to make sure we have a connection 12 | VISA_Driver.performOpen(self, options=options) 13 | #Reads out the Arduino upon start 14 | reply = self.read() 15 | self.log('Response at startup: ' + reply) 16 | 17 | 18 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 19 | """Perform the Set Value instrument operation. This function should 20 | return the actual value set by the instrument""" 21 | if quant.name in ('A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'a1', 22 | 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'b1'): 23 | sSet = 's' if value else 'r' 24 | sBank = quant.name[0] 25 | sChannel = quant.name[1] 26 | dPulse = self.getValue('Pulse Length %s' % quant.name[0])*1E3 27 | sCmd = '%s%s%s,%d' % (sSet, sBank, sChannel, dPulse) 28 | self.writeAndLog(sCmd) 29 | reply = self.read() 30 | self.log('Response: ' + reply) 31 | return value 32 | else: 33 | # for all other quantities, call the generic VISA driver 34 | return VISA_Driver.performSetValue(self, quant, value, sweepRate, 35 | options=options) 36 | 37 | 38 | if __name__ == '__main__': 39 | pass 40 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/ContinuousPulseTrainGeneration.py: -------------------------------------------------------------------------------- 1 | # coding= latin-1 2 | 3 | from PyDAQmx.DAQmxFunctions import * 4 | from PyDAQmx.DAQmxConstants import * 5 | 6 | class ContinuousPulseTrainGeneration(): 7 | """ Class to create a continuous pulse train on a counter 8 | 9 | Usage: pulse = ContinuousTrainGeneration(period [s], 10 | duty_cycle (default = 0.5), counter (default = "dev1/ctr0"), 11 | reset = True/False) 12 | pulse.start() 13 | pulse.stop() 14 | pulse.clear() 15 | """ 16 | def __init__(self, period=1., duty_cycle=0.5, counter="Dev1/ctr0", reset=False): 17 | if reset: 18 | DAQmxResetDevice(counter.split('/')[0]) 19 | taskHandle = TaskHandle(0) 20 | DAQmxCreateTask("",byref(taskHandle)) 21 | DAQmxCreateCOPulseChanFreq(taskHandle,counter,"",DAQmx_Val_Hz,DAQmx_Val_Low, 22 | 0.0,1/float(period),duty_cycle) 23 | DAQmxCfgImplicitTiming(taskHandle,DAQmx_Val_ContSamps,1000) 24 | self.taskHandle = taskHandle 25 | def start(self): 26 | DAQmxStartTask(self.taskHandle) 27 | def stop(self): 28 | DAQmxStopTask(self.taskHandle) 29 | def clear(self): 30 | DAQmxClearTask(self.taskHandle) 31 | 32 | 33 | if __name__=="__main__": 34 | pulse_gene1 = ContinuousPulseTrainGeneration(1.,0.5, "dev1/ctr0", reset=True) 35 | pulse_gene1.start() 36 | a = input("Generating pulse train. Press Enter to interrupt\n") 37 | pulse_gene1.stop() 38 | pulse_gene1.clear() 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/ContinuousPulseTrainGeneration.py: -------------------------------------------------------------------------------- 1 | # coding= latin-1 2 | 3 | from PyDAQmx.DAQmxFunctions import * 4 | from PyDAQmx.DAQmxConstants import * 5 | 6 | class ContinuousPulseTrainGeneration(): 7 | """ Class to create a continuous pulse train on a counter 8 | 9 | Usage: pulse = ContinuousTrainGeneration(period [s], 10 | duty_cycle (default = 0.5), counter (default = "dev1/ctr0"), 11 | reset = True/False) 12 | pulse.start() 13 | pulse.stop() 14 | pulse.clear() 15 | """ 16 | def __init__(self, period=1., duty_cycle=0.5, counter="Dev1/ctr0", reset=False): 17 | if reset: 18 | DAQmxResetDevice(counter.split('/')[0]) 19 | taskHandle = TaskHandle(0) 20 | DAQmxCreateTask("",byref(taskHandle)) 21 | DAQmxCreateCOPulseChanFreq(taskHandle,counter,"",DAQmx_Val_Hz,DAQmx_Val_Low, 22 | 0.0,1/float(period),duty_cycle) 23 | DAQmxCfgImplicitTiming(taskHandle,DAQmx_Val_ContSamps,1000) 24 | self.taskHandle = taskHandle 25 | def start(self): 26 | DAQmxStartTask(self.taskHandle) 27 | def stop(self): 28 | DAQmxStopTask(self.taskHandle) 29 | def clear(self): 30 | DAQmxClearTask(self.taskHandle) 31 | 32 | 33 | if __name__=="__main__": 34 | pulse_gene1 = ContinuousPulseTrainGeneration(1.,0.5, "dev1/ctr0", reset=True) 35 | pulse_gene1.start() 36 | a = input("Generating pulse train. Press Enter to interrupt\n") 37 | pulse_gene1.stop() 38 | pulse_gene1.clear() 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /MultiQubit_PulseGenerator/MultiQubit_PulseGenerator-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.1': 10 | # convert version 1.1 -> 1.2 11 | # changes: 12 | # number of qubits naming conventions, "One" -> "1", "Two" -> "2", etc 13 | version = '1.2' 14 | 15 | translate = { 16 | 'One': '1', 17 | 'Two': '2', 18 | 'Three': '3', 19 | 'Four': '4', 20 | 'Five': '5', 21 | 'Six': '6', 22 | 'Seven': '7', 23 | 'Eight': '8', 24 | 'Nine': '9' 25 | } 26 | 27 | # dict with items to update, with default values 28 | update = { 29 | 'Number of qubits': '2', 30 | 'Qubit for tomography': '1', 31 | 'Qubit 1 # tomography': '1', 32 | 'Qubit 2 # tomography': '2', 33 | 'CT-matrix element #1': 'None', 34 | 'CT-matrix element #2': 'None', 35 | 'CT-matrix element #3': 'None', 36 | 'CT-matrix element #4': 'None', 37 | 'CT-matrix element #5': 'None', 38 | } 39 | 40 | # update items 41 | for key, def_value in update.items(): 42 | if key in dValue: 43 | dValue[key] = translate.get(dValue[key], def_value) 44 | 45 | # return new version and data 46 | return (version, dValue, dOption, dQuantReplace) 47 | -------------------------------------------------------------------------------- /LeidenPressure/LeidenPressure.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from BaseDriver import LabberDriver 4 | 5 | dIndx = {'P4': 0, 6 | 'P5': 1, 7 | 'Dump, 3He': 2, 8 | 'Dump, 4He': 3, 9 | 'Flow': 4, 10 | 'Still pressure': 5, 11 | 'OVC pressure': 6, 12 | 'IVC pressure': 7} 13 | 14 | class Driver(LabberDriver): 15 | 16 | def performOpen(self, options={}): 17 | self.lValues = [0.0] * len(dIndx) 18 | self.lUpdated = [False] * len(dIndx) 19 | 20 | 21 | def performGetValue(self, quant, options={}): 22 | """Perform the Get Value instrument operation""" 23 | if quant.name in dIndx: 24 | # check if value already measured 25 | indx = dIndx[quant.name] 26 | if not self.lUpdated[indx]: 27 | try: 28 | # read all values from text file 29 | sFile = self.getValue('Data file') 30 | with open(sFile, 'rb') as f: 31 | data = f.read() 32 | self.log(str(data)) 33 | for n, val in enumerate(data.split(b',')): 34 | self.lValues[n] = float(val.strip()) 35 | self.lUpdated[n] = True 36 | except Exception as e: 37 | # ignore all errors 38 | self.log(str(e)) 39 | pass 40 | value = self.lValues[indx] 41 | # set value to None, to mark as used 42 | self.lUpdated[indx] = False 43 | else: 44 | value = LabberDriver.performGetValue(self, quant, options) 45 | return value 46 | 47 | 48 | 49 | if __name__ == '__main__': 50 | pass 51 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/DAQmxCallBack.py: -------------------------------------------------------------------------------- 1 | import weakref 2 | from . import DAQmxConfig 3 | 4 | """ This package import helper functions to pass data to call back functions 5 | 6 | See examples 7 | """ 8 | 9 | #if DAQmxConfig.NIDAQmxBase: 10 | # raise NotImplementedError, 'Call back function are not available with the NIDAQmxBase driver' 11 | 12 | # NIDAQmx allow to pass a pointer to a data structure in callbask function 13 | # If this function is implemented in Python, we would like this data to be a Python object. 14 | # This object will not (and will not) be used in C but we want to pass a reference to it. 15 | # A workaround is to use the weakref module 16 | # 17 | # Define a weakref dictionnary to be able to remember objects and retrieve them by ID 18 | _id2obj_dict = weakref.WeakValueDictionary() 19 | 20 | def create_callbackdata_id(obj): 21 | """ 22 | Uses the weakref module to create and store a reference to obj 23 | 24 | output value: reference to the object 25 | 26 | It is not possible to directly uses python object through a Callback function because 27 | with ctypes there is no pointer to python object. 28 | This function store in a dictionary a reference to an object 29 | This object can be retrieved using the get_callbackdata_from_id function 30 | 31 | For python object that cannot be weakreferenced, one can creat a dummy class to wrap 32 | the python object : 33 | def MyList(list) 34 | pass 35 | 36 | data = MyList() 37 | id = create_callbackdata_id(data) 38 | 39 | """ 40 | oid = id(obj) 41 | _id2obj_dict[oid] = obj 42 | return oid 43 | 44 | def get_callbackdata_from_id(oid): 45 | """Retrieve an object stored using create_callbackdata_id 46 | """ 47 | return _id2obj_dict[oid] 48 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/DAQmxCallBack.py: -------------------------------------------------------------------------------- 1 | import weakref 2 | from . import DAQmxConfig 3 | 4 | """ This package import helper functions to pass data to call back functions 5 | 6 | See examples 7 | """ 8 | 9 | #if DAQmxConfig.NIDAQmxBase: 10 | # raise NotImplementedError, 'Call back function are not available with the NIDAQmxBase driver' 11 | 12 | # NIDAQmx allow to pass a pointer to a data structure in callbask function 13 | # If this function is implemented in Python, we would like this data to be a Python object. 14 | # This object will not (and will not) be used in C but we want to pass a reference to it. 15 | # A workaround is to use the weakref module 16 | # 17 | # Define a weakref dictionnary to be able to remember objects and retrieve them by ID 18 | _id2obj_dict = weakref.WeakValueDictionary() 19 | 20 | def create_callbackdata_id(obj): 21 | """ 22 | Uses the weakref module to create and store a reference to obj 23 | 24 | output value: reference to the object 25 | 26 | It is not possible to directly uses python object through a Callback function because 27 | with ctypes there is no pointer to python object. 28 | This function store in a dictionary a reference to an object 29 | This object can be retrieved using the get_callbackdata_from_id function 30 | 31 | For python object that cannot be weakreferenced, one can creat a dummy class to wrap 32 | the python object : 33 | def MyList(list) 34 | pass 35 | 36 | data = MyList() 37 | id = create_callbackdata_id(data) 38 | 39 | """ 40 | oid = id(obj) 41 | _id2obj_dict[oid] = obj 42 | return oid 43 | 44 | def get_callbackdata_from_id(oid): 45 | """Retrieve an object stored using create_callbackdata_id 46 | """ 47 | return _id2obj_dict[oid] 48 | -------------------------------------------------------------------------------- /Cryomagnetics LM510/Cryomagnetics LM510.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | import visa 6 | from InstrumentConfig import InstrumentQuantity 7 | 8 | __version__ = "0.0.1" 9 | 10 | class Error(Exception): 11 | pass 12 | 13 | class Driver(VISA_Driver): 14 | """ This class implements the Lakeshore 475 driver""" 15 | 16 | def performOpen(self, options={}): 17 | """Perform the operation of opening the instrument connection""" 18 | # calling the generic VISA open to make sure we have a connection 19 | VISA_Driver.performOpen(self, options=options) 20 | 21 | 22 | def performGetValue(self, quant, options={}): 23 | """Perform the Get Value instrument operation""" 24 | # check type of quantity 25 | self.write(quant.get_cmd, bCheckError=True) 26 | self.read(None, ignore_termination=False) 27 | value = self.read(None, ignore_termination=False) 28 | if quant.name in ('LHe Level'): 29 | value = value[:-3] 30 | if quant.name in ('Interval'): 31 | hms = value.split(":") 32 | value = int(hms[0]) * 3600 + int(hms[1])*60 + int(hms[2]) 33 | return value 34 | 35 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 36 | """Perform the set value operation""" 37 | self.write("REMOTE") 38 | self.read(None, ignore_termination=False) 39 | if quant.name in ('Interval'): 40 | m, s = divmod(value, 60) 41 | h, m = divmod(m, 60) 42 | cmd = quant.set_cmd + " " + ("%02d:%02d:%02d" % (h, m, s)) 43 | self.writeAndLog(cmd, bCheckError=True) 44 | self.read(None, ignore_termination=False) 45 | self.write("LOCAL") 46 | self.read(None, ignore_termination=False) 47 | return value 48 | 49 | if __name__ == '__main__': 50 | pass 51 | -------------------------------------------------------------------------------- /Examples/SimpleSignalGenerator/SimpleSignalGenerator.py: -------------------------------------------------------------------------------- 1 | import InstrumentDriver 2 | import numpy as np 3 | 4 | class Driver(InstrumentDriver.InstrumentWorker): 5 | """ This class implements a simple signal generator driver""" 6 | 7 | 8 | def performOpen(self, options={}): 9 | """Perform the operation of opening the instrument connection""" 10 | pass 11 | 12 | 13 | def performClose(self, bError=False, options={}): 14 | """Perform the close instrument connection operation""" 15 | pass 16 | 17 | 18 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 19 | """Perform the Set Value instrument operation. This function should 20 | return the actual value set by the instrument""" 21 | # just return the value 22 | return value 23 | 24 | 25 | def performGetValue(self, quant, options={}): 26 | """Perform the Get Value instrument operation""" 27 | # proceed depending on quantity 28 | if quant.name == 'Signal': 29 | # if asking for signal, start with getting values of other controls 30 | amp = self.getValue('Amplitude') 31 | freq = self.getValue('Frequency') 32 | phase = self.getValue('Phase') 33 | add_noise = self.getValue('Add noise') 34 | # calculate time vector from 0 to 1 with 1000 elements 35 | time = np.linspace(0,1,1000) 36 | signal = amp * np.sin(freq*time*2*np.pi + phase*np.pi/180.0) 37 | # add noise 38 | if add_noise: 39 | noise_amp = self.getValue('Noise amplitude') 40 | signal += noise_amp * np.random.randn(len(signal)) 41 | # create trace object that contains timing info 42 | trace = quant.getTraceDict(signal, t0=0.0, dt=time[1]-time[0]) 43 | # finally, return the trace object 44 | return trace 45 | else: 46 | # for other quantities, just return current value of control 47 | return quant.getValue() 48 | 49 | 50 | -------------------------------------------------------------------------------- /PID_Controller/PID_Controller.py: -------------------------------------------------------------------------------- 1 | from BaseDriver import LabberDriver 2 | import numpy as np 3 | import simple_pid 4 | 5 | 6 | 7 | class Driver(LabberDriver): 8 | 9 | def performOpen(self, options={}): 10 | """Creat the PID controller""" 11 | self.pid = simple_pid.PID(sample_time=None) 12 | 13 | 14 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 15 | """Perform the Set Value instrument operation. This function should 16 | return the actual value set by the instrument""" 17 | # just return the value 18 | return value 19 | 20 | 21 | def performGetValue(self, quant, options={}): 22 | """Perform the Get Value instrument operation""" 23 | # proceed depending on quantity 24 | if quant.name == 'Output value': 25 | # start with updating parameters 26 | self.update_pid_parameters() 27 | # get input value 28 | input_value = self.getValue('Input value') 29 | # run controller and return new output value 30 | output_value = self.pid(input_value) 31 | return output_value 32 | 33 | else: 34 | # for other quantities, just return current value of control 35 | return quant.getValue() 36 | 37 | 38 | def update_pid_parameters(self): 39 | """Update PID parameters from Labber dialog""" 40 | # get parameters 41 | setpoint = self.getValue('Setpoint') 42 | kp = self.getValue('P') 43 | ki = self.getValue('I') 44 | kd = self.getValue('D') 45 | p_on_input = self.getValue('Proportional on input') 46 | output_low = self.getValue('Output limit - low') 47 | output_high = self.getValue('Output limit - high') 48 | # set to PID object 49 | self.pid.setpoint = setpoint 50 | self.pid.tunings = (kp, ki, kd) 51 | self.pid.proportional_on_measurement = p_on_input 52 | # output limits 53 | if np.isinf(output_low): 54 | output_low = None 55 | if np.isinf(output_high): 56 | output_high = None 57 | self.pid.output_limits = (output_low, output_high) 58 | -------------------------------------------------------------------------------- /Rigol DSG3000/Rigol DSG3000.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | import visa 6 | from InstrumentConfig import InstrumentQuantity 7 | 8 | __version__ = "0.0.1" 9 | 10 | class Error(Exception): 11 | pass 12 | 13 | class Driver(VISA_Driver): 14 | """ This class implements the Rigol DSG3000 driver""" 15 | 16 | def performOpen(self, options={}): 17 | """Perform the operation of opening the instrument connection""" 18 | # calling the generic VISA open to make sure we have a connection 19 | VISA_Driver.performOpen(self, options=options) 20 | 21 | 22 | def performGetValue(self, quant, options={}): 23 | """Perform the Get Value instrument operation""" 24 | if (quant.datatype == quant.DOUBLE): 25 | value = self.askAndLog(quant.set_cmd+"?") 26 | value = value.replace(" ", "") 27 | for i,c in enumerate(value): 28 | if not c in "0123456789.-eE": 29 | break 30 | number=float(value[:i]) 31 | unit=value[i:] 32 | 33 | factor = 1 34 | cfactor = unit[:1] 35 | if (cfactor == "G"): 36 | factor = 1e9 37 | elif (cfactor == "M"): 38 | factor = 1e6 39 | elif (cfactor == "k"): 40 | factor = 1e3 41 | elif (cfactor == "m"): 42 | factor = 1e-3 43 | elif (cfactor == "u"): 44 | factor = 1e-6 45 | elif (cfactor == "n"): 46 | factor = 1e-9 47 | elif (cfactor == "p"): 48 | factor = 1e-12 49 | v = float(number)*factor 50 | return v 51 | else: 52 | value = VISA_Driver.performGetValue(self, quant, options) 53 | return value 54 | 55 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 56 | """Perform the set value operation""" 57 | # check type of quantity 58 | value = VISA_Driver.performSetValue(self, quant, value, sweepRate, options) 59 | return value 60 | 61 | if __name__ == '__main__': 62 | pass 63 | -------------------------------------------------------------------------------- /Oxford_Mercury_IPS/Oxford_Mercury_IPS.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | 5 | 6 | class Driver(VISA_Driver): 7 | """ This class implements the Oxford Mercury IPS driver""" 8 | 9 | 10 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 11 | """Perform the Set Value instrument operation. This function should 12 | return the actual value set by the instrument""" 13 | # check quantity 14 | if quant.name == 'Magnetic Field': 15 | if sweepRate != 0: 16 | # sweep rate should be in T/min 17 | self.writeAndLog('$T'+ str(sweepRate*60.0)) 18 | self.writeAndLog('$J'+ str(value)) 19 | self.writeAndLog('$A1') 20 | else: 21 | # run standard VISA case 22 | value = VISA_Driver.performSetValue(self, quant, value, sweepRate, options) 23 | return value 24 | 25 | 26 | def performGetValue(self, quant, options={}): 27 | """Perform the Get Value instrument operation""" 28 | # check type of quantity 29 | # check quantity 30 | if quant.name == 'Magnetic Field': 31 | reply = self.askAndLog('R7') 32 | # strip first character 33 | value = float(reply[1:]) 34 | else: 35 | # for all other cases, call VISA driver 36 | value = VISA_Driver.performGetValue(self, quant, options) 37 | return value 38 | 39 | def checkIfSweeping(self, quant, options={}): 40 | target = self.askAndLog('R8') 41 | self.wait(0.1) 42 | # strip first character 43 | target = float(target[1:]) 44 | currentValue = Driver.performGetValue(self,quant,options) 45 | if abs(target-currentValue) < float(quant.sweep_res): 46 | status = self.askAndLog('X') 47 | # check that power supply is in hold mode 48 | if float(status[4])==0: 49 | return(False) 50 | self.wait(0.1) 51 | return(True) 52 | 53 | def performStopSweep(self, quant, options={}): 54 | self.writeAndLog('$A0') 55 | 56 | if __name__ == '__main__': 57 | pass 58 | -------------------------------------------------------------------------------- /Oxford IPS120/Oxford IPS120.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | import visa 6 | from InstrumentConfig import InstrumentQuantity 7 | import numpy as np 8 | import string 9 | 10 | __version__ = "0.0.1" 11 | 12 | class Error(Exception): 13 | pass 14 | 15 | class Driver(VISA_Driver): 16 | """ This class implements the Triton 200 driver""" 17 | 18 | def performOpen(self, options={}): 19 | """Perform the operation of opening the instrument connection""" 20 | # calling the generic VISA open to make sure we have a connection 21 | VISA_Driver.performOpen(self, options=options) 22 | # Check if there really is an IPS120 at the other end of the wire 23 | if not "IPS120" in self.askAndLog("V"): 24 | raise InstrumentDriver.CommunicationError("Could not get an identification as IPS120.") 25 | self.writeAndLog("Q4") 26 | 27 | def performGetValue(self, quant, options={}): 28 | """Perform the Get Value instrument operation""" 29 | if quant.name in ('B', 'SweepRate'): 30 | value = float(self.askAndLog(quant.get_cmd).strip()[1:]) 31 | return value 32 | else: 33 | return quant.getValue() 34 | 35 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 36 | """Perform the set value operation""" 37 | if quant.name in ('B', 'SweepRate'): 38 | self.askAndLog("C3") 39 | if quant.name in ('B'): 40 | self.askAndLog(quant.set_cmd.replace('<*>', "{:.5f}".format(value))) 41 | self.askAndLog("A1") 42 | self.waitForTarget(value) 43 | elif quant.name in ('SweepRate'): 44 | self.askAndLog(quant.set_cmd.replace('<*>', "{:.4f}".format(value))) 45 | self.askAndLog("C2") 46 | return value 47 | 48 | def waitForTarget(self, target): 49 | current = float(self.askAndLog('R7').strip()[1:]) 50 | precision = self.getValue("Precision") 51 | while abs(target-current) > precision and not self.isStopped(): 52 | self.wait(0.1) 53 | current = float(self.askAndLog('R7').strip()[1:]) 54 | self.askAndLog('A0') 55 | 56 | -------------------------------------------------------------------------------- /Z-Crosstalk_Compensation/Z-Crosstalk_Compensation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | import numpy as np 5 | 6 | 7 | class Driver(InstrumentDriver.InstrumentWorker): 8 | """ This class implements Z-Crosstalk Compensation""" 9 | 10 | 11 | def performOpen(self, options={}): 12 | """Perform the operation of opening the instrument connection""" 13 | # init variables 14 | 15 | 16 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 17 | """Perform the Set Value instrument operation. This function should 18 | return the actual value set by the instrument""" 19 | # do nothing, just return value 20 | 21 | if (quant.name == 'Do Conversion'): 22 | self.doConversion() 23 | elif ('Flux Bias' in quant.name): 24 | self.doConversion() 25 | 26 | return value 27 | 28 | 29 | def performGetValue(self, quant, options={}): 30 | """Perform the Get Value instrument operation""" 31 | # check type of quantity 32 | if quant.isVector(): 33 | pass 34 | else: 35 | if 'Flux Bias' in quant.name: 36 | 37 | self.doConversion() 38 | # for all other cases, do nothing 39 | value = quant.getValue() 40 | return value 41 | 42 | def doConversion(self): 43 | n = int(self.getValue('Number of Z-Control Lines')) 44 | #self.log("Number of Z-Control Lines: %d "%(n)) 45 | 46 | M = np.zeros((n,n)) 47 | for i in range(n): 48 | for j in range(n): 49 | M[i,j] = self.getValue('M' + str(i+1) + str(j+1)) 50 | self.log("M: " +str(M)) 51 | 52 | M_inv = np.linalg.inv(M) 53 | 54 | self.log("M_inv: " +str(M_inv)) 55 | 56 | vecPhi = np.zeros((n)) 57 | for i in range(n): 58 | vecPhi[i] = self.getValue('Flux Bias ' + str(i+1)) 59 | 60 | vecV = np.matmul(M_inv, vecPhi) 61 | self.log("vec_V: " + str(vecV)) 62 | for i in range(n): 63 | self.setValue('Control Knob '+str(i+1), vecV[i]) 64 | 65 | for j in range(n): 66 | self.setValue('Minv'+str(i+1)+str(j+1), M_inv[i,j]) 67 | 68 | if __name__ == '__main__': 69 | pass 70 | -------------------------------------------------------------------------------- /SimpleSignalGenerator/SimpleSignalGenerator.py: -------------------------------------------------------------------------------- 1 | import InstrumentDriver 2 | import numpy as np 3 | 4 | class Driver(InstrumentDriver.InstrumentWorker): 5 | """ This class implements a simple signal generator driver""" 6 | 7 | 8 | def performOpen(self, options={}): 9 | """Perform the operation of opening the instrument connection""" 10 | pass 11 | 12 | 13 | def performClose(self, bError=False, options={}): 14 | """Perform the close instrument connection operation""" 15 | pass 16 | 17 | 18 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 19 | """Perform the Set Value instrument operation. This function should 20 | return the actual value set by the instrument""" 21 | # just return the value 22 | return value 23 | 24 | 25 | def performGetValue(self, quant, options={}): 26 | """Perform the Get Value instrument operation""" 27 | # proceed depending on quantity 28 | if quant.name == 'Signal': 29 | # if asking for signal, start with getting values of other controls 30 | amp = self.getValue('Amplitude') 31 | freq = self.getValue('Frequency') 32 | phase = self.getValue('Phase') 33 | add_noise = self.getValue('Add noise') 34 | duration = self.getValue('Duration') 35 | n_points = int(self.getValue('Number of points')) 36 | # calculate time vector from 0 to 1 with 1000 elements 37 | time = np.linspace(0.0,duration,n_points) 38 | signal = amp * np.sin(freq*time*2*np.pi + phase*np.pi/180.0) 39 | # add noise 40 | if add_noise: 41 | noise_amp = self.getValue('Noise amplitude') 42 | signal += noise_amp * np.random.randn(len(signal)) 43 | # create trace object that contains timing info 44 | try: 45 | trace = quant.getTraceDict(signal, t0=0.0, dt=time[1]-time[0]) 46 | except Exception: 47 | trace = quant.getTraceDict(signal, t0=0.0, dt=1.0) 48 | 49 | # finally, return the trace object 50 | return trace 51 | else: 52 | # for other quantities, just return current value of control 53 | return quant.getValue() 54 | 55 | 56 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/callback_oo.py: -------------------------------------------------------------------------------- 1 | from PyDAQmx import * 2 | from PyDAQmx.DAQmxCallBack import * 3 | from numpy import zeros 4 | 5 | """This example is a PyDAQmx version of the ContAcq_IntClk.c example 6 | It illustrates the use of callback functions 7 | 8 | This example demonstrates how to acquire a continuous amount of 9 | data using the DAQ device's internal clock. It incrementally store the data 10 | in a Python list. 11 | 12 | This example is also an example of the object oriented uses of PyDAQmx 13 | """ 14 | 15 | 16 | 17 | # one cannot create a weakref to a list directly 18 | # but the following works well 19 | class MyList(list): 20 | pass 21 | 22 | # list where the data are stored 23 | data = MyList() 24 | id_a = create_callbackdata_id(data) 25 | 26 | 27 | 28 | # Define two Call back functions 29 | def EveryNCallback_py(taskHandle, everyNsamplesEventType, nSamples, callbackData_ptr): 30 | callbackdata = get_callbackdata_from_id(callbackData_ptr) 31 | read = int32() 32 | data = zeros(1000) 33 | DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByScanNumber,data,1000,byref(read),None) 34 | callbackdata.extend(data.tolist()) 35 | print("Acquired total %d samples"%len(callbackdata)) 36 | return 0 # The function should return an integer 37 | 38 | # Convert the python function to a CFunction 39 | EveryNCallback = DAQmxEveryNSamplesEventCallbackPtr(EveryNCallback_py) 40 | 41 | def DoneCallback_py(taskHandle, status, callbackData): 42 | print("Status",status.value) 43 | return 0 # The function should return an integer 44 | 45 | # Convert the python function to a CFunction 46 | DoneCallback = DAQmxDoneEventCallbackPtr(DoneCallback_py) 47 | 48 | 49 | # Beginning of the script 50 | 51 | #DAQmxResetDevice('dev1') 52 | 53 | task=Task() 54 | task.CreateAIVoltageChan("Dev1/ai0","",DAQmx_Val_RSE,-10.0,10.0,DAQmx_Val_Volts,None) 55 | task.CfgSampClkTiming("",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000) 56 | 57 | task.RegisterEveryNSamplesEvent(DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,id_a) 58 | task.RegisterDoneEvent(0,DoneCallback,None) 59 | 60 | task.StartTask() 61 | 62 | input('Acquiring samples continuously. Press Enter to interrupt\n') 63 | 64 | task.StopTask() 65 | task.ClearTask() 66 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/callback_test_unregister.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import PyDAQmx as daqmx 3 | from PyDAQmx.DAQmxCallBack import * 4 | import numpy as np 5 | from ctypes import cast 6 | 7 | # Sample code to test changing the callback function for a daqmx acquisition 8 | # task. 9 | # 10 | # Author: Erik Matlin, 9/9/2014 11 | # Modified by Pierre Cladé 23/9/2014 12 | 13 | class CallbackWithUnregister(object): 14 | def __init__(self, device, nSamples=1000): 15 | self.task = daqmx.Task() 16 | self.task.EveryNCallback1 = self.EveryNCallback1 17 | self.task.EveryNCallback2 = self.EveryNCallback2 18 | 19 | self.task.CreateAIVoltageChan("/".join((device,'ai0')), "a", 20 | daqmx.DAQmx_Val_Cfg_Default, -10, 10, daqmx.DAQmx_Val_Volts, None) 21 | 22 | 23 | def start(self, nSamples, callbackname): 24 | # configure timing 25 | self.task.CfgSampClkTiming("", 10000, daqmx.DAQmx_Val_Rising, 26 | daqmx.DAQmx_Val_ContSamps, nSamples) 27 | self.nSamples = nSamples 28 | 29 | self.task.AutoRegisterEveryNSamplesEvent(daqmx.DAQmx_Val_Acquired_Into_Buffer, nSamples, 0, name=callbackname) 30 | self.task.StartTask() 31 | 32 | def stop(self): 33 | self.task.StopTask() 34 | 35 | def EveryNCallback1(self): 36 | read = daqmx.int32(0) 37 | data = np.zeros(self.nSamples) 38 | self.task.ReadAnalogF64(self.nSamples, 1.0, 39 | daqmx.DAQmx_Val_GroupByScanNumber, data, data.size, 40 | daqmx.byref(read), None) 41 | 42 | def EveryNCallback2(self): 43 | read = daqmx.int32(0) 44 | data = np.zeros(self.nSamples) 45 | self.task.ReadAnalogF64(self.nSamples, 1.0, 46 | daqmx.DAQmx_Val_GroupByScanNumber, data, data.size, 47 | daqmx.byref(read), None) 48 | 49 | 50 | if __name__ == '__main__': 51 | from time import sleep 52 | b = CallbackWithUnregister("TestDevice") 53 | for i,nSamples in enumerate([1000, 2000, 5000]): 54 | func_name = 'EveryNCallback{0}'.format([1,2][i%2]) 55 | b.start(nSamples, func_name) 56 | print("started!") 57 | sleep(.5) 58 | b.stop() 59 | print("stop") 60 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/callback_oo.py: -------------------------------------------------------------------------------- 1 | from PyDAQmx import * 2 | from PyDAQmx.DAQmxCallBack import * 3 | from numpy import zeros 4 | 5 | """This example is a PyDAQmx version of the ContAcq_IntClk.c example 6 | It illustrates the use of callback functions 7 | 8 | This example demonstrates how to acquire a continuous amount of 9 | data using the DAQ device's internal clock. It incrementally store the data 10 | in a Python list. 11 | 12 | This example is also an example of the object oriented uses of PyDAQmx 13 | """ 14 | 15 | 16 | 17 | # one cannot create a weakref to a list directly 18 | # but the following works well 19 | class MyList(list): 20 | pass 21 | 22 | # list where the data are stored 23 | data = MyList() 24 | id_a = create_callbackdata_id(data) 25 | 26 | 27 | 28 | # Define two Call back functions 29 | def EveryNCallback_py(taskHandle, everyNsamplesEventType, nSamples, callbackData_ptr): 30 | callbackdata = get_callbackdata_from_id(callbackData_ptr) 31 | read = int32() 32 | data = zeros(1000) 33 | DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByScanNumber,data,1000,byref(read),None) 34 | callbackdata.extend(data.tolist()) 35 | print("Acquired total %d samples"%len(callbackdata)) 36 | return 0 # The function should return an integer 37 | 38 | # Convert the python function to a CFunction 39 | EveryNCallback = DAQmxEveryNSamplesEventCallbackPtr(EveryNCallback_py) 40 | 41 | def DoneCallback_py(taskHandle, status, callbackData): 42 | print("Status",status.value) 43 | return 0 # The function should return an integer 44 | 45 | # Convert the python function to a CFunction 46 | DoneCallback = DAQmxDoneEventCallbackPtr(DoneCallback_py) 47 | 48 | 49 | # Beginning of the script 50 | 51 | #DAQmxResetDevice('dev1') 52 | 53 | task=Task() 54 | task.CreateAIVoltageChan("Dev1/ai0","",DAQmx_Val_RSE,-10.0,10.0,DAQmx_Val_Volts,None) 55 | task.CfgSampClkTiming("",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000) 56 | 57 | task.RegisterEveryNSamplesEvent(DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,id_a) 58 | task.RegisterDoneEvent(0,DoneCallback,None) 59 | 60 | task.StartTask() 61 | 62 | input('Acquiring samples continuously. Press Enter to interrupt\n') 63 | 64 | task.StopTask() 65 | task.ClearTask() 66 | -------------------------------------------------------------------------------- /NI_USB_6218/PyDAQmx/example/callback_test_unregister.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import PyDAQmx as daqmx 3 | from PyDAQmx.DAQmxCallBack import * 4 | import numpy as np 5 | from ctypes import cast 6 | 7 | # Sample code to test changing the callback function for a daqmx acquisition 8 | # task. 9 | # 10 | # Author: Erik Matlin, 9/9/2014 11 | # Modified by Pierre Cladé 23/9/2014 12 | 13 | class CallbackWithUnregister(object): 14 | def __init__(self, device, nSamples=1000): 15 | self.task = daqmx.Task() 16 | self.task.EveryNCallback1 = self.EveryNCallback1 17 | self.task.EveryNCallback2 = self.EveryNCallback2 18 | 19 | self.task.CreateAIVoltageChan("/".join((device,'ai0')), "a", 20 | daqmx.DAQmx_Val_Cfg_Default, -10, 10, daqmx.DAQmx_Val_Volts, None) 21 | 22 | 23 | def start(self, nSamples, callbackname): 24 | # configure timing 25 | self.task.CfgSampClkTiming("", 10000, daqmx.DAQmx_Val_Rising, 26 | daqmx.DAQmx_Val_ContSamps, nSamples) 27 | self.nSamples = nSamples 28 | 29 | self.task.AutoRegisterEveryNSamplesEvent(daqmx.DAQmx_Val_Acquired_Into_Buffer, nSamples, 0, name=callbackname) 30 | self.task.StartTask() 31 | 32 | def stop(self): 33 | self.task.StopTask() 34 | 35 | def EveryNCallback1(self): 36 | read = daqmx.int32(0) 37 | data = np.zeros(self.nSamples) 38 | self.task.ReadAnalogF64(self.nSamples, 1.0, 39 | daqmx.DAQmx_Val_GroupByScanNumber, data, data.size, 40 | daqmx.byref(read), None) 41 | 42 | def EveryNCallback2(self): 43 | read = daqmx.int32(0) 44 | data = np.zeros(self.nSamples) 45 | self.task.ReadAnalogF64(self.nSamples, 1.0, 46 | daqmx.DAQmx_Val_GroupByScanNumber, data, data.size, 47 | daqmx.byref(read), None) 48 | 49 | 50 | if __name__ == '__main__': 51 | from time import sleep 52 | b = CallbackWithUnregister("TestDevice") 53 | for i,nSamples in enumerate([1000, 2000, 5000]): 54 | func_name = 'EveryNCallback{0}'.format([1,2][i%2]) 55 | b.start(nSamples, func_name) 56 | print("started!") 57 | sleep(.5) 58 | b.stop() 59 | print("stop") 60 | -------------------------------------------------------------------------------- /NI_DAQ/PyDAQmx/example/callback.py: -------------------------------------------------------------------------------- 1 | from PyDAQmx import * 2 | from PyDAQmx.DAQmxCallBack import * 3 | from numpy import zeros 4 | 5 | """This example is a PyDAQmx version of the ContAcq_IntClk.c example 6 | It illustrates the use of callback functions 7 | 8 | This example demonstrates how to acquire a continuous amount of 9 | data using the DAQ device's internal clock. It incrementally stores the data 10 | in a Python list. 11 | """ 12 | 13 | 14 | 15 | # one cannot create a weakref to a list directly 16 | # but the following works well 17 | class MyList(list): 18 | pass 19 | 20 | # list where the data are stored 21 | data = MyList() 22 | id_a = create_callbackdata_id(data) 23 | 24 | 25 | 26 | # Define two Call back functions 27 | def EveryNCallback_py(taskHandle, everyNsamplesEventType, nSamples, callbackData_ptr): 28 | callbackdata = get_callbackdata_from_id(callbackData_ptr) 29 | read = int32() 30 | data = zeros(1000) 31 | DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByScanNumber,data,1000,byref(read),None) 32 | callbackdata.extend(data.tolist()) 33 | print("Acquired total %d samples"%len(data)) 34 | return 0 # The function should return an integer 35 | 36 | # Convert the python function to a CFunction 37 | EveryNCallback = DAQmxEveryNSamplesEventCallbackPtr(EveryNCallback_py) 38 | 39 | def DoneCallback_py(taskHandle, status, callbackData): 40 | print("Status",status.value) 41 | return 0 # The function should return an integer 42 | 43 | # Convert the python function to a CFunction 44 | DoneCallback = DAQmxDoneEventCallbackPtr(DoneCallback_py) 45 | 46 | 47 | # Beginning of the script 48 | 49 | DAQmxResetDevice('dev1') 50 | 51 | taskHandle=TaskHandle() 52 | DAQmxCreateTask("",byref(taskHandle)) 53 | DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0","",DAQmx_Val_RSE,-10.0,10.0,DAQmx_Val_Volts,None) 54 | DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000) 55 | 56 | DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,id_a) 57 | DAQmxRegisterDoneEvent(taskHandle,0,DoneCallback,None) 58 | 59 | DAQmxStartTask(taskHandle) 60 | 61 | input('Acquiring samples continuously. Press Enter to interrupt\n') 62 | 63 | DAQmxStopTask(taskHandle) 64 | DAQmxClearTask(taskHandle) 65 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/pyseabreeze/interfaces/thermoelectric.py: -------------------------------------------------------------------------------- 1 | from .common import SeaBreezeError, get_pyseabreeze_decorator 2 | from .communication import USBCommOOI, USBCommOBP 3 | 4 | import struct 5 | 6 | convert_exceptions = get_pyseabreeze_decorator('interfaces.thermoelectric') 7 | 8 | 9 | class ThermoElectricFeatureOOI(USBCommOOI): 10 | 11 | def has_tec_feature(self): 12 | return [True] 13 | 14 | @convert_exceptions("Error tec temperature read.") 15 | def read_tec_temperature(self): 16 | self.usb_send(struct.pack(', , , , 21 | #, , 22 | #, 23 | #, , 24 | # 25 | iStep = 256 if int(lRange[0])==0 else 65536 26 | pts = int(lRange[2]) 27 | dt = float(lRange[4]) 28 | gain = float(lRange[7]) 29 | y_offs = float(lRange[8]) 30 | y_offs_byte = int(lRange[9]) 31 | # get data as i16, convert to numpy array 32 | self.write('WAV:DATA?', bCheckError=False) 33 | sHead0 = self.read(n_bytes=10) 34 | # strip header to find # of points 35 | i0 = sData.find(b'#') 36 | nDig = int(sData[i0+1:i0+2]) 37 | nByte = int(sData[i0+2:i0+2+nDig]) 38 | # read data, including final line feed 39 | sData = self.read(n_bytes=(1+nByte)) 40 | # get data to numpy array 41 | vData = np.frombuffer(sData[:-1], dtype='>f') 42 | value = quant.getTraceDict(gain*(vData - y_offs_byte) + y_offs, dt=dt) 43 | else: 44 | # not enabled, return empty array 45 | value = quant.getTraceDict([]) 46 | else: 47 | # for all other cases, call VISA driver 48 | value = VISA_Driver.performGetValue(self, quant, options) 49 | return value 50 | 51 | if __name__ == '__main__': 52 | pass 53 | 54 | 55 | -------------------------------------------------------------------------------- /Signal Recovery 726x/Signal Recovery 726x.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | 6 | class Driver(VISA_Driver): 7 | """ The Signal Recovery 726x driver re-implements the VISA driver with extra options""" 8 | 9 | def performOpen(self, options={}): 10 | """Perform the operation of opening the instrument connection""" 11 | # calling the generic VISA open to make sure we have a connection 12 | VISA_Driver.performOpen(self, options=options) 13 | 14 | #This device does not respond to *IDN?, so let's check manually 15 | id = self.askAndLog("ID") 16 | if not id in ("7260", "7265"): 17 | raise InstrumentDriver.CommunicationError("ID query did not return 7260 or 7265. Is this the right driver for the device at the right address?") 18 | return 19 | 20 | def performGetValue(self, quant, options={}): 21 | """Perform the Get Value instrument operation""" 22 | # perform special getValue for reading complex value 23 | name = str(quant.name) 24 | if name == 'Value': 25 | # get complex value in one instrument reading 26 | sAns = self.askAndLog(quant.get_cmd).strip() 27 | lData = sAns.split(',') 28 | #Python float() complains about 0.0E+00 29 | # if lData[0].strip() == "0.0E+00": 30 | # lData[0] = "0" 31 | # if lData[1].strip() == "0.0E+00": 32 | # lData[1] = "0" 33 | # self.log("Test: " + lData[1]) 34 | # return complex(0.0, 0.0) 35 | # return complex values 36 | return complex(float(lData[0].rstrip(" \r\n\0")), float(lData[1].rstrip(" \r\n\0"))) 37 | else: 38 | # run the generic visa driver case 39 | return VISA_Driver.performGetValue(self, quant, options=options) 40 | 41 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 42 | """Perform the set value operation""" 43 | # check type of quantity: There seems to be a problem with some float type commands... (i.e. oscillator frequency) Use the fixed point version instead. 44 | if quant.name in ('Oscillator Frequency'): 45 | self.writeAndLog(quant.set_cmd + " " + str(int(value*1000))) #Fixed point version uses mHz 46 | else: 47 | return VISA_Driver.performSetValue(self, quant, value, sweepRate, options=options) 48 | return value 49 | 50 | 51 | if __name__ == '__main__': 52 | pass 53 | -------------------------------------------------------------------------------- /UserInput/UserInput.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: User Input 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | # Default interface settings 12 | interface: None 13 | startup: Do nothing 14 | 15 | # Name of folder containing the code defining a custom driver. Do not define this item 16 | # or leave it blank for any standard driver based on the built-in VISA interface. 17 | driver_path: UserInput 18 | 19 | # Define quantities in sections. The section name is the quantity name 20 | # The following keywords are allowed: 21 | # unit: Quantity unit 22 | # enabled: Determines wether the control is enabled from start. Default is True 23 | # datatype: The data type should be one of DOUBLE, COMPLEX, VECTOR, VECTOR_COMPLEX, BOOLEAN, COMBO or STRING 24 | # def_value: Default value 25 | # low_lim: Lowest allowable value. Defaults to -INF 26 | # high_lim: Highest allowable values. Defaults to +INF 27 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 28 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 29 | # ... 30 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 31 | # group: Name of the group where the control belongs. 32 | # state_quant: Quantity that determines this control's visibility 33 | # state_value_1: Value of "state_quant" for which the control is visible 34 | # state_value_2: Value of "state_quant" for which the control is visible 35 | # ... 36 | # state_value_n: Value of "state_quant" for which the control is visible 37 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 38 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 39 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 40 | # sweep_cmd: Command used to sweep data. Use for sweep rate, for sweep time, and <*> for the value. 41 | # stop_cmd: Command used to stop a sweep 42 | 43 | [Set value] 44 | datatype: DOUBLE 45 | tooltip: The measurement will not continue until the user confirms the message box. The setpoint value of the sequence will be saved. 46 | permission: WRITE 47 | 48 | [Get value] 49 | datatype: DOUBLE 50 | permission: READ 51 | tooltip: Allow user to enter value 52 | 53 | -------------------------------------------------------------------------------- /Timer/Timer.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Timer 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | interface: None 12 | 13 | # Name of folder containing the code defining a custom driver. Do not define this item 14 | # or leave it blank for any standard driver based on the built-in VISA interface. 15 | driver_path: Timer 16 | 17 | # Define that the driver is a Signal Generator 18 | # signal_generator: True 19 | 20 | # Define quantities in sections. The section name is the quantity name 21 | # The following keywords are allowed: 22 | # unit: Quantity unit 23 | # enabled: Determines wether the control is enabled from start. Default is True 24 | # datatype: The data type should be one of DOUBLE, COMPLEX, VECTOR, VECTOR_COMPLEX, BOOLEAN, COMBO or STRING 25 | # def_value: Default value 26 | # low_lim: Lowest allowable value. Defaults to -INF 27 | # high_lim: Highest allowable values. Defaults to +INF 28 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 29 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 30 | # ... 31 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 32 | # group: Name of the group where the control belongs. 33 | # state_quant: Quantity that determines this control's visibility 34 | # state_value_1: Value of "state_quant" for which the control is visible 35 | # state_value_2: Value of "state_quant" for which the control is visible 36 | # ... 37 | # state_value_n: Value of "state_quant" for which the control is visible 38 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 39 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 40 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 41 | # sweep_cmd: Command used to sweep data. Use for sweep rate, for sweep time, and <*> for the value. 42 | # stop_cmd: Command used to stop a sweep 43 | # tooltip: Help for the quant 44 | 45 | [Timer] 46 | datatype: DOUBLE 47 | unit: s 48 | permission: BOTH 49 | def_value: 0 50 | tooltip: Wait until time reaches set point. Set to zero to reset timer. 51 | 52 | [Clock] 53 | datatype: DOUBLE 54 | unit: s 55 | permission: READ 56 | tooltip: Time elapsed since resetting the timer. 57 | 58 | -------------------------------------------------------------------------------- /Waveform_demodulate/Waveform_demodulate.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Waveform demodulation 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | # Name of folder containing the code defining a custom driver. Do not define this item 12 | # or leave it blank for any standard driver based on the built-in VISA interface. 13 | driver_path: Waveform_demodulate 14 | 15 | # Define that this driver is a signal generator without hardware communication 16 | signal_generator: True 17 | 18 | 19 | # Define quantities in sections. This list is a selection of allowed keywords, 20 | # see the manual for a full list of options 21 | # datatype: The datatype should be one of DOUBLE, BOOLEAN, COMBO, 22 | # STRING, COMPLEX, VECTOR, VECTOR_COMPLEX, PATH or BUTTON. 23 | # unit: Quantity unit 24 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 25 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 26 | # def_value: Default value 27 | # low_lim: Lowest allowable value. Defaults to -INF 28 | # high_lim: Highest allowable values. Defaults to +INF 29 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 30 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 31 | # ... 32 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 33 | # state_quant: Quantity that determines this control's visibility 34 | # state_value_1: Value of "state_quant" for which the control is visible 35 | # state_value_2: Value of "state_quant" for which the control is visible 36 | # ... 37 | # state_value_n: Value of "state_quant" for which the control is visible 38 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 39 | # group: Name of the group where the control belongs. 40 | # section: Name of the section where the control belongs. 41 | 42 | 43 | [Response] 44 | x_name: Time 45 | x_unit: s 46 | datatype: VECTOR_COMPLEX 47 | permission: READ 48 | group: Response 49 | show_in_measurement_dlg: True 50 | 51 | [Raw Signal] 52 | datatype: VECTOR 53 | permission: WRITE 54 | group: Input 55 | show_in_measurement_dlg: True 56 | 57 | [Sample Rate] 58 | datatype: DOUBLE 59 | def_value: 50e9 60 | group: Response 61 | show_in_measurement_dlg: True 62 | 63 | [Modulation Freq] 64 | datatype: DOUBLE 65 | def_value: 8e9 66 | group: Response 67 | show_in_measurement_dlg: True -------------------------------------------------------------------------------- /Tektronix_Oscilloscope/Tektronix_Oscilloscope.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from VISA_Driver import VISA_Driver 4 | from InstrumentConfig import InstrumentQuantity 5 | import numpy as np 6 | 7 | __version__ = "0.0.1" 8 | 9 | class Error(Exception): 10 | pass 11 | 12 | class Driver(VISA_Driver): 13 | """ This class implements the LeCroy scope driver""" 14 | 15 | def performGetValue(self, quant, options={}): 16 | """Perform the Get Value instrument operation""" 17 | # check type of quantity 18 | if quant.name in ('Ch1 - Data', 'Ch2 - Data', 'Ch3 - Data', 'Ch4 - Data'): 19 | # traces, get channel 20 | channel = int(quant.name[2]) 21 | # check if channel is on 22 | if self.getValue('Ch%d - Enabled' % channel): 23 | # select channel and set # of bytes to send 24 | if self.getModel()=='TDS 3000': 25 | self.write(':DATA:SOU CH%d;:WFMP:BYT_N 2;' % channel, bCheckError=False) 26 | else: 27 | self.write(':DATA:SOU CH%d;:WFMO:BYT_N 2;' % channel, bCheckError=False) 28 | # query range and offset 29 | if self.getModel()=='TDS 3000': 30 | sRange = self.ask(':WFMP:XZE?;:WFMP:XIN?;:WFMP:YMU?;:WFMP:YOF?;:WFMP:YZE?;', bCheckError=False) 31 | else: 32 | sRange = self.ask(':WFMO:XZE?;:WFMO:XIN?;:WFMO:YMU?;:WFMO:YOF?;:WFMO:YZE?;', bCheckError=False) 33 | lRange = sRange.split(';') 34 | (t0, dt, gain, ioffset, offset) = [float(s) for s in lRange] 35 | # get data as i16, convert to numpy array 36 | self.write('CURV?', bCheckError=False) 37 | sData = self.read(ignore_termination=True) 38 | # strip header to find # of points 39 | i0 = sData.find(b'#') 40 | nDig = int(sData[i0+1:i0+2]) 41 | nByte = int(sData[i0+2:i0+2+nDig]) 42 | nData = int(nByte/2) 43 | # get data to numpy array 44 | vData = np.frombuffer(sData[(i0+2+nDig):(i0+2+nDig+nByte)], 45 | dtype='>h', count=nData) 46 | value = InstrumentQuantity.getTraceDict( \ 47 | gain*(vData - ioffset) + offset, dt=dt) 48 | else: 49 | # not enabled, return empty array 50 | value = InstrumentQuantity.getTraceDict([]) 51 | else: 52 | # for all other cases, call VISA driver 53 | value = VISA_Driver.performGetValue(self, quant, options) 54 | return value 55 | 56 | if __name__ == '__main__': 57 | pass 58 | 59 | 60 | -------------------------------------------------------------------------------- /Timer/Timer.py: -------------------------------------------------------------------------------- 1 | import InstrumentDriver 2 | import numpy as np 3 | import sys, time 4 | 5 | from time import perf_counter as timer 6 | 7 | class Driver(InstrumentDriver.InstrumentWorker): 8 | """ This class implements a simple signal generator driver""" 9 | 10 | 11 | def performOpen(self, options={}): 12 | """Perform the operation of opening the instrument connection""" 13 | self.timeStart = None 14 | 15 | 16 | def initSetConfig(self): 17 | """Reset the timer before setting configuration (tyically at startup)""" 18 | self.timeStart = timer() 19 | 20 | 21 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 22 | """Perform the Set Value instrument operation. This function should 23 | return the actual value set by the instrument""" 24 | # proceed depending on quantity 25 | if quant.name == 'Timer': 26 | # reset timer if setting to zero 27 | if value == 0.0 or self.timeStart is None: 28 | # save the timer value for initialization 29 | self.timeStart = timer() 30 | else: 31 | # loop for waiting for time 32 | while True: 33 | # check if stopped 34 | if self.isStopped(): 35 | value = timer() - self.timeStart 36 | break 37 | dt = value - (timer() - self.timeStart) 38 | if dt > 0.2: 39 | # sleep 200 ms at a time, to allow interrupts 40 | time.sleep(0.2) 41 | self.reportCurrentValue(quant, timer() - self.timeStart) 42 | elif dt > 0: 43 | # sleep remaining time, then break 44 | time.sleep(dt) 45 | break 46 | else: 47 | # break directly if no time left 48 | break 49 | return value 50 | else: 51 | # for other quantities, just return current value of control 52 | return value 53 | 54 | 55 | def performGetValue(self, quant, options={}): 56 | """Perform the Get Value instrument operation""" 57 | # proceed depending on quantity 58 | if quant.name in ('Timer', 'Clock'): 59 | if self.timeStart is None: 60 | # if first call, init timer 61 | self.timeStart = timer() 62 | return 0.0 63 | else: 64 | return timer() - self.timeStart 65 | else: 66 | # for other quantities, just return current value of control 67 | return quant.getValue() 68 | 69 | 70 | -------------------------------------------------------------------------------- /Manual/Manual.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Manual 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | # Name of folder containing the code defining a custom driver. Do not define this item 12 | # or leave it blank for any standard driver based on the built-in VISA interface. 13 | driver_path: 14 | 15 | # Default interface settings 16 | interface: None 17 | 18 | # General VISA settings for the instrument. 19 | [VISA settings] 20 | 21 | # Enable or disable communication over the VISA protocol (True or False) 22 | # If False, the driver will not perform any operations (unless there is a custom driver). 23 | use_visa = False 24 | 25 | # Define quantities in sections. This list is a selection of allowed keywords, 26 | # see the manual for a full list of options 27 | # datatype: The datatype should be one of DOUBLE, BOOLEAN, COMBO, 28 | # STRING, COMPLEX, VECTOR, VECTOR_COMPLEX, PATH or BUTTON. 29 | # unit: Quantity unit 30 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 31 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 32 | # def_value: Default value 33 | # low_lim: Lowest allowable value. Defaults to -INF 34 | # high_lim: Highest allowable values. Defaults to +INF 35 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 36 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 37 | # ... 38 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 39 | # state_quant: Quantity that determines this control's visibility 40 | # state_value_1: Value of "state_quant" for which the control is visible 41 | # state_value_2: Value of "state_quant" for which the control is visible 42 | # ... 43 | # state_value_n: Value of "state_quant" for which the control is visible 44 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 45 | # group: Name of the group where the control belongs. 46 | # section: Name of the section where the control belongs. 47 | 48 | 49 | 50 | [Value 1] 51 | datatype: DOUBLE 52 | 53 | [Value 2] 54 | datatype: DOUBLE 55 | 56 | [Value 3] 57 | datatype: DOUBLE 58 | 59 | [Value 4] 60 | datatype: DOUBLE 61 | 62 | [Value 5] 63 | datatype: DOUBLE 64 | 65 | [Value 6] 66 | datatype: DOUBLE 67 | 68 | [Value 7] 69 | datatype: DOUBLE 70 | 71 | [Value 8] 72 | datatype: DOUBLE 73 | 74 | [Value 9] 75 | datatype: DOUBLE 76 | 77 | [Value 10] 78 | datatype: DOUBLE 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /Keysight_PXI_AWG/Keysight_PXI_AWG-UpgradeCfg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | def upgradeDriverCfg(version, dValue={}, dOption=[]): 4 | """Upgrade the config given by the dict dValue and dict dOption to the 5 | latest version.""" 6 | # the dQuantUpdate dict contains rules for replacing missing quantities 7 | dQuantReplace = {} 8 | # update quantities depending on version 9 | if version == '1.0': 10 | # convert version 1.0 -> 1.1 11 | # changes: 12 | # re-label AWG -> Ch, change in trig mode 13 | version = '1.1' 14 | 15 | # rename AWG -> Ch 16 | before_after = [ 17 | ['AWG1 - Waveform', 'Ch1 - Waveform'], 18 | ['AWG1 - Trig mode', 'Ch1 - Trig mode'], 19 | ['AWG1 - Trig', 'Ch1 - Trig'], 20 | ['AWG1 - Cycles', 'Ch1 - Cycles'], 21 | ['AWG2 - Waveform', 'Ch2 - Waveform'], 22 | ['AWG2 - Trig mode', 'Ch2 - Trig mode'], 23 | ['AWG2 - Trig', 'Ch2 - Trig'], 24 | ['AWG2 - Cycles', 'Ch2 - Cycles'], 25 | ['AWG3 - Waveform', 'Ch3 - Waveform'], 26 | ['AWG3 - Trig mode', 'Ch3 - Trig mode'], 27 | ['AWG3 - Trig', 'Ch3 - Trig'], 28 | ['AWG3 - Cycles', 'Ch3 - Cycles'], 29 | ['AWG4 - Waveform', 'Ch4 - Waveform'], 30 | ['AWG4 - Trig mode', 'Ch4 - Trig mode'], 31 | ['AWG4 - Trig', 'Ch4 - Trig'], 32 | ['AWG4 - Cycles', 'Ch4 - Cycles'], 33 | ] 34 | 35 | for before, after in before_after: 36 | dQuantReplace[before] = after 37 | if before in dValue: 38 | dValue[after] = dValue.pop(before) 39 | 40 | # replace trig mode labels 41 | rule = { 42 | 'Auto': 'Continuous', 43 | 'Software': 'Software', 44 | 'Software (per cycle)': 'Software', 45 | 'External': 'External', 46 | 'External (per cycle)': 'External', 47 | } 48 | 49 | # apply rule for all trig modes 50 | for n in range(4): 51 | label = 'Ch%d - Trig mode' % (n + 1) 52 | if label in dValue: 53 | dValue[label] = rule[dValue[label]] 54 | 55 | elif version == '1.1': 56 | # convert version 1.1 -> 1.2 57 | version = '1.2' 58 | 59 | # replace trig mode labels 60 | rule = { 61 | 'Continuous': 'Continuous', 62 | 'Software': 'Software / HVI', 63 | 'External': 'External', 64 | } 65 | 66 | # apply rule for all trig modes 67 | for n in range(4): 68 | label = 'Ch%d - Trig mode' % (n + 1) 69 | if label in dValue: 70 | dValue[label] = rule[dValue[label]] 71 | # return new version and data 72 | return (version, dValue, dOption, dQuantReplace) 73 | -------------------------------------------------------------------------------- /Agilent_33250A_WaveformGenerator/Agilent_33250A_WaveformGenerator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import InstrumentDriver 4 | from VISA_Driver import VISA_Driver 5 | import numpy as np 6 | 7 | class Driver(VISA_Driver): 8 | """ This class implements the Agilen 33250 AWG""" 9 | 10 | 11 | def performOpen(self, options={}): 12 | """Perform the operation of opening the instrument connection""" 13 | # add compatibility with pre-python 3 version of Labber 14 | if not hasattr(self, 'write_raw'): 15 | self.write_raw = self.write 16 | # start by calling the generic VISA open to make sure we have a connection 17 | VISA_Driver.performOpen(self, options) 18 | # clear value of waveform 19 | self.setValue('Arb. Waveform', []) 20 | 21 | 22 | def performSetValue(self, quant, value, sweepRate=0.0, options={}): 23 | """Perform the Set Value instrument operation. This function should 24 | return the actual value set by the instrument""" 25 | # keep track of if waveform is updated, to avoid sending it many times 26 | if self.isFirstCall(options): 27 | self.bWaveUpdated = False 28 | if quant.name in ('Arb. Waveform',): 29 | # set value, then mark that waveform needs an update 30 | quant.setValue(value) 31 | self.bWaveUpdated = True 32 | else: 33 | # for all other cases, call VISA driver 34 | value = VISA_Driver.performSetValue(self, quant, value, sweepRate, 35 | options=options) 36 | # if final call and wave is updated, send it to AWG 37 | if self.isFinalCall(options) and self.bWaveUpdated: 38 | self.sendWaveform() 39 | return value 40 | 41 | 42 | def sendWaveform(self): 43 | """Rescale and send waveform data to the Tek""" 44 | # get data 45 | vData = self.getValueArray('Arb. Waveform') 46 | # get range and scale to U16 47 | Vpp = self.getValue('Voltage') 48 | vI16 = self.scaleWaveformToI16(vData, Vpp) 49 | length = len(vI16) 50 | # create data as bytes with header 51 | sLen = b'%d' % (2*length) 52 | sHead = b':DATA:DAC VOLATILE, #%d%s' % (len(sLen), sLen) 53 | # write header + data 54 | self.write_raw(sHead + vI16.tobytes()) 55 | # select volatile waveform 56 | self.write(':FUNC:USER VOLATILE') 57 | 58 | 59 | def scaleWaveformToI16(self, vData, dVpp): 60 | """Scales the waveform and returns data in a string of I16""" 61 | # clip waveform and store in-place 62 | np.clip(vData, -dVpp/2., dVpp/2., vData) 63 | vI16 = np.array(2047 * vData / (dVpp/2.), dtype=np.int16) 64 | return vI16 65 | 66 | 67 | if __name__ == '__main__': 68 | pass 69 | -------------------------------------------------------------------------------- /SimpleSignalGenerator/SimpleSignalGenerator.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Simple Signal Generator 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | # Name of folder containing the code defining a custom driver. Do not define this item 12 | # or leave it blank for any standard driver based on the built-in VISA interface. 13 | driver_path: SimpleSignalGenerator 14 | 15 | # Define that the driver is a Signal Generator 16 | signal_generator: True 17 | 18 | # Define quantities in sections. This list is a selection of allowed keywords, 19 | # see the manual for a full list of options 20 | # datatype: The datatype should be one of DOUBLE, BOOLEAN, COMBO, 21 | # STRING, COMPLEX, VECTOR, VECTOR_COMPLEX, PATH or BUTTON. 22 | # unit: Quantity unit 23 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 24 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 25 | # def_value: Default value 26 | # low_lim: Lowest allowable value. Defaults to -INF 27 | # high_lim: Highest allowable values. Defaults to +INF 28 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 29 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 30 | # ... 31 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 32 | # state_quant: Quantity that determines this control's visibility 33 | # state_value_1: Value of "state_quant" for which the control is visible 34 | # state_value_2: Value of "state_quant" for which the control is visible 35 | # ... 36 | # state_value_n: Value of "state_quant" for which the control is visible 37 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 38 | # group: Name of the group where the control belongs. 39 | # section: Name of the section where the control belongs. 40 | 41 | 42 | 43 | [Frequency] 44 | datatype: DOUBLE 45 | unit: Hz 46 | def_value: 10.0 47 | tooltip: Frequency of the sine wave 48 | 49 | [Amplitude] 50 | datatype: DOUBLE 51 | unit: V 52 | def_value: 1.0 53 | tooltip: Amplitude of the sine wave 54 | 55 | [Phase] 56 | datatype: DOUBLE 57 | unit: deg 58 | def_value: 0.0 59 | 60 | [Duration] 61 | datatype: DOUBLE 62 | unit: s 63 | def_value: 1.0 64 | 65 | [Number of points] 66 | datatype: DOUBLE 67 | def_value: 1000 68 | 69 | [Add noise] 70 | datatype: BOOLEAN 71 | def_value: False 72 | 73 | [Noise amplitude] 74 | datatype: DOUBLE 75 | unit: V 76 | def_value: 0.1 77 | state_quant: Add noise 78 | state_value_1: True 79 | 80 | [Signal] 81 | datatype: VECTOR 82 | permission: READ 83 | x_name: Time 84 | x_unit: s 85 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/Ocean_Optics_Spectrometer.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Ocean Optics Spectrometer 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | use_32bit_mode: True 11 | 12 | # Name of folder containing the code defining a custom driver. Do not define this item 13 | # or leave it blank for any standard driver based on the built-in VISA interface. 14 | driver_path: Ocean_Optics_Spectrometer 15 | 16 | # General VISA settings for the instrument. 17 | [VISA settings] 18 | 19 | # Enable or disable communication over the VISA protocol (True or False) 20 | # If False, the driver will not perform any operations (unless there is a custom driver). 21 | use_visa = False 22 | 23 | # Define quantities in sections. This list is a selection of allowed keywords, 24 | # see the manual for a full list of options 25 | # datatype: The datatype should be one of DOUBLE, BOOLEAN, COMBO, 26 | # STRING, COMPLEX, VECTOR, VECTOR_COMPLEX, PATH or BUTTON. 27 | # unit: Quantity unit 28 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 29 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 30 | # def_value: Default value 31 | # low_lim: Lowest allowable value. Defaults to -INF 32 | # high_lim: Highest allowable values. Defaults to +INF 33 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 34 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 35 | # ... 36 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 37 | # state_quant: Quantity that determines this control's visibility 38 | # state_value_1: Value of "state_quant" for which the control is visible 39 | # state_value_2: Value of "state_quant" for which the control is visible 40 | # ... 41 | # state_value_n: Value of "state_quant" for which the control is visible 42 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 43 | # group: Name of the group where the control belongs. 44 | # section: Name of the section where the control belongs. 45 | 46 | ### We also want to set the integration time, from 10 ms to 15 minutes 47 | [Integration time] 48 | datatype: DOUBLE 49 | def_value: 1.0 50 | unit: s 51 | low_lim: 0.01 52 | high_lim: 900 53 | permission: WRITE 54 | 55 | [Temperature] 56 | datatype: DOUBLE 57 | def_value: 20.0 58 | unit: C 59 | permission: BOTH 60 | 61 | [Intensity] 62 | datatype: VECTOR 63 | unit: Wm^-2 64 | permission: READ 65 | x_name: Wavelength 66 | x_unit: m 67 | 68 | #[Wavelength] 69 | #datatype: VECTOR 70 | #unit: m 71 | #permission: READ 72 | #x_name: Index 73 | #x_unit: 74 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/cseabreeze/__init__.py: -------------------------------------------------------------------------------- 1 | """This is a wrapper for the c-implementation of the seabreeze-library 2 | 3 | """ 4 | 5 | from .wrapper import (SeaBreezeError, 6 | SeaBreezeDevice, 7 | initialize, 8 | shutdown, 9 | device_list_devices, 10 | device_open, 11 | device_is_open, 12 | device_close, 13 | device_get_model, 14 | device_get_serial_number, 15 | device_get_spectrometer_feature_id, 16 | device_get_shutter_feature_id, 17 | device_get_light_source_feature_id, 18 | device_get_continuous_strobe_feature_id, 19 | device_get_eeprom_feature_id, 20 | device_get_irrad_calibration_feature_id, 21 | device_get_tec_feature_id, 22 | device_get_lamp_feature_id, 23 | device_get_nonlinearity_coeffs_feature_id, 24 | device_get_stray_light_coeffs_feature_id, 25 | spectrometer_set_trigger_mode, 26 | spectrometer_set_integration_time_micros, 27 | spectrometer_get_minimum_integration_time_micros, 28 | spectrometer_get_formatted_spectrum_length, 29 | spectrometer_get_formatted_spectrum, 30 | spectrometer_get_unformatted_spectrum_length, 31 | spectrometer_get_unformatted_spectrum, 32 | spectrometer_get_wavelengths, 33 | spectrometer_get_electric_dark_pixel_indices, 34 | shutter_set_shutter_open, 35 | light_source_get_count, 36 | light_source_has_enable, 37 | light_source_is_enabled, 38 | light_source_set_enable, 39 | light_source_has_variable_intensity, 40 | light_source_get_intensity, 41 | light_source_set_intensity, 42 | continuous_strobe_set_enable, 43 | continuous_strobe_set_period_micros, 44 | eeprom_read_slot, 45 | irrad_calibration_read, 46 | irrad_calibration_write, 47 | irrad_calibration_has_collection_area, 48 | irrad_calibration_read_collection_area, 49 | irrad_calibration_write_collection_area, 50 | tec_read_temperature_degrees_C, 51 | tec_set_temperature_setpoint_degrees_C, 52 | tec_set_enable, 53 | lamp_set_lamp_enable, 54 | nonlinearity_coeffs_get, 55 | stray_light_coeffs_get) 56 | -------------------------------------------------------------------------------- /Ocean_Optics_Spectrometer/seabreeze/pyseabreeze/__init__.py: -------------------------------------------------------------------------------- 1 | """This is a wrapper for the pyusb-implementation of the seabreeze-library 2 | 3 | """ 4 | 5 | from .wrapper import (SeaBreezeError, 6 | SeaBreezeDevice, 7 | initialize, 8 | shutdown, 9 | device_list_devices, 10 | device_open, 11 | device_is_open, 12 | device_close, 13 | device_get_model, 14 | device_get_serial_number, 15 | device_get_spectrometer_feature_id, 16 | device_get_shutter_feature_id, 17 | device_get_light_source_feature_id, 18 | device_get_continuous_strobe_feature_id, 19 | device_get_eeprom_feature_id, 20 | device_get_irrad_calibration_feature_id, 21 | device_get_tec_feature_id, 22 | device_get_lamp_feature_id, 23 | device_get_nonlinearity_coeffs_feature_id, 24 | device_get_stray_light_coeffs_feature_id, 25 | spectrometer_set_trigger_mode, 26 | spectrometer_set_integration_time_micros, 27 | spectrometer_get_minimum_integration_time_micros, 28 | spectrometer_get_formatted_spectrum_length, 29 | spectrometer_get_formatted_spectrum, 30 | spectrometer_get_unformatted_spectrum_length, 31 | spectrometer_get_unformatted_spectrum, 32 | spectrometer_get_wavelengths, 33 | spectrometer_get_electric_dark_pixel_indices, 34 | shutter_set_shutter_open, 35 | light_source_get_count, 36 | light_source_has_enable, 37 | light_source_is_enabled, 38 | light_source_set_enable, 39 | light_source_has_variable_intensity, 40 | light_source_get_intensity, 41 | light_source_set_intensity, 42 | continuous_strobe_set_enable, 43 | continuous_strobe_set_period_micros, 44 | eeprom_read_slot, 45 | irrad_calibration_read, 46 | irrad_calibration_write, 47 | irrad_calibration_has_collection_area, 48 | irrad_calibration_read_collection_area, 49 | irrad_calibration_write_collection_area, 50 | tec_read_temperature_degrees_C, 51 | tec_set_temperature_setpoint_degrees_C, 52 | tec_set_enable, 53 | lamp_set_lamp_enable, 54 | nonlinearity_coeffs_get, 55 | stray_light_coeffs_get) 56 | -------------------------------------------------------------------------------- /LabBrick_LSG_SignalGenerator/LabBrick_LSG_SignalGenerator.ini: -------------------------------------------------------------------------------- 1 | # Instrument driver configuration file. 2 | 3 | [General settings] 4 | 5 | # The name is shown in all the configuration windows 6 | name: Lab Brick LSG Signal Generator 7 | 8 | # The version string should be updated whenever changes are made to this config file 9 | version: 1.0 10 | 11 | # Name of folder containing the code defining a custom driver. Do not define this item 12 | # or leave it blank for any standard driver based on the built-in VISA interface. 13 | driver_path: LabBrick_LSG_SignalGenerator 14 | use_32bit_mode: True 15 | 16 | 17 | 18 | [Model and options] 19 | # The option section allow instruments with different options to use the same driver 20 | 21 | # List of models supported by this driver 22 | model_str_1: LSG 23 | 24 | # Check instrument model id at startup (True or False). Default is False 25 | check_model: False 26 | 27 | 28 | # Define quantities in sections. This list is a selection of allowed keywords, 29 | # see the manual for a full list of options 30 | # datatype: The datatype should be one of DOUBLE, BOOLEAN, COMBO, 31 | # STRING, COMPLEX, VECTOR, VECTOR_COMPLEX, PATH or BUTTON. 32 | # unit: Quantity unit 33 | # set_cmd: Command used to send data to the instrument. Put <*> where the value should appear. 34 | # get_cmd: Command used to get the data from the instrument. Default is set_cmd? 35 | # def_value: Default value 36 | # low_lim: Lowest allowable value. Defaults to -INF 37 | # high_lim: Highest allowable values. Defaults to +INF 38 | # combo_def_1: First option in a pull-down combo box. Only used when datatype=COMBO 39 | # combo_def_2: Second option in a pull-down combo box. Only used when datatype=COMBO 40 | # ... 41 | # combo_def_n: nth option in a pull-down combo box. Only used when datatype=COMBO 42 | # state_quant: Quantity that determines this control's visibility 43 | # state_value_1: Value of "state_quant" for which the control is visible 44 | # state_value_2: Value of "state_quant" for which the control is visible 45 | # ... 46 | # model_value_1: Value of "model" for which the control is visible 47 | # model_value_2: Value of "model" for which the control is visible 48 | # ... 49 | # option_value_1: Value of "installed option" for which the control is visible 50 | # option_value_2: Value of "installed option" for which the control is visible 51 | # ... 52 | # permission: Sets read/writability, options are BOTH, READ, WRITE or NONE. Default is BOTH 53 | # group: Name of the group where the control belongs. 54 | # section: Name of the section where the control belongs. 55 | 56 | 57 | [Frequency] 58 | unit: Hz 59 | datatype: DOUBLE 60 | def_value: 5.0E9 61 | 62 | [Power] 63 | unit: dBm 64 | datatype: DOUBLE 65 | def_value: -30 66 | 67 | [Output] 68 | datatype: BOOLEAN 69 | def_value: False 70 | 71 | [Use internal reference] 72 | datatype: BOOLEAN 73 | def_value: True 74 | 75 | --------------------------------------------------------------------------------