def _get_trigger_direction_from_name(direction_name): """Return the trigger direction from the direction name.""" PS3000A_THRESHOLD_DIRECTION = make_enum([ ("PS3000A_ABOVE", "PS3000A_INSIDE"), ("PS3000A_BELOW", "PS3000A_OUTSIDE"), ("PS3000A_RISING", "PS3000A_ENTER", "PS3000A_NONE"), ("PS3000A_FALLING", "PS3000A_EXIT"), ("PS3000A_RISING_OR_FALLING", "PS3000A_ENTER_OR_EXIT"), "PS3000A_ABOVE_LOWER", "PS3000A_BELOW_LOWER", "PS3000A_RISING_LOWER", "PS3000A_FALLING_LOWER", "PS3000A_POSITIVE_RUNT", "PS3000A_NEGATIVE_RUNT", ]) if direction_name in [ 'ABOVE', 'BELOW', 'RISING', 'FALLING', 'RISING_OR_FALLING' ]: def_name = f"PS3000A_{direction_name}" else: raise InvalidParameterError(f"Trigger direction {direction_name} is " "not supported") return PS3000A_THRESHOLD_DIRECTION[def_name]
class Ps6000lib(Library): def __init__(self): super(Ps6000lib, self).__init__("ps6000") ps6000 = Ps6000lib() ps6000.PS6000_RANGE = make_enum([ "PS6000A_10MV", "PS6000_20MV", "PS6000_50MV", "PS6000_100MV", "PS6000_200MV", "PS6000_500MV", "PS6000_1V", "PS6000_2V", "PS6000_5V", "PS6000_10V", "PS6000_20V", "PS6000_50V", "PS6000_MAX_RANGES", ]) ps6000.PS6000_CHANNEL = make_enum([ "PS6000_CHANNEL_A", "PS6000_CHANNEL_B", "PS6000_CHANNEL_C", "PS6000_CHANNEL_D", ("PS6000_EXTERNAL", "PS6000_MAX_CHANNELS"), "PS6000_TRIGGER_AUX",
from picosdk.ctypes_wrapper import C_CALLBACK_FUNCTION_FACTORY from picosdk.library import Library from picosdk.constants import make_enum class Ps5000alib(Library): def __init__(self): super(Ps5000alib, self).__init__("ps5000a") ps5000a = Ps5000alib() ps5000a.PS5000A_DEVICE_RESOLUTION = make_enum([ "PS5000A_DR_8BIT", "PS5000A_DR_12BIT", "PS5000A_DR_14BIT", "PS5000A_DR_15BIT", "PS5000A_DR_16BIT", ]) ps5000a.DEFAULT_RESOLUTION = ps5000a.PS5000A_DEVICE_RESOLUTION[ "PS5000A_DR_8BIT"] ps5000a.PS5000A_COUPLING = make_enum([ 'PS5000A_AC', 'PS5000A_DC', ]) # Just use AC and DC. ps5000a.PICO_COUPLING = { k[-2:]: v
from picosdk.constants import make_enum class Ps2000alib(Library): def __init__(self): super(Ps2000alib, self).__init__("ps2000a") ps2000a = Ps2000alib() # A tuple in an enum like this is 2 names for the same value. ps2000a.PS2000A_CHANNEL = make_enum([ "PS2000A_CHANNEL_A", "PS2000A_CHANNEL_B", "PS2000A_CHANNEL_C", "PS2000A_CHANNEL_D", ("PS2000A_EXTERNAL", "PS2000A_MAX_CHANNELS"), "PS2000A_TRIGGER_AUX", "PS2000A_MAX_TRIGGER_SOURCE", ]) # only include the normal analog channels for now: ps2000a.PICO_CHANNEL = { k[-1]: v for k, v in ps2000a.PS2000A_CHANNEL.items() if "PS2000A_CHANNEL_" in k } ps2000a.PS2000A_COUPLING = make_enum([ 'PS2000A_AC', 'PS2000A_DC', ])
"USB_DRDAQ_CHANNEL_PH": 5, "USB_DRDAQ_CHANNEL_RES": 6, "USB_DRDAQ_CHANNEL_LIGHT": 7, "USB_DRDAQ_CHANNEL_TEMP": 8, "USB_DRDAQ_CHANNEL_MIC_WAVE": 9, ("USB_DRDAQ_CHANNEL_MIC_LEVEL", "USB_DRDAQ_MAX_CHANNELS"): 10, } usbDrDaq.USB_DRDAQ_GPIO = { "USB_DRDAQ_GPIO_1": 1, "USB_DRDAQ_GPIO_2": 2, "USB_DRDAQ_GPIO_3": 3, "USB_DRDAQ_GPIO_4": 4 } usbDrDaq.USB_DRDAQ_SCOPE_RANGE = make_enum( ["USB_DRDAQ_1V25", "USB_DRDAQ_2V5", "USB_DRDAQ_5V", "USB_DRDAQ_10V"]) usbDrDaq.USB_DRDAQ_WAVE = make_enum([ "USB_DRDAQ_SINE", "USB_DRDAQ_SQUARE", "USB_DRDAQ_TRIANGLE", "USB_DRDAQ_RAMP_UP", "USB_DRDAQ_RAMP_DOWN", "USB_DRDAQ_DC" ]) usbDrDaq.USB_DRDAQ_BLOCK_METHOD = make_enum( ["BM_SINGLE", "BM_WINDOW", "BM_STREAM"]) doc = """ PICO_STATUS UsbDrDaqCloseUnit ( int16_t handle ); """ usbDrDaq.make_symbol("_CloseUnit", "UsbDrDaqCloseUnit", c_uint32, [c_int16], doc)
from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps5000alib(Library): def __init__(self): super(Ps5000alib, self).__init__("ps5000a") ps5000a = Ps5000alib() ps5000a.PS5000A_DEVICE_RESOLUTION = make_enum([ "PS5000A_DR_8BIT", "PS5000A_DR_12BIT", "PS5000A_DR_14BIT", "PS5000A_DR_15BIT", "PS5000A_DR_16BIT", ]) ps5000a.DEFAULT_RESOLUTION = ps5000a.PS5000A_DEVICE_RESOLUTION["PS5000A_DR_8BIT"] ps5000a.PS5000A_COUPLING = make_enum([ 'PS5000A_AC', 'PS5000A_DC', ]) # Just use AC and DC. ps5000a.PICO_COUPLING = {k[-2:]: v for k, v in ps5000a.PS5000A_COUPLING.items()} # A tuple in an enum like this is 2 names for the same value.
from picosdk.library import Library from picosdk.constants import make_enum class Ps5000lib(Library): def __init__(self): super(Ps5000lib, self).__init__("ps5000") ps5000 = Ps5000lib() ps5000.PS5000_CHANNEL = make_enum([ "PS5000_CHANNEL_A", "PS5000_CHANNEL_B", "PS5000_CHANNEL_C", "PS5000_CHANNEL_D", ("PS5000_MAX_CHANNELS", "PS5000_EXTERNAL"), "PS5000_TRIGGER_AUX", "PS5000_MAX_TRIGGER_SOURCES", ]) ps5000.PS5000_RANGE = make_enum([ "PS5000_10MV", "PS5000_20MV", "PS5000_50MV", "PS5000_100MV", "PS5000_200MV", "PS5000_1V", "PS5000_2V", "PS5000_5V", "PS5000_10V",
PL1000_CHANNEL_15 = 15 PL1000_CHANNEL_16 = 16 PL1000_MAX_CHANNEL = PL1000_CHANNEL_16 return { k.upper(): v for k, v in locals().items() if k.startswith("PL1000") } pl1000.PL1000Inputs = _pl1000Inputs() pl1000.PL1000DO_Channel = make_enum([ 'PL1000_DO_CHANNEL_0', 'PL1000_DO_CHANNEL_1', 'PL1000_DO_CHANNEL_2', 'PL1000_DO_CHANNEL_3', 'PL1000_DO_CHANNEL_MAX', ]) pl1000.PL1000OpenProgress = { 'PL1000_OPEN_PROGRESS_FAIL': -1, 'PL1000_OPEN_PROGRESS_PENDING': 0, 'PL1000_OPEN_PROGRESS_COMPLETE': 1, } pl1000.PL1000_BLOCK_METHOD = make_enum([ "BM_SINGLE", "BM_WINDOW", "BM_STREAM", ])
PICO_CHANNEL_H_FLAGS = 128 PICO_PORT0_FLAGS = 65536 PICO_PORT1_FLAGS = 131072 PICO_PORT2_FLAGS = 262144 PICO_PORT3_FLAGS = 524288 return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")} picoEnum.PICO_CHANNEL_FLAGS = _define_channel_flags() picoEnum.PICO_PORT_DIGITAL_CHANNEL = make_enum([ "PICO_PORT_DIGITAL_CHANNEL0", "PICO_PORT_DIGITAL_CHANNEL1", "PICO_PORT_DIGITAL_CHANNEL2", "PICO_PORT_DIGITAL_CHANNEL3", "PICO_PORT_DIGITAL_CHANNEL4" "PICO_PORT_DIGITAL_CHANNEL5", "PICO_PORT_DIGITAL_CHANNEL6", "PICO_PORT_DIGITAL_CHANNEL7", ]) picoEnum.PICO_DATA_TYPE = make_enum([ "PICO_INT8_T", "PICO_INT16_T", "PICO_INT32_T", "PICO_UINT32_T", "PICO_INT64_T", ]) def _define_coupling():
from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps5000alib(Library): def __init__(self): super(Ps5000alib, self).__init__("ps5000a") ps5000a = Ps5000alib() ps5000a.PS5000A_DEVICE_RESOLUTION = make_enum([ "PS5000A_DR_8BIT", "PS5000A_DR_12BIT", "PS5000A_DR_14BIT", "PS5000A_DR_15BIT", "PS5000A_DR_16BIT", ]) ps5000a.DEFAULT_RESOLUTION = ps5000a.PS5000A_DEVICE_RESOLUTION[ "PS5000A_DR_8BIT"] ps5000a.PS5000A_COUPLING = make_enum([ 'PS5000A_AC', 'PS5000A_DC', ]) # Just use AC and DC. ps5000a.PICO_COUPLING = { k[-2:]: v
PL1000_CHANNEL_15 = 15 PL1000_CHANNEL_16 = 16 PL1000_MAX_CHANNEL = PL1000_CHANNEL_16 return { k.upper(): v for k, v in locals().items() if k.startswith("PL1000") } pl1000.PL1000Inputs = _pl1000Inputs() pl1000.PL1000DO_Channel = make_enum([ 'PL1000_DO_CHANNEL_0', 'PL1000_DO_CHANNEL_1', 'PL1000_DO_CHANNEL_2', 'PL1000_DO_CHANNEL_3', 'PL1000_DO_CHANNEL_MAX', ]) pl1000.PL1000OpenProgress = { 'PL1000_OPEN_PROGRESS_FAIL': -1, 'PL1000_OPEN_PROGRESS_PENDING': 0, 'PL1000_OPEN_PROGRESS_COMPLETE': 1, } doc = """ PICO_STATUS pl1000CloseUnit ( int16_t handle ); """ pl1000.make_symbol("_CloseUnit_", "pl1000CloseUnit", c_uint32, [c_int16], doc)
""" from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps3000alib(Library): def __init__(self): super(Ps3000alib, self).__init__("ps3000a") ps3000a = Ps3000alib() ps3000a.PS3000A_COUPLING = make_enum([ 'PS3000A_AC', 'PS3000A_DC', ]) # Just use AC and DC. ps3000a.PICO_COUPLING = { k[-2:]: v for k, v in ps3000a.PS3000A_COUPLING.items() } # A tuple in an enum like this is 2 names for the same value. ps3000a.PS3000A_CHANNEL = make_enum([ "PS3000A_CHANNEL_A", "PS3000A_CHANNEL_B", "PS3000A_CHANNEL_C", "PS3000A_CHANNEL_D", ("PS3000A_EXTERNAL", "PS3000A_MAX_CHANNELS"),
""" from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps3000alib(Library): def __init__(self): super(Ps3000alib, self).__init__("ps3000a") ps3000a = Ps3000alib() ps3000a.PS3000A_COUPLING = make_enum([ 'PS3000A_AC', 'PS3000A_DC', ]) # Just use AC and DC. ps3000a.PICO_COUPLING = {k[-2:]: v for k, v in ps3000a.PS3000A_COUPLING.items()} # A tuple in an enum like this is 2 names for the same value. ps3000a.PS3000A_CHANNEL = make_enum([ "PS3000A_CHANNEL_A", "PS3000A_CHANNEL_B", "PS3000A_CHANNEL_C", "PS3000A_CHANNEL_D", ("PS3000A_EXTERNAL", "PS3000A_MAX_CHANNELS"), "PS3000A_TRIGGER_AUX", "PS3000A_MAX_TRIGGER_SOURCE", ])
from picosdk.errors import ArgumentOutOfRangeError from picosdk.constants import make_enum class picohrdllib(Library): def __init__(self): super(picohrdllib, self).__init__("picohrdl") picohrdl = picohrdllib() picohrdl.HRDL_VOLTAGERANGE = make_enum([ "HRDL_2500_MV", "HRDL_1250_MV", "HRDL_625_MV", "HRDL_313_MV", "HRDL_156_MV", "HRDL_78_MV", "HRDL_39_MV", ]) picohrdl.HRDL_CONVERSIONTIME = make_enum([ "HRDL_60MS", "HRDL_100MS", "HRDL_180MS", "HRDL_340MS", "HRDL_660MS", ]) doc = """ int16_t HRDLCloseUnit (
from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps3000lib(Library): def __init__(self): super(Ps3000lib, self).__init__("ps3000") ps3000 = Ps3000lib() ps3000.PS3000_CHANNEL = make_enum([ "PS3000_CHANNEL_A", "PS3000_CHANNEL_B", "PS3000_CHANNEL_C", "PS3000_CHANNEL_D", ]) # use the last character, i.e. the channel name: ps3000.PICO_CHANNEL = {k[-1]: v for k, v in ps3000.PS3000_CHANNEL.items()} # This field is passed to the driver as a boolean, not an enum. ps3000.PICO_COUPLING = {'AC': 0, 'DC': 1} ps3000.PS3000_VOLTAGE_RANGE = { 'PS3000_20MV': 1, 'PS3000_50MV': 2, 'PS3000_100MV': 3, 'PS3000_200MV': 4, 'PS3000_500MV': 5,
""" from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum class Ps4000alib(Library): def __init__(self): super(Ps4000alib, self).__init__("ps4000a") ps4000a = Ps4000alib() ps4000a.PS4000A_COUPLING = make_enum([ 'PS4000A_AC', 'PS4000A_DC', ]) # Just use AC and DC. ps4000a.PICO_COUPLING = { k[-2:]: v for k, v in ps4000a.PS4000A_COUPLING.items() } # A tuple in an enum like this is 2 names for the same value. ps4000a.PS4000A_CHANNEL = make_enum([ "PS4000A_CHANNEL_A", "PS4000A_CHANNEL_B", "PS4000A_CHANNEL_C", "PS4000A_CHANNEL_D", ("PS4000A_CHANNEL_E", "PS4000A_MAX_4_CHANNELS"),
""" from ctypes import * from picosdk.library import Library, ArgumentOutOfRangeError from picosdk.constants import make_enum class Ps2000lib(Library): def __init__(self): super(Ps2000lib, self).__init__("ps2000") ps2000 = Ps2000lib() ps2000.PS2000_CHANNEL = make_enum([ "PS2000_CHANNEL_A", "PS2000_CHANNEL_B", ]) # use the last character, i.e. the channel name: ps2000.PICO_CHANNEL = {k[-1]: v for k, v in ps2000.PS2000_CHANNEL.items()} # This field is passed to the driver as a boolean, not an enum. ps2000.PICO_COUPLING = { 'AC': 0, 'DC': 1 } ps2000.PS2000_VOLTAGE_RANGE = { 'PS2000_20MV': 1, 'PS2000_50MV': 2, 'PS2000_100MV': 3,
usbPt104.PT104_CHANNELS = { 'USBPT104_CHANNEL_1': 1, 'USBPT104_CHANNEL_2': 2, 'USBPT104_CHANNEL_3': 3, 'USBPT104_CHANNEL_4': 4, 'USBPT104_CHANNEL_5': 5, 'USBPT104_CHANNEL_6': 6, 'USBPT104_CHANNEL_7': 7, 'USBPT104_CHANNEL_8': 8, 'USBPT104_MAX_CHANNELS': 8 } usbPt104.PT104_DATA_TYPE = make_enum([ 'USBPT104_OFF', 'USBPT104_PT100', 'USBPT104_PT1000', 'USBPT104_RESISTANCE_TO_375R', 'USBPT104_RESISTANCE_TO_10K', 'USBPT104_DIFFERENTIAL_TO_115MV', 'USBPT104_DIFFERENTIAL_TO_2500MV', 'USBPT104_SINGLE_ENDED_TO_115MV', 'USBPT104_SINGLE_ENDED_TO_2500MV', 'USBPT104_MAX_DATA_TYPES' ]) usbPt104.IP_DETAILS_TYPE = make_enum(['IDT_GET' 'IDT_SET']) def _define_communication_type(): CT_USB = 0x00000001 CT_ETHERNET = 0x00000002 CT_ALL = 0xFFFFFFFF return {k.upper(): v for k, v in locals().items() if k.startswith("CT")}
from ctypes import * from picosdk.library import Library from picosdk.errors import ArgumentOutOfRangeError from picosdk.constants import make_enum class usbtc08lib(Library): def __init__(self): super(usbtc08lib, self).__init__("usbtc08") usbtc08 = usbtc08lib() usbtc08.USBTC08_UNITS = make_enum([ "USBTC08_UNITS_CENTIGRADE", "USBTC08_UNITS_FAHRENHEIT", "USBTC08_UNITS_KELVIN", "USBTC08_UNITS_RANKINE", ]) class USBTC08_INFO(Structure): _pack_ = 1 _fields_ = [("size", c_int16), ("DriverVersion", c_int8), ("PicoppVersion", c_int16), ("HardwareVersion", c_int16), ("Variant", c_int16), ("szSerial[USBTC08_MAX_SERIAL_CHAR}", c_int8), ("szCalDate[USBTC08_MAX_DATE_CHARS]", c_int8)] doc = """ int16_t usb_tc08_open_unit (
""" from ctypes import * from picosdk.library import Library from picosdk.constants import make_enum from picosdk.ctypes_wrapper import C_CALLBACK_FUNCTION_FACTORY class Ps4000alib(Library): def __init__(self): super(Ps4000alib, self).__init__("ps4000a") ps4000a = Ps4000alib() ps4000a.PS4000A_COUPLING = make_enum([ 'PS4000A_AC', 'PS4000A_DC', ]) # Just use AC and DC. ps4000a.PICO_COUPLING = {k[-2:]: v for k, v in ps4000a.PS4000A_COUPLING.items()} # A tuple in an enum like this is 2 names for the same value. ps4000a.PS4000A_CHANNEL = make_enum([ "PS4000A_CHANNEL_A", "PS4000A_CHANNEL_B", "PS4000A_CHANNEL_C", "PS4000A_CHANNEL_D", ("PS4000A_CHANNEL_E", "PS4000A_MAX_4_CHANNELS"), "PS4000A_CHANNEL_F", "PS4000A_CHANNEL_G", "PS4000A_CHANNEL_H",
ps4000 = Ps4000lib() # This field is passed to the driver as a boolean, not an enum. ps4000.PICO_COUPLING = { 'AC': 0, 'DC': 1 } # A tuple in an enum like this is 2 names for the same value. ps4000.PS4000_CHANNEL = make_enum([ "PS4000_CHANNEL_A", "PS4000_CHANNEL_B", "PS4000_CHANNEL_C", "PS4000_CHANNEL_D", ("PS4000_EXTERNAL", "PS4000_MAX_CHANNELS"), "PS4000_TRIGGER_AUX", "PS4000_MAX_TRIGGER_SOURCE", ]) # only include the normal analog channels for now: ps4000.PICO_CHANNEL = {k[-1]: v for k, v in ps4000.PS4000_CHANNEL.items() if "PS4000_CHANNEL_" in k} ps4000.PS4000_RANGE = make_enum([ "PS4000_10MV", "PS4000_20MV", "PS4000_50MV", "PS4000_100MV", "PS4000_200MV", "PS4000_500MV",
from picosdk.ctypes_wrapper import C_CALLBACK_FUNCTION_FACTORY from picosdk.library import Library from picosdk.constants import make_enum class Ps5000alib(Library): def __init__(self): super(Ps5000alib, self).__init__("ps5000a") ps5000a = Ps5000alib() ps5000a.PS5000A_DEVICE_RESOLUTION = make_enum([ "PS5000A_DR_8BIT", "PS5000A_DR_12BIT", "PS5000A_DR_14BIT", "PS5000A_DR_15BIT", "PS5000A_DR_16BIT", ]) ps5000a.DEFAULT_RESOLUTION = ps5000a.PS5000A_DEVICE_RESOLUTION["PS5000A_DR_8BIT"] ps5000a.PS5000A_COUPLING = make_enum([ 'PS5000A_AC', 'PS5000A_DC', ]) # Just use AC and DC. ps5000a.PICO_COUPLING = {k[-2:]: v for k, v in ps5000a.PS5000A_COUPLING.items()}