From be2a7831ead1847c16b7428e16a230c1349da57e Mon Sep 17 00:00:00 2001 From: castaneda Date: Fri, 21 Mar 2025 14:04:46 +0100 Subject: [PATCH] Upload files to "scripts/sequences" Sequences used for testing MLOOP on the "test setup" --- scripts/sequences/TestClock.py | 45 +++ scripts/sequences/TestSetup.py | 108 ++++++ scripts/sequences/wlmData.py | 659 +++++++++++++++++++++++++++++++++ 3 files changed, 812 insertions(+) create mode 100644 scripts/sequences/TestClock.py create mode 100644 scripts/sequences/TestSetup.py create mode 100644 scripts/sequences/wlmData.py diff --git a/scripts/sequences/TestClock.py b/scripts/sequences/TestClock.py new file mode 100644 index 0000000..27a1046 --- /dev/null +++ b/scripts/sequences/TestClock.py @@ -0,0 +1,45 @@ +from labscript import * +import numpy as np + + +from labscript_utils import import_or_reload +import_or_reload('labscriptlib.NNDy_TestSetup.connection_table') + + +start() + +t0 = 0 +#t = reinitialise(t0) +t = t0 + +#T = 100 +#dt = 5 +#AnalogueHigh = 1 + +N = int(T//dt) +#print(np.linspace(t, t+T, N)) + + +#dummyAnalogue_1.constant(t, AnalogueHigh) +CH4.go_high(t) + + +for i in list(np.linspace(t, t+T, N)): + CH3.go_high(i) + CH3.go_low(i+dt/2) + + CH2.constant(i, AnalogueHigh) + CH2.constant(i+dt/2, 0) + #print(i) + +t += T + +#dummyAnalogue_1.constant(t, 0) +CH4.go_low(t) + + +#t = reinitialise(t) +t += 5 +#print(t) + +stop(t) \ No newline at end of file diff --git a/scripts/sequences/TestSetup.py b/scripts/sequences/TestSetup.py new file mode 100644 index 0000000..8c70e64 --- /dev/null +++ b/scripts/sequences/TestSetup.py @@ -0,0 +1,108 @@ +from labscript import * +import numpy as np + +from labscript_utils import import_or_reload +import_or_reload('labscriptlib.NNDy_TestSetup.connection_table') + + +def wlm(shot_context,t, period = 10, buffer = 1e-3): + + import lyse + import time + import pandas as pd + import sys + import h5py + import numpy as np + + + new_path = r'C:\Users\DyLab\labscript-suite\userlib\labscriptlib\NNDy_TestSetup\Sequences' + if new_path not in sys.path: + sys.path.append(new_path) + + import wlmData + # Load the DLL + DLL_PATH = "C:\Windows\SysWOW64\wlmData.dll" + wlmData.LoadDLL(DLL_PATH) + + + #lyse recalls the hdf5 file, where it will save the measurements + #run = lyse.Run(shot_context.h5_file) + #run.set_group('wlm') + group_name = 'results/wlm' + + print(f"Reading wavelength data for {period} seconds. Wait or Press Ctrl+C to stop.") + + data = [] + + start_time = time.time() + #print(start_time) + + try: + while True: + + # Get the current timestamp + elapsed_time = time.time() - start_time + + if elapsed_time > period: + print("Measurement completed!") + break + + # Get the wavelength + channel = 4 + #second argument is to be left to 0 - see wlm manual page 80 + wavelength = wlmData.dll.GetWavelengthNum(channel,0.0) + frequency = wlmData.dll.GetFrequencyNum(channel,0.0) + + # Log the data, with a list it's more efficient + data.append([elapsed_time, wavelength, frequency]) + #print(f"Time: {elapsed_time}, Wavelength: {wavelength} nm, frequency: {frequency} THz") + + # Wait for a short interval before the next reading + time.sleep(buffer) + except KeyboardInterrupt: + print("Measurement stopped.") + + #data_df = pd.DataFrame(data, columns = ['timestamp [s]','wavelength [nm]', 'frequency [THz]']) + + #the dataframe is saved as wlm_df + frametype = 'wlm_df' + #run.save_result(frametype, data) + with h5py.File(shot_context.h5_file, 'r+') as f: + group = f.require_group(group_name) + dset = group.create_dataset( + frametype, data=data + ) + # Specify this dataset should be viewed as an image + dset.attrs['CLASS'] = np.bytes_('TABLE') + + + +fr.add_function('stop',wlm, T_wlm, buffer_wlm) + +start() + +t0 = 0 +t = t0 + wait_AWG + + +analogue_val = delta_freq * FM_halfrange_analogue / FM_FreqDev +AOM_Control.constant(t, 0) +t+=0.1 +AOM_Control.constant(t, analogue_val) + +t+=0.5 + +Camera.expose(t, name = 'camera_snap', frametype = 'image' #name of the frame to be saved in the hdf5 file + ) + +t+=0.1 + +CH3.go_high(t + 0.01) +CH3.go_low(t + 0.02) +CH3.go_high(t + 0.03) +CH3.go_low(t + 0.04) + +t += 1.05 + +stop(t) + diff --git a/scripts/sequences/wlmData.py b/scripts/sequences/wlmData.py new file mode 100644 index 0000000..7a61d43 --- /dev/null +++ b/scripts/sequences/wlmData.py @@ -0,0 +1,659 @@ +###################################################################################################### +# @package wlmData +# @file wlmData.py +# @copyright HighFinesse GmbH. +# @date 2020.06.02 +# @version 0.4 +# +# Homepage: http://www.highfinesse.com/ +# +# @brief Python wrapper for wlmData.dll. +# +# Changelog: +# ---------- +# 2018.09.12 +# v0.1 - Initial release +# 2018.09.14 +# v0.2 - Constant values added +# 2018.09.15 +# v0.3 - Constant values separated to wlmConst.py, LoadDLL() added +# 2020.06.02 +# v0.4 - GetPattern... and GetAnalysisData argtypes adapted +#/ + +import ctypes + +dll = None + +def LoadDLL(DLL_Path): + global dll + dll = ctypes.CDLL(DLL_Path) + + # LONG_PTR Instantiate(long RFC, long Mode, LONG_PTR P1, long P2) + dll.Instantiate.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.c_long ] + dll.Instantiate.restype = ctypes.POINTER(ctypes.c_long) + + # long WaitForWLMEvent(lref Mode, lref IntVal, dref DblVal) + dll.WaitForWLMEvent.argtypes = [ ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double) ] + dll.WaitForWLMEvent.restype = ctypes.c_long + + # long WaitForWLMEventEx(lref Ver, lref Mode, lref IntVal, dref DblVal, lref Res1) + dll.WaitForWLMEventEx.argtypes = [ ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_long) ] + dll.WaitForWLMEventEx.restype = ctypes.c_long + + # long WaitForNextWLMEvent(lref Mode, lref IntVal, dref DblVal) + dll.WaitForNextWLMEvent.argtypes = [ ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double) ] + dll.WaitForNextWLMEvent.restype = ctypes.c_long + + # long WaitForNextWLMEventEx(lref Ver, lref Mode, lref IntVal, dref DblVal, lref Res1) + dll.WaitForNextWLMEventEx.argtypes = [ ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_long) ] + dll.WaitForNextWLMEventEx.restype = ctypes.c_long + + # void ClearWLMEvents(void) + dll.ClearWLMEvents.argtypes = [ ] + dll.ClearWLMEvents.restype = None + + # long ControlWLM(long Action, LONG_PTR App, long Ver) + dll.ControlWLM.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.c_long ] + dll.ControlWLM.restype = ctypes.c_long + + # long ControlWLMEx(long Action, LONG_PTR App, long Ver, long Delay, long Res) + dll.ControlWLMEx.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.ControlWLMEx.restype = ctypes.c_long + + # __int64 SynchroniseWLM(long Mode, __int64 TS) + dll.SynchroniseWLM.argtypes = [ ctypes.c_long, ctypes.c_longlong ] + dll.SynchroniseWLM.restype = ctypes.c_longlong + + # long SetMeasurementDelayMethod(long Mode, long Delay) + dll.SetMeasurementDelayMethod.argtypes = [ ctypes.c_long, ctypes.c_long ] + dll.SetMeasurementDelayMethod.restype = ctypes.c_long + + # long SetWLMPriority(long PPC, long Res1, long Res2) + dll.SetWLMPriority.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetWLMPriority.restype = ctypes.c_long + + # long PresetWLMIndex(long Ver) + dll.PresetWLMIndex.argtypes = [ ctypes.c_long ] + dll.PresetWLMIndex.restype = ctypes.c_long + + # long GetWLMVersion(long Ver) + dll.GetWLMVersion.argtypes = [ ctypes.c_long ] + dll.GetWLMVersion.restype = ctypes.c_long + + # long GetWLMIndex(long Ver) + dll.GetWLMIndex.argtypes = [ ctypes.c_long ] + dll.GetWLMIndex.restype = ctypes.c_long + + # long GetWLMCount(long V) + dll.GetWLMCount.argtypes = [ ctypes.c_long ] + dll.GetWLMCount.restype = ctypes.c_long + + # double GetWavelength(double WL) + dll.GetWavelength.argtypes = [ ctypes.c_double ] + dll.GetWavelength.restype = ctypes.c_double + + # double GetWavelength2(double WL2) + dll.GetWavelength2.argtypes = [ ctypes.c_double ] + dll.GetWavelength2.restype = ctypes.c_double + + # double GetWavelengthNum(long num, double WL) + dll.GetWavelengthNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetWavelengthNum.restype = ctypes.c_double + + # double GetCalWavelength(long ba, double WL) + dll.GetCalWavelength.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetCalWavelength.restype = ctypes.c_double + + # double GetCalibrationEffect(double CE) + dll.GetCalibrationEffect.argtypes = [ ctypes.c_double ] + dll.GetCalibrationEffect.restype = ctypes.c_double + + # double GetFrequency(double F) + dll.GetFrequency.argtypes = [ ctypes.c_double ] + dll.GetFrequency.restype = ctypes.c_double + + # double GetFrequency2(double F2) + dll.GetFrequency2.argtypes = [ ctypes.c_double ] + dll.GetFrequency2.restype = ctypes.c_double + + # double GetFrequencyNum(long num, double F) + dll.GetFrequencyNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetFrequencyNum.restype = ctypes.c_double + + # double GetLinewidth(long Index, double LW) + dll.GetLinewidth.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetLinewidth.restype = ctypes.c_double + + # double GetLinewidthNum(long num, double LW) + dll.GetLinewidthNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetLinewidthNum.restype = ctypes.c_double + + # double GetDistance(double D) + dll.GetDistance.argtypes = [ ctypes.c_double ] + dll.GetDistance.restype = ctypes.c_double + + # double GetAnalogIn(double AI) + dll.GetAnalogIn.argtypes = [ ctypes.c_double ] + dll.GetAnalogIn.restype = ctypes.c_double + + # double GetTemperature(double T) + dll.GetTemperature.argtypes = [ ctypes.c_double ] + dll.GetTemperature.restype = ctypes.c_double + + # long SetTemperature(double T) + dll.SetTemperature.argtypes = [ ctypes.c_double ] + dll.SetTemperature.restype = ctypes.c_long + + # double GetPressure(double P) + dll.GetPressure.argtypes = [ ctypes.c_double ] + dll.GetPressure.restype = ctypes.c_double + + # long SetPressure(long Mode, double P) + dll.SetPressure.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.SetPressure.restype = ctypes.c_long + + # double GetExternalInput(long Index, double I) + dll.GetExternalInput.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetExternalInput.restype = ctypes.c_double + + # long SetExternalInput(long Index, double I) + dll.SetExternalInput.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.SetExternalInput.restype = ctypes.c_long + + # long GetExtraSetting(long Index, lref lGet, dref dGet, sref sGet) + dll.GetExtraSetting.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double), ctypes.c_char_p ] + dll.GetExtraSetting.restype = ctypes.c_long + + # long SetExtraSetting(long Index, long lSet, double dSet, sref sSet) + dll.SetExtraSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_double, ctypes.c_char_p ] + dll.SetExtraSetting.restype = ctypes.c_long + + # unsigned short GetExposure(unsigned short E) + dll.GetExposure.argtypes = [ ctypes.c_ushort ] + dll.GetExposure.restype = ctypes.c_ushort + + # long SetExposure(unsigned short E) + dll.SetExposure.argtypes = [ ctypes.c_ushort ] + dll.SetExposure.restype = ctypes.c_long + + # unsigned short GetExposure2(unsigned short E2) + dll.GetExposure2.argtypes = [ ctypes.c_ushort ] + dll.GetExposure2.restype = ctypes.c_ushort + + # long SetExposure2(unsigned short E2) + dll.SetExposure2.argtypes = [ ctypes.c_ushort ] + dll.SetExposure2.restype = ctypes.c_long + + # long GetExposureNum(long num, long arr, long E) + dll.GetExposureNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.GetExposureNum.restype = ctypes.c_long + + # long SetExposureNum(long num, long arr, long E) + dll.SetExposureNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetExposureNum.restype = ctypes.c_long + + # double GetExposureNumEx(long num, long arr, double E) + dll.GetExposureNumEx.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_double ] + dll.GetExposureNumEx.restype = ctypes.c_double + + # long SetExposureNumEx(long num, long arr, double E) + dll.SetExposureNumEx.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_double ] + dll.SetExposureNumEx.restype = ctypes.c_long + + # bool GetExposureMode(bool EM) + dll.GetExposureMode.argtypes = [ ctypes.c_bool ] + dll.GetExposureMode.restype = ctypes.c_bool + + # long SetExposureMode(bool EM) + dll.SetExposureMode.argtypes = [ ctypes.c_bool ] + dll.SetExposureMode.restype = ctypes.c_long + + # long GetExposureModeNum(long num, bool EM) + dll.GetExposureModeNum.argtypes = [ ctypes.c_long, ctypes.c_bool ] + dll.GetExposureModeNum.restype = ctypes.c_long + + # long SetExposureModeNum(long num, bool EM) + dll.SetExposureModeNum.argtypes = [ ctypes.c_long, ctypes.c_bool ] + dll.SetExposureModeNum.restype = ctypes.c_long + + # long GetExposureRange(long ER) + dll.GetExposureRange.argtypes = [ ctypes.c_long ] + dll.GetExposureRange.restype = ctypes.c_long + + # long GetAutoExposureSetting(long num, long AES, lref iVal, dref dVal) + dll.GetAutoExposureSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double) ] + dll.GetAutoExposureSetting.restype = ctypes.c_long + + # long SetAutoExposureSetting(long num, long AES, long iVal, double dVal) + dll.SetAutoExposureSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_double ] + dll.SetAutoExposureSetting.restype = ctypes.c_long + + # unsigned short GetResultMode(unsigned short RM) + dll.GetResultMode.argtypes = [ ctypes.c_ushort ] + dll.GetResultMode.restype = ctypes.c_ushort + + # long SetResultMode(unsigned short RM) + dll.SetResultMode.argtypes = [ ctypes.c_ushort ] + dll.SetResultMode.restype = ctypes.c_long + + # unsigned short GetRange(unsigned short R) + dll.GetRange.argtypes = [ ctypes.c_ushort ] + dll.GetRange.restype = ctypes.c_ushort + + # long SetRange(unsigned short R) + dll.SetRange.argtypes = [ ctypes.c_ushort ] + dll.SetRange.restype = ctypes.c_long + + # unsigned short GetPulseMode(unsigned short PM) + dll.GetPulseMode.argtypes = [ ctypes.c_ushort ] + dll.GetPulseMode.restype = ctypes.c_ushort + + # long SetPulseMode(unsigned short PM) + dll.SetPulseMode.argtypes = [ ctypes.c_ushort ] + dll.SetPulseMode.restype = ctypes.c_long + + # long GetPulseDelay(long PD) + dll.GetPulseDelay.argtypes = [ ctypes.c_long ] + dll.GetPulseDelay.restype = ctypes.c_long + + # long SetPulseDelay(long PD) + dll.SetPulseDelay.argtypes = [ ctypes.c_long ] + dll.SetPulseDelay.restype = ctypes.c_long + + # unsigned short GetWideMode(unsigned short WM) + dll.GetWideMode.argtypes = [ ctypes.c_ushort ] + dll.GetWideMode.restype = ctypes.c_ushort + + # long SetWideMode(unsigned short WM) + dll.SetWideMode.argtypes = [ ctypes.c_ushort ] + dll.SetWideMode.restype = ctypes.c_long + + # long GetDisplayMode(long DM) + dll.GetDisplayMode.argtypes = [ ctypes.c_long ] + dll.GetDisplayMode.restype = ctypes.c_long + + # long SetDisplayMode(long DM) + dll.SetDisplayMode.argtypes = [ ctypes.c_long ] + dll.SetDisplayMode.restype = ctypes.c_long + + # bool GetFastMode(bool FM) + dll.GetFastMode.argtypes = [ ctypes.c_bool ] + dll.GetFastMode.restype = ctypes.c_bool + + # long SetFastMode(bool FM) + dll.SetFastMode.argtypes = [ ctypes.c_bool ] + dll.SetFastMode.restype = ctypes.c_long + + # bool GetLinewidthMode(bool LM) + dll.GetLinewidthMode.argtypes = [ ctypes.c_bool ] + dll.GetLinewidthMode.restype = ctypes.c_bool + + # long SetLinewidthMode(bool LM) + dll.SetLinewidthMode.argtypes = [ ctypes.c_bool ] + dll.SetLinewidthMode.restype = ctypes.c_long + + # bool GetDistanceMode(bool DM) + dll.GetDistanceMode.argtypes = [ ctypes.c_bool ] + dll.GetDistanceMode.restype = ctypes.c_bool + + # long SetDistanceMode(bool DM) + dll.SetDistanceMode.argtypes = [ ctypes.c_bool ] + dll.SetDistanceMode.restype = ctypes.c_long + + # long GetSwitcherMode(long SM) + dll.GetSwitcherMode.argtypes = [ ctypes.c_long ] + dll.GetSwitcherMode.restype = ctypes.c_long + + # long SetSwitcherMode(long SM) + dll.SetSwitcherMode.argtypes = [ ctypes.c_long ] + dll.SetSwitcherMode.restype = ctypes.c_long + + # long GetSwitcherChannel(long CH) + dll.GetSwitcherChannel.argtypes = [ ctypes.c_long ] + dll.GetSwitcherChannel.restype = ctypes.c_long + + # long SetSwitcherChannel(long CH) + dll.SetSwitcherChannel.argtypes = [ ctypes.c_long ] + dll.SetSwitcherChannel.restype = ctypes.c_long + + # long GetSwitcherSignalStates(long Signal, lref Use, lref Show) + dll.GetSwitcherSignalStates.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_long) ] + dll.GetSwitcherSignalStates.restype = ctypes.c_long + + # long SetSwitcherSignalStates(long Signal, long Use, long Show) + dll.SetSwitcherSignalStates.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetSwitcherSignalStates.restype = ctypes.c_long + + # long SetSwitcherSignal(long Signal, long Use, long Show) + dll.SetSwitcherSignal.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetSwitcherSignal.restype = ctypes.c_long + + # long GetAutoCalMode(long ACM) + dll.GetAutoCalMode.argtypes = [ ctypes.c_long ] + dll.GetAutoCalMode.restype = ctypes.c_long + + # long SetAutoCalMode(long ACM) + dll.SetAutoCalMode.argtypes = [ ctypes.c_long ] + dll.SetAutoCalMode.restype = ctypes.c_long + + # long GetAutoCalSetting(long ACS, lref val, long Res1, lref Res2) + dll.GetAutoCalSetting.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.c_long, ctypes.POINTER(ctypes.c_long) ] + dll.GetAutoCalSetting.restype = ctypes.c_long + + # long SetAutoCalSetting(long ACS, long val, long Res1, long Res2) + dll.SetAutoCalSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetAutoCalSetting.restype = ctypes.c_long + + # long GetActiveChannel(long Mode, lref Port, long Res1) + dll.GetActiveChannel.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.c_long ] + dll.GetActiveChannel.restype = ctypes.c_long + + # long SetActiveChannel(long Mode, long Port, long CH, long Res1) + dll.SetActiveChannel.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetActiveChannel.restype = ctypes.c_long + + # long GetChannelsCount(long C) + dll.GetChannelsCount.argtypes = [ ctypes.c_long ] + dll.GetChannelsCount.restype = ctypes.c_long + + # unsigned short GetOperationState(unsigned short OS) + dll.GetOperationState.argtypes = [ ctypes.c_ushort ] + dll.GetOperationState.restype = ctypes.c_ushort + + # long Operation(unsigned short Op) + dll.Operation.argtypes = [ ctypes.c_ushort ] + dll.Operation.restype = ctypes.c_long + + # long SetOperationFile(sref lpFile) + dll.SetOperationFile.argtypes = [ ctypes.c_char_p ] + dll.SetOperationFile.restype = ctypes.c_long + + # long Calibration(long Type, long Unit, double Value, long Channel) + dll.Calibration.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_double, ctypes.c_long ] + dll.Calibration.restype = ctypes.c_long + + # long RaiseMeasurementEvent(long Mode) + dll.RaiseMeasurementEvent.argtypes = [ ctypes.c_long ] + dll.RaiseMeasurementEvent.restype = ctypes.c_long + + # long TriggerMeasurement(long Action) + dll.TriggerMeasurement.argtypes = [ ctypes.c_long ] + dll.TriggerMeasurement.restype = ctypes.c_long + + # long GetTriggerState(long TS) + dll.GetTriggerState.argtypes = [ ctypes.c_long ] + dll.GetTriggerState.restype = ctypes.c_long + + # long GetInterval(long I) + dll.GetInterval.argtypes = [ ctypes.c_long ] + dll.GetInterval.restype = ctypes.c_long + + # long SetInterval(long I) + dll.SetInterval.argtypes = [ ctypes.c_long ] + dll.SetInterval.restype = ctypes.c_long + + # bool GetIntervalMode(bool IM) + dll.GetIntervalMode.argtypes = [ ctypes.c_bool ] + dll.GetIntervalMode.restype = ctypes.c_bool + + # long SetIntervalMode(bool IM) + dll.SetIntervalMode.argtypes = [ ctypes.c_bool ] + dll.SetIntervalMode.restype = ctypes.c_long + + # long GetBackground(long BG) + dll.GetBackground.argtypes = [ ctypes.c_long ] + dll.GetBackground.restype = ctypes.c_long + + # long SetBackground(long BG) + dll.SetBackground.argtypes = [ ctypes.c_long ] + dll.SetBackground.restype = ctypes.c_long + + # long GetAveragingSettingNum(long num, long AS, long Value) + dll.GetAveragingSettingNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.GetAveragingSettingNum.restype = ctypes.c_long + + # long SetAveragingSettingNum(long num, long AS, long Value) + dll.SetAveragingSettingNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.SetAveragingSettingNum.restype = ctypes.c_long + + # bool GetLinkState(bool LS) + dll.GetLinkState.argtypes = [ ctypes.c_bool ] + dll.GetLinkState.restype = ctypes.c_bool + + # long SetLinkState(bool LS) + dll.SetLinkState.argtypes = [ ctypes.c_bool ] + dll.SetLinkState.restype = ctypes.c_long + + # void LinkSettingsDlg(void) + dll.LinkSettingsDlg.argtypes = [ ] + dll.LinkSettingsDlg.restype = None + + # long GetPatternItemSize(long Index) + dll.GetPatternItemSize.argtypes = [ ctypes.c_long ] + dll.GetPatternItemSize.restype = ctypes.c_long + + # long GetPatternItemCount(long Index) + dll.GetPatternItemCount.argtypes = [ ctypes.c_long ] + dll.GetPatternItemCount.restype = ctypes.c_long + + # ULONG_PTR GetPattern(long Index) + dll.GetPattern.argtypes = [ ctypes.c_long ] + dll.GetPattern.restype = ctypes.POINTER(ctypes.c_ulong) + + # ULONG_PTR GetPatternNum(long Chn, long Index) + dll.GetPatternNum.argtypes = [ ctypes.c_long, ctypes.c_long ] + dll.GetPatternNum.restype = ctypes.POINTER(ctypes.c_ulong) + + # long GetPatternData(long Index, ULONG_PTR PArray) + dll.GetPatternData.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_short) ] + dll.GetPatternData.restype = ctypes.c_long + + # long GetPatternDataNum(long Chn, long Index, ULONG_PTR PArray) + dll.GetPatternDataNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.POINTER(ctypes.c_short) ] + dll.GetPatternDataNum.restype = ctypes.c_long + + # long SetPattern(long Index, long iEnable) + dll.SetPattern.argtypes = [ ctypes.c_long, ctypes.c_long ] + dll.SetPattern.restype = ctypes.c_long + + # long SetPatternData(long Index, ULONG_PTR PArray) + dll.SetPatternData.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_ulong) ] + dll.SetPatternData.restype = ctypes.c_long + + # bool GetAnalysisMode(bool AM) + dll.GetAnalysisMode.argtypes = [ ctypes.c_bool ] + dll.GetAnalysisMode.restype = ctypes.c_bool + + # long SetAnalysisMode(bool AM) + dll.SetAnalysisMode.argtypes = [ ctypes.c_bool ] + dll.SetAnalysisMode.restype = ctypes.c_long + + # long GetAnalysisItemSize(long Index) + dll.GetAnalysisItemSize.argtypes = [ ctypes.c_long ] + dll.GetAnalysisItemSize.restype = ctypes.c_long + + # long GetAnalysisItemCount(long Index) + dll.GetAnalysisItemCount.argtypes = [ ctypes.c_long ] + dll.GetAnalysisItemCount.restype = ctypes.c_long + + # ULONG_PTR GetAnalysis(long Index) + dll.GetAnalysis.argtypes = [ ctypes.c_long ] + dll.GetAnalysis.restype = ctypes.POINTER(ctypes.c_ulong) + + # long GetAnalysisData(long Index, ULONG_PTR PArray) + dll.GetAnalysisData.argtypes = [ ctypes.c_long, ctypes.POINTER(ctypes.c_double) ] + dll.GetAnalysisData.restype = ctypes.c_long + + # long SetAnalysis(long Index, long iEnable) + dll.SetAnalysis.argtypes = [ ctypes.c_long, ctypes.c_long ] + dll.SetAnalysis.restype = ctypes.c_long + + # long GetMinPeak(long M1) + dll.GetMinPeak.argtypes = [ ctypes.c_long ] + dll.GetMinPeak.restype = ctypes.c_long + + # long GetMinPeak2(long M2) + dll.GetMinPeak2.argtypes = [ ctypes.c_long ] + dll.GetMinPeak2.restype = ctypes.c_long + + # long GetMaxPeak(long X1) + dll.GetMaxPeak.argtypes = [ ctypes.c_long ] + dll.GetMaxPeak.restype = ctypes.c_long + + # long GetMaxPeak2(long X2) + dll.GetMaxPeak2.argtypes = [ ctypes.c_long ] + dll.GetMaxPeak2.restype = ctypes.c_long + + # long GetAvgPeak(long A1) + dll.GetAvgPeak.argtypes = [ ctypes.c_long ] + dll.GetAvgPeak.restype = ctypes.c_long + + # long GetAvgPeak2(long A2) + dll.GetAvgPeak2.argtypes = [ ctypes.c_long ] + dll.GetAvgPeak2.restype = ctypes.c_long + + # long SetAvgPeak(long PA) + dll.SetAvgPeak.argtypes = [ ctypes.c_long ] + dll.SetAvgPeak.restype = ctypes.c_long + + # long GetAmplitudeNum(long num, long Index, long A) + dll.GetAmplitudeNum.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.GetAmplitudeNum.restype = ctypes.c_long + + # double GetIntensityNum(long num, double I) + dll.GetIntensityNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetIntensityNum.restype = ctypes.c_double + + # double GetPowerNum(long num, double P) + dll.GetPowerNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetPowerNum.restype = ctypes.c_double + + # unsigned short GetDelay(unsigned short D) + dll.GetDelay.argtypes = [ ctypes.c_ushort ] + dll.GetDelay.restype = ctypes.c_ushort + + # long SetDelay(unsigned short D) + dll.SetDelay.argtypes = [ ctypes.c_ushort ] + dll.SetDelay.restype = ctypes.c_long + + # unsigned short GetShift(unsigned short S) + dll.GetShift.argtypes = [ ctypes.c_ushort ] + dll.GetShift.restype = ctypes.c_ushort + + # long SetShift(unsigned short S) + dll.SetShift.argtypes = [ ctypes.c_ushort ] + dll.SetShift.restype = ctypes.c_long + + # unsigned short GetShift2(unsigned short S2) + dll.GetShift2.argtypes = [ ctypes.c_ushort ] + dll.GetShift2.restype = ctypes.c_ushort + + # long SetShift2(unsigned short S2) + dll.SetShift2.argtypes = [ ctypes.c_ushort ] + dll.SetShift2.restype = ctypes.c_long + + # bool GetDeviationMode(bool DM) + dll.GetDeviationMode.argtypes = [ ctypes.c_bool ] + dll.GetDeviationMode.restype = ctypes.c_bool + + # long SetDeviationMode(bool DM) + dll.SetDeviationMode.argtypes = [ ctypes.c_bool ] + dll.SetDeviationMode.restype = ctypes.c_long + + # double GetDeviationReference(double DR) + dll.GetDeviationReference.argtypes = [ ctypes.c_double ] + dll.GetDeviationReference.restype = ctypes.c_double + + # long SetDeviationReference(double DR) + dll.SetDeviationReference.argtypes = [ ctypes.c_double ] + dll.SetDeviationReference.restype = ctypes.c_long + + # long GetDeviationSensitivity(long DS) + dll.GetDeviationSensitivity.argtypes = [ ctypes.c_long ] + dll.GetDeviationSensitivity.restype = ctypes.c_long + + # long SetDeviationSensitivity(long DS) + dll.SetDeviationSensitivity.argtypes = [ ctypes.c_long ] + dll.SetDeviationSensitivity.restype = ctypes.c_long + + # double GetDeviationSignal(double DS) + dll.GetDeviationSignal.argtypes = [ ctypes.c_double ] + dll.GetDeviationSignal.restype = ctypes.c_double + + # double GetDeviationSignalNum(long Port, double DS) + dll.GetDeviationSignalNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.GetDeviationSignalNum.restype = ctypes.c_double + + # long SetDeviationSignal(double DS) + dll.SetDeviationSignal.argtypes = [ ctypes.c_double ] + dll.SetDeviationSignal.restype = ctypes.c_long + + # long SetDeviationSignalNum(long Port, double DS) + dll.SetDeviationSignalNum.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.SetDeviationSignalNum.restype = ctypes.c_long + + # double RaiseDeviationSignal(long iType, double dSignal) + dll.RaiseDeviationSignal.argtypes = [ ctypes.c_long, ctypes.c_double ] + dll.RaiseDeviationSignal.restype = ctypes.c_double + + # long GetPIDCourse(sref PIDC) + dll.GetPIDCourse.argtypes = [ ctypes.c_char_p ] + dll.GetPIDCourse.restype = ctypes.c_long + + # long SetPIDCourse(sref PIDC) + dll.SetPIDCourse.argtypes = [ ctypes.c_char_p ] + dll.SetPIDCourse.restype = ctypes.c_long + + # long GetPIDCourseNum(long Port, sref PIDC) + dll.GetPIDCourseNum.argtypes = [ ctypes.c_long, ctypes.c_char_p ] + dll.GetPIDCourseNum.restype = ctypes.c_long + + # long SetPIDCourseNum(long Port, sref PIDC) + dll.SetPIDCourseNum.argtypes = [ ctypes.c_long, ctypes.c_char_p ] + dll.SetPIDCourseNum.restype = ctypes.c_long + + # long GetPIDSetting(long PS, long Port, lref iSet, dref dSet) + dll.GetPIDSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double) ] + dll.GetPIDSetting.restype = ctypes.c_long + + # long SetPIDSetting(long PS, long Port, long iSet, double dSet) + dll.SetPIDSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_double ] + dll.SetPIDSetting.restype = ctypes.c_long + + # long GetLaserControlSetting(long PS, long Port, lref iSet, dref dSet, sref sSet) + dll.GetLaserControlSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.POINTER(ctypes.c_long), ctypes.POINTER(ctypes.c_double), ctypes.c_char_p ] + dll.GetLaserControlSetting.restype = ctypes.c_long + + # long SetLaserControlSetting(long PS, long Port, long iSet, double dSet, sref sSet) + dll.SetLaserControlSetting.argtypes = [ ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_double, ctypes.c_char_p ] + dll.SetLaserControlSetting.restype = ctypes.c_long + + # long ClearPIDHistory(long Port) + dll.ClearPIDHistory.argtypes = [ ctypes.c_long ] + dll.ClearPIDHistory.restype = ctypes.c_long + + # double ConvertUnit(double Val, long uFrom, long uTo) + dll.ConvertUnit.argtypes = [ ctypes.c_double, ctypes.c_long, ctypes.c_long ] + dll.ConvertUnit.restype = ctypes.c_double + + # double ConvertDeltaUnit(double Base, double Delta, long uBase, long uFrom, long uTo) + dll.ConvertDeltaUnit.argtypes = [ ctypes.c_double, ctypes.c_double, ctypes.c_long, ctypes.c_long, ctypes.c_long ] + dll.ConvertDeltaUnit.restype = ctypes.c_double + + # bool GetReduced(bool R) + dll.GetReduced.argtypes = [ ctypes.c_bool ] + dll.GetReduced.restype = ctypes.c_bool + + # long SetReduced(bool R) + dll.SetReduced.argtypes = [ ctypes.c_bool ] + dll.SetReduced.restype = ctypes.c_long + + # unsigned short GetScale(unsigned short S) + dll.GetScale.argtypes = [ ctypes.c_ushort ] + dll.GetScale.restype = ctypes.c_ushort + + # long SetScale(unsigned short S) + dll.SetScale.argtypes = [ ctypes.c_ushort ] + dll.SetScale.restype = ctypes.c_long +