Source code for dwfpy.bindings

"""
Python bindings for Digilent WaveForms API.
"""

#
# This file is part of dwfpy: https://github.com/mariusgreuel/dwfpy
# Copyright (C) 2019 Marius Greuel
#
# SPDX-License-Identifier: MIT
#

from ctypes import (
    cdll,
    CFUNCTYPE,
    POINTER,
    c_char,
    c_ubyte,
    c_short,
    c_ushort,
    c_int,
    c_uint,
    c_ulonglong,
    c_double,
    c_void_p,
    c_char_p,
    create_string_buffer,
)
import logging
import sys

_logger = logging.getLogger('dwfpy')


def _load_dwf_library():
    try:
        if sys.platform.startswith('win'):
            path = 'dwf'
        elif sys.platform.startswith('darwin'):
            path = '/Library/Frameworks/dwf.framework/dwf'
        else:
            path = 'libdwf.so'
        _logger.info('Loading library: %s', path)
        return cdll.LoadLibrary(path)
    except OSError as ex:
        _logger.error(
            'Failed to load Digilent WaveForms runtime components.'
            ' You may need to reinstall the WaveForms software: %s',
            ex,
        )
        return FileNotFoundError(f'Failed to load Digilent WaveForms runtime components: {ex}')


_dwf_library = _load_dwf_library()


def _get_dwf_version():
    if isinstance(_dwf_library, Exception):
        return '0.0.0'

    try:
        buffer = create_string_buffer(32)
        _dwf_library.FDwfGetVersion(buffer)
        return buffer.value.decode('ascii')
    except AttributeError as ex:
        raise AttributeError(f'Failed to get Digilent WaveForms version: {ex}') from None


_version_string = _get_dwf_version()
_logger.info('DWF version: %s', _version_string)
_version = tuple(map(int, _version_string.split('.')))


def _default_error_handler(result, _, args):
    if not result:
        raise SystemError()

    return args


_error_handler = _default_error_handler


[docs]def set_error_handler(handler): """Set the error handle for checking the return code of the DWF API.""" # pylint: disable-next=invalid-name # pylint: disable-next=global-statement global _error_handler _error_handler = handler
def _dwf_library_error_handler(*_): raise _dwf_library def _dwf_function(name, *args): def errcheck(result, func, args): _logger.debug('%s%s=%s', function.name, args, result) return args if _error_handler is None else _error_handler(result, func, args) if isinstance(_dwf_library, Exception): return _dwf_library_error_handler argtypes = (arg[1] for arg in args) paramflags = tuple((arg[0], arg[2]) for arg in args) prototype = CFUNCTYPE(c_int, *argtypes) function = prototype((name, _dwf_library), paramflags) function.name = name function.errcheck = errcheck return function _IN = 1 _OUT = 2 HDWF = c_int HDWF_NONE = 0 DwfEnumFilter = c_int ENUMFILTER_ALL = 0 ENUMFILTER_TYPE = 0x8000000 ENUMFILTER_USB = 0x0000001 ENUMFILTER_NETWORK = 0x0000002 ENUMFILTER_AXI = 0x0000004 ENUMFILTER_REMOTE = 0x1000000 ENUMFILTER_AUDIO = 0x2000000 ENUMFILTER_DEMO = 0x4000000 DwfDevId = c_int DEVID_EEXPLORER = 1 DEVID_DISCOVERY = 2 DEVID_DISCOVERY2 = 3 DEVID_DDISCOVERY = 4 DEVID_ADP3X50 = 6 DEVID_ADP5250 = 8 DwfDevVer = c_int DEVVER_EEXPLORER_C = 2 DEVVER_EEXPLORER_E = 4 DEVVER_EEXPLORER_F = 5 DEVVER_DISCOVERY_A = 1 DEVVER_DISCOVERY_B = 2 DEVVER_DISCOVERY_C = 3 DwfTrigSrc = c_ubyte TRIGSRC_NONE = 0 TRIGSRC_PC = 1 TRIGSRC_DETECTOR_ANALOG_IN = 2 TRIGSRC_DETECTOR_DIGITAL_IN = 3 TRIGSRC_ANALOG_IN = 4 TRIGSRC_DIGITAL_IN = 5 TRIGSRC_DIGITAL_OUT = 6 TRIGSRC_ANALOG_OUT1 = 7 TRIGSRC_ANALOG_OUT2 = 8 TRIGSRC_ANALOG_OUT3 = 9 TRIGSRC_ANALOG_OUT4 = 10 TRIGSRC_EXTERNAL1 = 11 TRIGSRC_EXTERNAL2 = 12 TRIGSRC_EXTERNAL3 = 13 TRIGSRC_EXTERNAL4 = 14 TRIGSRC_HIGH = 15 TRIGSRC_LOW = 16 TRIGSRC_CLOCK = 17 DwfState = c_ubyte STATE_READY = 0 STATE_CONFIG = 4 STATE_PREFILL = 5 STATE_ARMED = 1 STATE_WAIT = 7 STATE_TRIGGERED = 3 STATE_RUNNING = 3 STATE_DONE = 2 DwfDeci = c_int DECI_ANALOG_IN_CHANNEL_COUNT = 1 DECI_ANALOG_OUT_CHANNEL_COUNT = 2 DECI_ANALOG_IO_CHANNEL_COUNT = 3 DECI_DIGITAL_IN_CHANNEL_COUNT = 4 DECI_DIGITAL_OUT_CHANNEL_COUNT = 5 DECI_DIGITAL_IO_CHANNEL_COUNT = 6 DECI_ANALOG_IN_BUFFER_SIZE = 7 DECI_ANALOG_OUT_BUFFER_SIZE = 8 DECI_DIGITAL_IN_BUFFER_SIZE = 9 DECI_DIGITAL_OUT_BUFFER_SIZE = 10 DECI_TEXT_INFO = -2 DwfAcqMode = c_int ACQMODE_SINGLE = 0 ACQMODE_SCAN_SHIFT = 1 ACQMODE_SCAN_SCREEN = 2 ACQMODE_RECORD = 3 ACQMODE_OVERS = 4 ACQMODE_SINGLE1 = 5 ACQMODE_RECORD2 = 6 DwfFilter = c_int FILTER_DECIMATE = 0 FILTER_AVERAGE = 1 FILTER_MINMAX = 2 DwfTrigType = c_int TRIGTYPE_EDGE = 0 TRIGTYPE_PULSE = 1 TRIGTYPE_TRANSITION = 2 TRIGTYPE_WINDOW = 3 DwfTriggerSlope = c_int TRIGGER_SLOPE_RISE = 0 TRIGGER_SLOPE_FALL = 1 TRIGGER_SLOPE_EITHER = 2 DwfTrigLen = c_int TRIGLEN_LESS = 0 TRIGLEN_TIMEOUT = 1 TRIGLEN_MORE = 2 DwfErc = c_int DWFERC_NO_ERC = 0 # No error occurred DWFERC_UNKNOWN_ERROR = 1 # API waiting on pending API timed out DWFERC_API_LOCK_TIMEOUT = 2 # API waiting on pending API timed out DWFERC_ALREADY_OPENED = 3 # Device already opened DWFERC_NOT_SUPPORTED = 4 # Device not supported DWFERC_INVALID_PARAMETER0 = 0x10 # Invalid parameter sent in API call DWFERC_INVALID_PARAMETER1 = 0x11 # Invalid parameter sent in API call DWFERC_INVALID_PARAMETER2 = 0x12 # Invalid parameter sent in API call DWFERC_INVALID_PARAMETER3 = 0x13 # Invalid parameter sent in API call DWFERC_INVALID_PARAMETER4 = 0x14 # Invalid parameter sent in API call DwfFunc = c_ubyte FUNC_DC = 0 FUNC_SINE = 1 FUNC_SQUARE = 2 FUNC_TRIANGLE = 3 FUNC_RAMP_UP = 4 FUNC_RAMP_DOWN = 5 FUNC_NOISE = 6 FUNC_PULSE = 7 FUNC_TRAPEZIUM = 8 FUNC_SINE_POWER = 9 FUNC_CUSTOM_PATTERN = 28 FUNC_PLAY_PATTERN = 29 FUNC_CUSTOM = 30 FUNC_PLAY = 31 DwfAnalogIO = c_ubyte ANALOGIO_ENABLE = 1 ANALOGIO_VOLTAGE = 2 ANALOGIO_CURRENT = 3 ANALOGIO_POWER = 4 ANALOGIO_TEMPERATURE = 5 ANALOGIO_DMM = 6 ANALOGIO_RANGE = 7 ANALOGIO_MEASURE = 8 ANALOGIO_TIME = 9 ANALOGIO_FREQUENCY = 10 ANALOGIO_RESISTANCE = 11 DwfDmm = c_int DMM_RESISTANCE = 1 DMM_CONTINUITY = 2 DMM_DIODE = 3 DMM_DC_VOLTAGE = 4 DMM_AC_VOLTAGE = 5 DMM_DC_CURRENT = 6 DMM_AC_CURRENT = 7 DMM_DC_LOW_CURRENT = 8 DMM_AC_LOW_CURRENT = 9 DMM_TEMPERATURE = 10 DwfAnalogOutNode = c_int ANALOG_OUT_NODE_CARRIER = 0 ANALOG_OUT_NODE_FM = 1 ANALOG_OUT_NODE_AM = 2 DwfAnalogOutMode = c_int ANALOG_OUT_MODE_VOLTAGE = 0 ANALOG_OUT_MODE_CURRENT = 1 DwfAnalogOutIdle = c_int ANALOG_OUT_IDLE_DISABLE = 0 ANALOG_OUT_IDLE_OFFSET = 1 ANALOG_OUT_IDLE_INITIAL = 2 DwfDigitalInClockSource = c_int DIGITAL_IN_CLOCK_SOURCE_INTERNAL = 0 DIGITAL_IN_CLOCK_SOURCE_EXTERNAL = 1 DIGITAL_IN_CLOCK_SOURCE_EXTERNAL2 = 2 DwfDigitalInSampleMode = c_int DIGITAL_IN_SAMPLE_MODE_SIMPLE = 0 DIGITAL_IN_SAMPLE_MODE_NOISE = 1 DwfDigitalOutOutput = c_int DIGITAL_OUT_OUTPUT_PUSH_PULL = 0 DIGITAL_OUT_OUTPUT_OPEN_DRAIN = 1 DIGITAL_OUT_OUTPUT_OPEN_SOURCE = 2 DIGITAL_OUT_OUTPUT_THREE_STATE = 3 DwfDigitalOutType = c_int DIGITAL_OUT_TYPE_PULSE = 0 DIGITAL_OUT_TYPE_CUSTOM = 1 DIGITAL_OUT_TYPE_RANDOM = 2 DIGITAL_OUT_TYPE_ROM = 3 DIGITAL_OUT_TYPE_STATE = 4 DIGITAL_OUT_TYPE_PLAY = 5 DwfDigitalOutIdle = c_int DIGITAL_OUT_IDLE_INIT = 0 DIGITAL_OUT_IDLE_LOW = 1 DIGITAL_OUT_IDLE_HIGH = 2 DIGITAL_OUT_IDLE_ZET = 3 DwfAnalogImpedance = c_int ANALOG_IMPEDANCE_IMPEDANCE = 0 # Ohms ANALOG_IMPEDANCE_IMPEDANCE_PHASE = 1 # Radians ANALOG_IMPEDANCE_RESISTANCE = 2 # Ohms ANALOG_IMPEDANCE_REACTANCE = 3 # Ohms ANALOG_IMPEDANCE_ADMITTANCE = 4 # Siemens ANALOG_IMPEDANCE_ADMITTANCE_PHASE = 5 # Radians ANALOG_IMPEDANCE_CONDUCTANCE = 6 # Siemens ANALOG_IMPEDANCE_SUSCEPTANCE = 7 # Siemens ANALOG_IMPEDANCE_SERIES_CAPACITANCE = 8 # Farad ANALOG_IMPEDANCE_PARALLEL_CAPACITANCE = 9 # Farad ANALOG_IMPEDANCE_SERIES_INDUCTANCE = 10 # Henry ANALOG_IMPEDANCE_PARALLEL_INDUCTANCE = 11 # Henry ANALOG_IMPEDANCE_DISSIPATION = 12 # factor ANALOG_IMPEDANCE_QUALITY = 13 # factor ANALOG_IMPEDANCE_VRMS = 14 # Vrms ANALOG_IMPEDANCE_VREAL = 15 # V real ANALOG_IMPEDANCE_VIMAG = 16 # V imag ANALOG_IMPEDANCE_IRMS = 17 # Irms ANALOG_IMPEDANCE_IREAL = 18 # I real ANALOG_IMPEDANCE_IIMAG = 19 # I imag DwfParam = c_int PARAM_USB_POWER = 2 # 1 keep the USB power enabled even when AUX is connected, Analog Discovery 2 PARAM_LED_BRIGHTNESS = 3 # LED brightness 0 ... 100%, Digital Discovery PARAM_ON_CLOSE = 4 # 0 continue, 1 stop, 2 shutdown PARAM_AUDIO_OUT = 5 # 0 disable / 1 enable audio output, Analog Discovery 1, 2 PARAM_USB_LIMIT = 6 # 0..1000 mA USB power limit, -1 no limit, Analog Discovery 1, 2 PARAM_ANALOG_OUT = 7 # 0 disable / 1 enable PARAM_FREQUENCY = 8 # Hz PARAM_EXT_FREQ = 9 # Hz PARAM_CLOCK_MODE = 10 # 0 internal, 1 output, 2 input, 3 IO DwfWindow = c_int WINDOW_RECTANGULAR = 0 WINDOW_TRIANGULAR = 1 WINDOW_HAMMING = 2 WINDOW_HANN = 3 WINDOW_COSINE = 4 WINDOW_BLACKMAN_HARRIS = 5 WINDOW_FLATTOP = 6 WINDOW_KAISER = 7 DwfAnalogCoupling = c_int ANALOG_COUPLING_DC = 0 ANALOG_COUPLING_AC = 1 # pylint:disable=line-too-long ### SYSTEM dwf_get_last_error = _dwf_function('FDwfGetLastError', (_OUT, POINTER(DwfErc), 'pdwferc')) dwf_get_last_error_msg = _dwf_function('FDwfGetLastErrorMsg', (_IN, c_char_p, 'szError')) dwf_get_version = _dwf_function('FDwfGetVersion', (_IN, c_char_p, 'szVersion')) if _version >= (3, 9, 1): dwf_param_set = _dwf_function('FDwfParamSet', (_IN, DwfParam, 'param'), (_IN, c_int, 'value')) dwf_param_get = _dwf_function('FDwfParamGet', (_IN, DwfParam, 'param'), (_OUT, POINTER(c_int), 'pvalue')) ### DEVICE MANAGMENT FUNCTIONS # Enumeration dwf_enum = _dwf_function('FDwfEnum', (_IN, DwfEnumFilter, 'enumfilter'), (_OUT, POINTER(c_int), 'pcDevice')) if _version >= (3, 17, 1): dwf_enum_start = _dwf_function('FDwfEnumStart', (_IN, DwfEnumFilter, 'enumfilter')) dwf_enum_stop = _dwf_function('FDwfEnumStop', (_OUT, POINTER(c_int), 'pcDevice')) dwf_enum_info = _dwf_function('FDwfEnumInfo', (_IN, c_int, 'idxDevice'), (_IN, c_char_p, 'szOpt')) dwf_enum_device_type = _dwf_function('FDwfEnumDeviceType', (_IN, c_int, 'idxDevice'), (_OUT, POINTER(DwfDevId), 'pDeviceId'), (_OUT, POINTER(DwfDevVer), 'pDeviceRevision')) dwf_enum_device_is_opened = _dwf_function('FDwfEnumDeviceIsOpened', (_IN, c_int, 'idxDevice'), (_OUT, POINTER(c_int), 'pfIsUsed')) dwf_enum_user_name = _dwf_function('FDwfEnumUserName', (_IN, c_int, 'idxDevice'), (_IN, c_char_p, 'szUserName')) dwf_enum_device_name = _dwf_function('FDwfEnumDeviceName', (_IN, c_int, 'idxDevice'), (_IN, c_char_p, 'szDeviceName')) dwf_enum_sn = _dwf_function('FDwfEnumSN', (_IN, c_int, 'idxDevice'), (_IN, c_char_p, 'szSN')) dwf_enum_config = _dwf_function('FDwfEnumConfig', (_IN, c_int, 'idxDevice'), (_OUT, POINTER(c_int), 'pcConfig')) dwf_enum_config_info = _dwf_function('FDwfEnumConfigInfo', (_IN, c_int, 'idxDevice'), (_IN, DwfDeci, 'info'), (_OUT, POINTER(c_int), 'pv')) dwf_enum_config_info_str = _dwf_function('FDwfEnumConfigInfo', (_IN, c_int, 'idxDevice'), (_IN, DwfDeci, 'info'), (_IN, c_char_p, 'pv')) # Open/Close dwf_device_open = _dwf_function('FDwfDeviceOpen', (_IN, c_int, 'idxDevice'), (_OUT, POINTER(HDWF), 'phdwf')) if _version >= (3, 17, 1): dwf_device_open_ex = _dwf_function('FDwfDeviceOpenEx', (_IN, c_char_p, 'szOpt'), (_OUT, POINTER(HDWF), 'phdwf')) dwf_device_config_open = _dwf_function('FDwfDeviceConfigOpen', (_IN, c_int, 'idxDev'), (_IN, c_int, 'idxCfg'), (_OUT, POINTER(HDWF), 'phdwf')) dwf_device_close = _dwf_function('FDwfDeviceClose', (_IN, HDWF, 'hdwf')) dwf_device_close_all = _dwf_function('FDwfDeviceCloseAll') dwf_device_auto_configure_set = _dwf_function('FDwfDeviceAutoConfigureSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fAutoConfigure')) dwf_device_auto_configure_get = _dwf_function('FDwfDeviceAutoConfigureGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfAutoConfigure')) dwf_device_reset = _dwf_function('FDwfDeviceReset', (_IN, HDWF, 'hdwf')) dwf_device_enable_set = _dwf_function('FDwfDeviceEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fEnable')) dwf_device_trigger_info = _dwf_function('FDwfDeviceTriggerInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfstrigsrc')) dwf_device_trigger_set = _dwf_function('FDwfDeviceTriggerSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxPin'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_device_trigger_get = _dwf_function('FDwfDeviceTriggerGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxPin'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_device_trigger_pc = _dwf_function('FDwfDeviceTriggerPC', (_IN, HDWF, 'hdwf')) dwf_device_trigger_slope_info = _dwf_function('FDwfDeviceTriggerSlopeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsslope')) if _version >= (3, 9, 1): dwf_device_param_set = _dwf_function('FDwfDeviceParamSet', (_IN, HDWF, 'hdwf'), (_IN, DwfParam, 'param'), (_IN, c_int, 'value')) dwf_device_param_get = _dwf_function('FDwfDeviceParamGet', (_IN, HDWF, 'hdwf'), (_IN, DwfParam, 'param'), (_OUT, POINTER(c_int), 'pvalue')) ### ANALOG _IN INSTRUMENT FUNCTIONS # Control and status dwf_analog_in_reset = _dwf_function('FDwfAnalogInReset', (_IN, HDWF, 'hdwf')) dwf_analog_in_configure = _dwf_function('FDwfAnalogInConfigure', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fReconfigure'), (_IN, c_int, 'fStart')) dwf_analog_in_trigger_force = _dwf_function('FDwfAnalogInTriggerForce', (_IN, HDWF, 'hdwf'), ) dwf_analog_in_status = _dwf_function('FDwfAnalogInStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fReadData'), (_OUT, POINTER(DwfState), 'psts')) dwf_analog_in_status_samples_left = _dwf_function('FDwfAnalogInStatusSamplesLeft', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcSamplesLeft')) dwf_analog_in_status_samples_valid = _dwf_function('FDwfAnalogInStatusSamplesValid', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcSamplesValid')) dwf_analog_in_status_index_write = _dwf_function('FDwfAnalogInStatusIndexWrite', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pidxWrite')) dwf_analog_in_status_auto_triggered = _dwf_function('FDwfAnalogInStatusAutoTriggered', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfAuto')) dwf_analog_in_status_data = _dwf_function('FDwfAnalogInStatusData', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, POINTER(c_double), 'rgdVoltData'), (_IN, c_int, 'cdData')) dwf_analog_in_status_data2 = _dwf_function('FDwfAnalogInStatusData2', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, POINTER(c_double), 'rgdVoltData'), (_IN, c_int, 'idxData'), (_IN, c_int, 'cdData')) dwf_analog_in_status_data16 = _dwf_function('FDwfAnalogInStatusData16', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, POINTER(c_short), 'rgu16Data'), (_IN, c_int, 'idxData'), (_IN, c_int, 'cdData')) dwf_analog_in_status_noise = _dwf_function('FDwfAnalogInStatusNoise', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, POINTER(c_double), 'rgdMin'), (_IN, POINTER(c_double), 'rgdMax'), (_IN, c_int, 'cdData')) dwf_analog_in_status_noise2 = _dwf_function('FDwfAnalogInStatusNoise2', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, POINTER(c_double), 'rgdMin'), (_IN, POINTER(c_double), 'rgdMax'), (_IN, c_int, 'idxData'), (_IN, c_int, 'cdData')) dwf_analog_in_status_sample = _dwf_function('FDwfAnalogInStatusSample', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pdVoltSample')) if _version >= (3, 16, 3): dwf_analog_in_status_time = _dwf_function('FDwfAnalogInStatusTime', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'psecUtc'), (_OUT, POINTER(c_uint), 'ptick'), (_OUT, POINTER(c_uint), 'pticksPerSecond')) dwf_analog_in_status_record = _dwf_function('FDwfAnalogInStatusRecord', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcdDataAvailable'), (_OUT, POINTER(c_int), 'pcdDataLost'), (_OUT, POINTER(c_int), 'pcdDataCorrupt')) dwf_analog_in_record_length_set = _dwf_function('FDwfAnalogInRecordLengthSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'sLength')) dwf_analog_in_record_length_get = _dwf_function('FDwfAnalogInRecordLengthGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psLength')) if _version >= (3, 18, 30): dwf_analog_in_counter_info = _dwf_function('FDwfAnalogInCounterInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pcntMax'), (_OUT, POINTER(c_double), 'psecMax')) dwf_analog_in_counter_set = _dwf_function('FDwfAnalogInCounterSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'sec')) dwf_analog_in_counter_get = _dwf_function('FDwfAnalogInCounterGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psec')) dwf_analog_in_counter_status = _dwf_function('FDwfAnalogInCounterStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pcnt'), (_OUT, POINTER(c_double), 'pfreq'), (_OUT, POINTER(c_int), 'ptick')) # Acquisition configuration dwf_analog_in_frequency_info = _dwf_function('FDwfAnalogInFrequencyInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'phzMin'), (_OUT, POINTER(c_double), 'phzMax')) dwf_analog_in_frequency_set = _dwf_function('FDwfAnalogInFrequencySet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hzFrequency')) dwf_analog_in_frequency_get = _dwf_function('FDwfAnalogInFrequencyGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'phzFrequency')) dwf_analog_in_bits_info = _dwf_function('FDwfAnalogInBitsInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnBits')) dwf_analog_in_buffer_size_info = _dwf_function('FDwfAnalogInBufferSizeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSizeMin'), (_OUT, POINTER(c_int), 'pnSizeMax')) dwf_analog_in_buffer_size_set = _dwf_function('FDwfAnalogInBufferSizeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'nSize')) dwf_analog_in_buffer_size_get = _dwf_function('FDwfAnalogInBufferSizeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSize')) dwf_analog_in_noise_size_info = _dwf_function('FDwfAnalogInNoiseSizeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSizeMax')) dwf_analog_in_noise_size_set = _dwf_function('FDwfAnalogInNoiseSizeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'nSize')) dwf_analog_in_noise_size_get = _dwf_function('FDwfAnalogInNoiseSizeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSize')) dwf_analog_in_acquisition_mode_info = _dwf_function('FDwfAnalogInAcquisitionModeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsacqmode')) dwf_analog_in_acquisition_mode_set = _dwf_function('FDwfAnalogInAcquisitionModeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfAcqMode, 'acqmode')) dwf_analog_in_acquisition_mode_get = _dwf_function('FDwfAnalogInAcquisitionModeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfAcqMode), 'pacqmode')) # Channel configuration dwf_analog_in_channel_count = _dwf_function('FDwfAnalogInChannelCount', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcChannel')) dwf_analog_in_channel_enable_set = _dwf_function('FDwfAnalogInChannelEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fEnable')) dwf_analog_in_channel_enable_get = _dwf_function('FDwfAnalogInChannelEnableGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfEnable')) dwf_analog_in_channel_filter_info = _dwf_function('FDwfAnalogInChannelFilterInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsfilter')) dwf_analog_in_channel_filter_set = _dwf_function('FDwfAnalogInChannelFilterSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfFilter, 'filter')) dwf_analog_in_channel_filter_get = _dwf_function('FDwfAnalogInChannelFilterGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfFilter), 'pfilter')) dwf_analog_in_channel_range_info = _dwf_function('FDwfAnalogInChannelRangeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsMin'), (_OUT, POINTER(c_double), 'pvoltsMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_channel_range_steps = _dwf_function('FDwfAnalogInChannelRangeSteps', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_double), 'rgVoltsStep'), (_OUT, POINTER(c_int), 'pnSteps')) dwf_analog_in_channel_range_set = _dwf_function('FDwfAnalogInChannelRangeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'voltsRange')) dwf_analog_in_channel_range_get = _dwf_function('FDwfAnalogInChannelRangeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pvoltsRange')) dwf_analog_in_channel_offset_info = _dwf_function('FDwfAnalogInChannelOffsetInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsMin'), (_OUT, POINTER(c_double), 'pvoltsMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_channel_offset_set = _dwf_function('FDwfAnalogInChannelOffsetSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'voltOffset')) dwf_analog_in_channel_offset_get = _dwf_function('FDwfAnalogInChannelOffsetGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pvoltOffset')) dwf_analog_in_channel_attenuation_set = _dwf_function('FDwfAnalogInChannelAttenuationSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'xAttenuation')) dwf_analog_in_channel_attenuation_get = _dwf_function('FDwfAnalogInChannelAttenuationGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pxAttenuation')) if _version >= (3, 14, 3): dwf_analog_in_channel_bandwidth_set = _dwf_function('FDwfAnalogInChannelBandwidthSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'hz')) dwf_analog_in_channel_bandwidth_get = _dwf_function('FDwfAnalogInChannelBandwidthGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'phz')) dwf_analog_in_channel_impedance_set = _dwf_function('FDwfAnalogInChannelImpedanceSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'ohms')) dwf_analog_in_channel_impedance_get = _dwf_function('FDwfAnalogInChannelImpedanceGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pOhms')) if _version >= (3, 18, 30): dwf_analog_in_channel_coupling_info = _dwf_function('FDwfAnalogInChannelCouplingInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfscoupling')) dwf_analog_in_channel_coupling_set = _dwf_function('FDwfAnalogInChannelCouplingSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogCoupling, 'coupling')) dwf_analog_in_channel_coupling_get = _dwf_function('FDwfAnalogInChannelCouplingGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfAnalogCoupling), 'pcoupling')) # Trigger configuration dwf_analog_in_trigger_source_set = _dwf_function('FDwfAnalogInTriggerSourceSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_analog_in_trigger_source_get = _dwf_function('FDwfAnalogInTriggerSourceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_analog_in_trigger_position_info = _dwf_function('FDwfAnalogInTriggerPositionInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_trigger_position_set = _dwf_function('FDwfAnalogInTriggerPositionSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secPosition')) dwf_analog_in_trigger_position_get = _dwf_function('FDwfAnalogInTriggerPositionGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecPosition')) dwf_analog_in_trigger_position_status = _dwf_function('FDwfAnalogInTriggerPositionStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecPosition')) dwf_analog_in_trigger_auto_timeout_info = _dwf_function('FDwfAnalogInTriggerAutoTimeoutInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_trigger_auto_timeout_set = _dwf_function('FDwfAnalogInTriggerAutoTimeoutSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secTimeout')) dwf_analog_in_trigger_auto_timeout_get = _dwf_function('FDwfAnalogInTriggerAutoTimeoutGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecTimeout')) dwf_analog_in_trigger_hold_off_info = _dwf_function('FDwfAnalogInTriggerHoldOffInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax'), (_OUT, POINTER(c_double), 'pnStep')) dwf_analog_in_trigger_hold_off_set = _dwf_function('FDwfAnalogInTriggerHoldOffSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secHoldOff')) dwf_analog_in_trigger_hold_off_get = _dwf_function('FDwfAnalogInTriggerHoldOffGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecHoldOff')) dwf_analog_in_trigger_type_info = _dwf_function('FDwfAnalogInTriggerTypeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfstrigtype')) dwf_analog_in_trigger_type_set = _dwf_function('FDwfAnalogInTriggerTypeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigType, 'trigtype')) dwf_analog_in_trigger_type_get = _dwf_function('FDwfAnalogInTriggerTypeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigType), 'ptrigtype')) dwf_analog_in_trigger_channel_info = _dwf_function('FDwfAnalogInTriggerChannelInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pidxMin'), (_OUT, POINTER(c_int), 'pidxMax')) dwf_analog_in_trigger_channel_set = _dwf_function('FDwfAnalogInTriggerChannelSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_analog_in_trigger_channel_get = _dwf_function('FDwfAnalogInTriggerChannelGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pidxChannel')) dwf_analog_in_trigger_filter_info = _dwf_function('FDwfAnalogInTriggerFilterInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsfilter')) dwf_analog_in_trigger_filter_set = _dwf_function('FDwfAnalogInTriggerFilterSet', (_IN, HDWF, 'hdwf'), (_IN, DwfFilter, 'filter')) dwf_analog_in_trigger_filter_get = _dwf_function('FDwfAnalogInTriggerFilterGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfFilter), 'pfilter')) dwf_analog_in_trigger_level_info = _dwf_function('FDwfAnalogInTriggerLevelInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsMin'), (_OUT, POINTER(c_double), 'pvoltsMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_trigger_level_set = _dwf_function('FDwfAnalogInTriggerLevelSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'voltsLevel')) dwf_analog_in_trigger_level_get = _dwf_function('FDwfAnalogInTriggerLevelGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsLevel')) dwf_analog_in_trigger_hysteresis_info = _dwf_function('FDwfAnalogInTriggerHysteresisInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsMin'), (_OUT, POINTER(c_double), 'pvoltsMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_trigger_hysteresis_set = _dwf_function('FDwfAnalogInTriggerHysteresisSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'voltsLevel')) dwf_analog_in_trigger_hysteresis_get = _dwf_function('FDwfAnalogInTriggerHysteresisGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvoltsHysteresis')) dwf_analog_in_trigger_condition_info = _dwf_function('FDwfAnalogInTriggerConditionInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfstrigcond')) dwf_analog_in_trigger_condition_set = _dwf_function('FDwfAnalogInTriggerConditionSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTriggerSlope, 'trigcond')) dwf_analog_in_trigger_condition_get = _dwf_function('FDwfAnalogInTriggerConditionGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTriggerSlope), 'ptrigcond')) dwf_analog_in_trigger_length_info = _dwf_function('FDwfAnalogInTriggerLengthInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_analog_in_trigger_length_set = _dwf_function('FDwfAnalogInTriggerLengthSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secLength')) dwf_analog_in_trigger_length_get = _dwf_function('FDwfAnalogInTriggerLengthGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecLength')) dwf_analog_in_trigger_length_condition_info = _dwf_function('FDwfAnalogInTriggerLengthConditionInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfstriglen')) dwf_analog_in_trigger_length_condition_set = _dwf_function('FDwfAnalogInTriggerLengthConditionSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigLen, 'triglen')) dwf_analog_in_trigger_length_condition_get = _dwf_function('FDwfAnalogInTriggerLengthConditionGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigLen), 'ptriglen')) dwf_analog_in_sampling_source_set = _dwf_function('FDwfAnalogInSamplingSourceSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_analog_in_sampling_source_get = _dwf_function('FDwfAnalogInSamplingSourceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_analog_in_sampling_slope_set = _dwf_function('FDwfAnalogInSamplingSlopeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTriggerSlope, 'slope')) dwf_analog_in_sampling_slope_get = _dwf_function('FDwfAnalogInSamplingSlopeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTriggerSlope), 'pslope')) dwf_analog_in_sampling_delay_set = _dwf_function('FDwfAnalogInSamplingDelaySet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'sec')) dwf_analog_in_sampling_delay_get = _dwf_function('FDwfAnalogInSamplingDelayGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psec')) ### ANALOG _OUT INSTRUMENT FUNCTIONS # Configuration dwf_analog_out_count = _dwf_function('FDwfAnalogOutCount', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcChannel')) dwf_analog_out_master_set = _dwf_function('FDwfAnalogOutMasterSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxMaster')) dwf_analog_out_master_get = _dwf_function('FDwfAnalogOutMasterGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pidxMaster')) dwf_analog_out_trigger_source_set = _dwf_function('FDwfAnalogOutTriggerSourceSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_analog_out_trigger_source_get = _dwf_function('FDwfAnalogOutTriggerSourceGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_analog_out_trigger_slope_set = _dwf_function('FDwfAnalogOutTriggerSlopeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfTriggerSlope, 'slope')) dwf_analog_out_trigger_slope_get = _dwf_function('FDwfAnalogOutTriggerSlopeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfTriggerSlope), 'pslope')) dwf_analog_out_run_info = _dwf_function('FDwfAnalogOutRunInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax')) dwf_analog_out_run_set = _dwf_function('FDwfAnalogOutRunSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'secRun')) dwf_analog_out_run_get = _dwf_function('FDwfAnalogOutRunGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'psecRun')) dwf_analog_out_run_status = _dwf_function('FDwfAnalogOutRunStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'psecRun')) dwf_analog_out_wait_info = _dwf_function('FDwfAnalogOutWaitInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax')) dwf_analog_out_wait_set = _dwf_function('FDwfAnalogOutWaitSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'secWait')) dwf_analog_out_wait_get = _dwf_function('FDwfAnalogOutWaitGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'psecWait')) dwf_analog_out_repeat_info = _dwf_function('FDwfAnalogOutRepeatInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pnMin'), (_OUT, POINTER(c_int), 'pnMax')) dwf_analog_out_repeat_set = _dwf_function('FDwfAnalogOutRepeatSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'cRepeat')) dwf_analog_out_repeat_get = _dwf_function('FDwfAnalogOutRepeatGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pcRepeat')) dwf_analog_out_repeat_status = _dwf_function('FDwfAnalogOutRepeatStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pcRepeat')) dwf_analog_out_repeat_trigger_set = _dwf_function('FDwfAnalogOutRepeatTriggerSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fRepeatTrigger')) dwf_analog_out_repeat_trigger_get = _dwf_function('FDwfAnalogOutRepeatTriggerGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfRepeatTrigger')) # EExplorer channel 3&4 current/voltage limitation dwf_analog_out_limitation_info = _dwf_function('FDwfAnalogOutLimitationInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pMin'), (_OUT, POINTER(c_double), 'pMax')) dwf_analog_out_limitation_set = _dwf_function('FDwfAnalogOutLimitationSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_double, 'limit')) dwf_analog_out_limitation_get = _dwf_function('FDwfAnalogOutLimitationGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'plimit')) dwf_analog_out_mode_set = _dwf_function('FDwfAnalogOutModeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutMode, 'mode')) dwf_analog_out_mode_get = _dwf_function('FDwfAnalogOutModeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfAnalogOutMode), 'pmode')) dwf_analog_out_idle_info = _dwf_function('FDwfAnalogOutIdleInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfsidle')) dwf_analog_out_idle_set = _dwf_function('FDwfAnalogOutIdleSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutIdle, 'idle')) dwf_analog_out_idle_get = _dwf_function('FDwfAnalogOutIdleGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfAnalogOutIdle), 'pidle')) dwf_analog_out_node_info = _dwf_function('FDwfAnalogOutNodeInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfsnode')) dwf_analog_out_node_enable_set = _dwf_function('FDwfAnalogOutNodeEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_int, 'fMode')) dwf_analog_out_node_enable_get = _dwf_function('FDwfAnalogOutNodeEnableGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_int), 'pfMode')) dwf_analog_out_node_function_info = _dwf_function('FDwfAnalogOutNodeFunctionInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_uint), 'pfsfunc')) dwf_analog_out_node_function_set = _dwf_function('FDwfAnalogOutNodeFunctionSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, DwfFunc, 'func')) dwf_analog_out_node_function_get = _dwf_function('FDwfAnalogOutNodeFunctionGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(DwfFunc), 'pfunc')) dwf_analog_out_node_frequency_info = _dwf_function('FDwfAnalogOutNodeFrequencyInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'phzMin'), (_OUT, POINTER(c_double), 'phzMax')) dwf_analog_out_node_frequency_set = _dwf_function('FDwfAnalogOutNodeFrequencySet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_double, 'hzFrequency')) dwf_analog_out_node_frequency_get = _dwf_function('FDwfAnalogOutNodeFrequencyGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'phzFrequency')) # Carrier Amplitude or Modulation Index dwf_analog_out_node_amplitude_info = _dwf_function('FDwfAnalogOutNodeAmplitudeInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pMin'), (_OUT, POINTER(c_double), 'pMax')) dwf_analog_out_node_amplitude_set = _dwf_function('FDwfAnalogOutNodeAmplitudeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_double, 'vAmplitude')) dwf_analog_out_node_amplitude_get = _dwf_function('FDwfAnalogOutNodeAmplitudeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pvAmplitude')) dwf_analog_out_node_offset_info = _dwf_function('FDwfAnalogOutNodeOffsetInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pMin'), (_OUT, POINTER(c_double), 'pMax')) dwf_analog_out_node_offset_set = _dwf_function('FDwfAnalogOutNodeOffsetSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_double, 'vOffset')) dwf_analog_out_node_offset_get = _dwf_function('FDwfAnalogOutNodeOffsetGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pvOffset')) dwf_analog_out_node_symmetry_info = _dwf_function('FDwfAnalogOutNodeSymmetryInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'ppercentageMin'), (_OUT, POINTER(c_double), 'ppercentageMax')) dwf_analog_out_node_symmetry_set = _dwf_function('FDwfAnalogOutNodeSymmetrySet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_double, 'percentageSymmetry')) dwf_analog_out_node_symmetry_get = _dwf_function('FDwfAnalogOutNodeSymmetryGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'ppercentageSymmetry')) dwf_analog_out_node_phase_info = _dwf_function('FDwfAnalogOutNodePhaseInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pdegreeMin'), (_OUT, POINTER(c_double), 'pdegreeMax')) dwf_analog_out_node_phase_set = _dwf_function('FDwfAnalogOutNodePhaseSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, c_double, 'degreePhase')) dwf_analog_out_node_phase_get = _dwf_function('FDwfAnalogOutNodePhaseGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_double), 'pdegreePhase')) dwf_analog_out_node_data_info = _dwf_function('FDwfAnalogOutNodeDataInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_int), 'pnSamplesMin'), (_OUT, POINTER(c_int), 'pnSamplesMax')) dwf_analog_out_node_data_set = _dwf_function('FDwfAnalogOutNodeDataSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, POINTER(c_double), 'rgdData'), (_IN, c_int, 'cdData')) dwf_analog_out_custom_am_fm_enable_set = _dwf_function('FDwfAnalogOutCustomAMFMEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fEnable')) dwf_analog_out_custom_am_fm_enable_get = _dwf_function('FDwfAnalogOutCustomAMFMEnableGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfEnable')) # Control dwf_analog_out_reset = _dwf_function('FDwfAnalogOutReset', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_analog_out_configure = _dwf_function('FDwfAnalogOutConfigure', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fStart')) dwf_analog_out_status = _dwf_function('FDwfAnalogOutStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfState), 'psts')) dwf_analog_out_node_play_status = _dwf_function('FDwfAnalogOutNodePlayStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_OUT, POINTER(c_int), 'cdDataFree'), (_OUT, POINTER(c_int), 'cdDataLost'), (_OUT, POINTER(c_int), 'cdDataCorrupted')) dwf_analog_out_node_play_data = _dwf_function('FDwfAnalogOutNodePlayData', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfAnalogOutNode, 'node'), (_IN, POINTER(c_double), 'rgdData'), (_IN, c_int, 'cdData')) ### ANALOG IO INSTRUMENT FUNCTIONS # Control dwf_analog_io_reset = _dwf_function('FDwfAnalogIOReset', (_IN, HDWF, 'hdwf'), ) dwf_analog_io_configure = _dwf_function('FDwfAnalogIOConfigure', (_IN, HDWF, 'hdwf'), ) dwf_analog_io_status = _dwf_function('FDwfAnalogIOStatus', (_IN, HDWF, 'hdwf'), ) # Configure dwf_analog_io_enable_info = _dwf_function('FDwfAnalogIOEnableInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfSet'), (_OUT, POINTER(c_int), 'pfStatus')) dwf_analog_io_enable_set = _dwf_function('FDwfAnalogIOEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fMasterEnable')) dwf_analog_io_enable_get = _dwf_function('FDwfAnalogIOEnableGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfMasterEnable')) dwf_analog_io_enable_status = _dwf_function('FDwfAnalogIOEnableStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfMasterEnable')) dwf_analog_io_channel_count = _dwf_function('FDwfAnalogIOChannelCount', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnChannel')) dwf_analog_io_channel_name = _dwf_function('FDwfAnalogIOChannelName', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_char_p, 'szName'), (_IN, c_char_p, 'szLabel')) dwf_analog_io_channel_info = _dwf_function('FDwfAnalogIOChannelInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pnNodes')) dwf_analog_io_channel_node_name = _dwf_function('FDwfAnalogIOChannelNodeName', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_IN, c_char_p, 'szNodeName'), (_IN, c_char_p, 'szNodeUnits')) dwf_analog_io_channel_node_info = _dwf_function('FDwfAnalogIOChannelNodeInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_OUT, POINTER(DwfAnalogIO), 'panalogio')) dwf_analog_io_channel_node_set_info = _dwf_function('FDwfAnalogIOChannelNodeSetInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_OUT, POINTER(c_double), 'pmin'), (_OUT, POINTER(c_double), 'pmax'), (_OUT, POINTER(c_int), 'pnSteps')) dwf_analog_io_channel_node_set = _dwf_function('FDwfAnalogIOChannelNodeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_IN, c_double, 'value')) dwf_analog_io_channel_node_get = _dwf_function('FDwfAnalogIOChannelNodeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_OUT, POINTER(c_double), 'pvalue')) dwf_analog_io_channel_node_status_info = _dwf_function('FDwfAnalogIOChannelNodeStatusInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_OUT, POINTER(c_double), 'pmin'), (_OUT, POINTER(c_double), 'pmax'), (_OUT, POINTER(c_int), 'pnSteps')) dwf_analog_io_channel_node_status = _dwf_function('FDwfAnalogIOChannelNodeStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'idxNode'), (_OUT, POINTER(c_double), 'pvalue')) ### DIGITAL IO INSTRUMENT FUNCTIONS # Control dwf_digital_io_reset = _dwf_function('FDwfDigitalIOReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_io_configure = _dwf_function('FDwfDigitalIOConfigure', (_IN, HDWF, 'hdwf'), ) dwf_digital_io_status = _dwf_function('FDwfDigitalIOStatus', (_IN, HDWF, 'hdwf'), ) # Configure dwf_digital_io_output_enable_info = _dwf_function('FDwfDigitalIOOutputEnableInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsOutputEnableMask')) dwf_digital_io_output_enable_set = _dwf_function('FDwfDigitalIOOutputEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'fsOutputEnable')) dwf_digital_io_output_enable_get = _dwf_function('FDwfDigitalIOOutputEnableGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsOutputEnable')) dwf_digital_io_output_info = _dwf_function('FDwfDigitalIOOutputInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsOutputMask')) dwf_digital_io_output_set = _dwf_function('FDwfDigitalIOOutputSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'fsOutput')) dwf_digital_io_output_get = _dwf_function('FDwfDigitalIOOutputGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsOutput')) dwf_digital_io_input_info = _dwf_function('FDwfDigitalIOInputInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsInputMask')) dwf_digital_io_input_status = _dwf_function('FDwfDigitalIOInputStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsInput')) dwf_digital_io_output_enable_info64 = _dwf_function('FDwfDigitalIOOutputEnableInfo64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsOutputEnableMask')) dwf_digital_io_output_enable_set64 = _dwf_function('FDwfDigitalIOOutputEnableSet64', (_IN, HDWF, 'hdwf'), (_IN, c_ulonglong, 'fsOutputEnable')) dwf_digital_io_output_enable_get64 = _dwf_function('FDwfDigitalIOOutputEnableGet64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsOutputEnable')) dwf_digital_io_output_info64 = _dwf_function('FDwfDigitalIOOutputInfo64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsOutputMask')) dwf_digital_io_output_set64 = _dwf_function('FDwfDigitalIOOutputSet64', (_IN, HDWF, 'hdwf'), (_IN, c_ulonglong, 'fsOutput')) dwf_digital_io_output_get64 = _dwf_function('FDwfDigitalIOOutputGet64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsOutput')) dwf_digital_io_input_info64 = _dwf_function('FDwfDigitalIOInputInfo64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsInputMask')) dwf_digital_io_input_status64 = _dwf_function('FDwfDigitalIOInputStatus64', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_ulonglong), 'pfsInput')) ### DIGITAL _IN INSTRUMENT FUNCTIONS # Control and status dwf_digital_in_reset = _dwf_function('FDwfDigitalInReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_in_configure = _dwf_function('FDwfDigitalInConfigure', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fReconfigure'), (_IN, c_int, 'fStart')) dwf_digital_in_status = _dwf_function('FDwfDigitalInStatus', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fReadData'), (_OUT, POINTER(DwfState), 'psts')) dwf_digital_in_status_samples_left = _dwf_function('FDwfDigitalInStatusSamplesLeft', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcSamplesLeft')) dwf_digital_in_status_samples_valid = _dwf_function('FDwfDigitalInStatusSamplesValid', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcSamplesValid')) dwf_digital_in_status_index_write = _dwf_function('FDwfDigitalInStatusIndexWrite', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pidxWrite')) dwf_digital_in_status_auto_triggered = _dwf_function('FDwfDigitalInStatusAutoTriggered', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfAuto')) dwf_digital_in_status_data = _dwf_function('FDwfDigitalInStatusData', (_IN, HDWF, 'hdwf'), (_IN, c_void_p, 'rgData'), (_IN, c_int, 'countOfDataBytes')) dwf_digital_in_status_data2 = _dwf_function('FDwfDigitalInStatusData2', (_IN, HDWF, 'hdwf'), (_IN, c_void_p, 'rgData'), (_IN, c_int, 'idxSample'), (_IN, c_int, 'countOfDataBytes')) dwf_digital_in_status_noise2 = _dwf_function('FDwfDigitalInStatusNoise2', (_IN, HDWF, 'hdwf'), (_IN, c_void_p, 'rgData'), (_IN, c_int, 'idxSample'), (_IN, c_int, 'countOfDataBytes')) dwf_digital_in_status_record = _dwf_function('FDwfDigitalInStatusRecord', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcdDataAvailable'), (_OUT, POINTER(c_int), 'pcdDataLost'), (_OUT, POINTER(c_int), 'pcdDataCorrupt')) if _version >= (3, 16, 3): dwf_digital_in_status_time = _dwf_function('FDwfDigitalInStatusTime', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'psecUtc'), (_OUT, POINTER(c_uint), 'ptick'), (_OUT, POINTER(c_uint), 'pticksPerSecond')) if _version >= (3, 18, 30): dwf_digital_in_counter_info = _dwf_function('FDwfDigitalInCounterInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pcntMax'), (_OUT, POINTER(c_double), 'psecMax')) dwf_digital_in_counter_set = _dwf_function('FDwfDigitalInCounterSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'sec')) dwf_digital_in_counter_get = _dwf_function('FDwfDigitalInCounterGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psec')) dwf_digital_in_counter_status = _dwf_function('FDwfDigitalInCounterStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pcnt'), (_OUT, POINTER(c_double), 'pfreq'), (_OUT, POINTER(c_int), 'ptick')) # Acquisition configuration dwf_digital_in_internal_clock_info = _dwf_function('FDwfDigitalInInternalClockInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'phzFreq')) dwf_digital_in_clock_source_info = _dwf_function('FDwfDigitalInClockSourceInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsDwfDigitalInClockSource')) dwf_digital_in_clock_source_set = _dwf_function('FDwfDigitalInClockSourceSet', (_IN, HDWF, 'hdwf'), (_IN, DwfDigitalInClockSource, 'v')) dwf_digital_in_clock_source_get = _dwf_function('FDwfDigitalInClockSourceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfDigitalInClockSource), 'pv')) dwf_digital_in_divider_info = _dwf_function('FDwfDigitalInDividerInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pdivMax')) dwf_digital_in_divider_set = _dwf_function('FDwfDigitalInDividerSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'div')) dwf_digital_in_divider_get = _dwf_function('FDwfDigitalInDividerGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pdiv')) dwf_digital_in_bits_info = _dwf_function('FDwfDigitalInBitsInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnBits')) dwf_digital_in_sample_format_set = _dwf_function('FDwfDigitalInSampleFormatSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'nBits')) dwf_digital_in_sample_format_get = _dwf_function('FDwfDigitalInSampleFormatGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnBits')) dwf_digital_in_input_order_set = _dwf_function('FDwfDigitalInInputOrderSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fDioFirst')) dwf_digital_in_buffer_size_info = _dwf_function('FDwfDigitalInBufferSizeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSizeMax')) dwf_digital_in_buffer_size_set = _dwf_function('FDwfDigitalInBufferSizeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'nSize')) dwf_digital_in_buffer_size_get = _dwf_function('FDwfDigitalInBufferSizeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pnSize')) dwf_digital_in_sample_mode_info = _dwf_function('FDwfDigitalInSampleModeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsDwfDigitalInSampleMode')) dwf_digital_in_sample_mode_set = _dwf_function('FDwfDigitalInSampleModeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfDigitalInSampleMode, 'v')) dwf_digital_in_sample_mode_get = _dwf_function('FDwfDigitalInSampleModeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfDigitalInSampleMode), 'pv')) dwf_digital_in_sample_sensible_set = _dwf_function('FDwfDigitalInSampleSensibleSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'fs')) dwf_digital_in_sample_sensible_get = _dwf_function('FDwfDigitalInSampleSensibleGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfs')) dwf_digital_in_acquisition_mode_info = _dwf_function('FDwfDigitalInAcquisitionModeInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfsacqmode')) dwf_digital_in_acquisition_mode_set = _dwf_function('FDwfDigitalInAcquisitionModeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfAcqMode, 'acqmode')) dwf_digital_in_acquisition_mode_get = _dwf_function('FDwfDigitalInAcquisitionModeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfAcqMode), 'pacqmode')) # Trigger configuration dwf_digital_in_trigger_source_set = _dwf_function('FDwfDigitalInTriggerSourceSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_digital_in_trigger_source_get = _dwf_function('FDwfDigitalInTriggerSourceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_digital_in_trigger_slope_set = _dwf_function('FDwfDigitalInTriggerSlopeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTriggerSlope, 'slope')) dwf_digital_in_trigger_slope_get = _dwf_function('FDwfDigitalInTriggerSlopeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTriggerSlope), 'pslope')) dwf_digital_in_trigger_position_info = _dwf_function('FDwfDigitalInTriggerPositionInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pnSamplesAfterTriggerMax')) dwf_digital_in_trigger_position_set = _dwf_function('FDwfDigitalInTriggerPositionSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'cSamplesAfterTrigger')) dwf_digital_in_trigger_position_get = _dwf_function('FDwfDigitalInTriggerPositionGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pcSamplesAfterTrigger')) dwf_digital_in_trigger_prefill_set = _dwf_function('FDwfDigitalInTriggerPrefillSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'cSamplesBeforeTrigger')) dwf_digital_in_trigger_prefill_get = _dwf_function('FDwfDigitalInTriggerPrefillGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pcSamplesBeforeTrigger')) dwf_digital_in_trigger_auto_timeout_info = _dwf_function('FDwfDigitalInTriggerAutoTimeoutInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax'), (_OUT, POINTER(c_double), 'pnSteps')) dwf_digital_in_trigger_auto_timeout_set = _dwf_function('FDwfDigitalInTriggerAutoTimeoutSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secTimeout')) dwf_digital_in_trigger_auto_timeout_get = _dwf_function('FDwfDigitalInTriggerAutoTimeoutGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecTimeout')) dwf_digital_in_trigger_info = _dwf_function('FDwfDigitalInTriggerInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsLevelLow'), (_OUT, POINTER(c_uint), 'pfsLevelHigh'), (_OUT, POINTER(c_uint), 'pfsEdgeRise'), (_OUT, POINTER(c_uint), 'pfsEdgeFall')) dwf_digital_in_trigger_set = _dwf_function('FDwfDigitalInTriggerSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'fsLevelLow'), (_IN, c_uint, 'fsLevelHigh'), (_IN, c_uint, 'fsEdgeRise'), (_IN, c_uint, 'fsEdgeFall')) dwf_digital_in_trigger_get = _dwf_function('FDwfDigitalInTriggerGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsLevelLow'), (_OUT, POINTER(c_uint), 'pfsLevelHigh'), (_OUT, POINTER(c_uint), 'pfsEdgeRise'), (_OUT, POINTER(c_uint), 'pfsEdgeFall')) dwf_digital_in_trigger_reset_set = _dwf_function('FDwfDigitalInTriggerResetSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'fsLevelLow'), (_IN, c_uint, 'fsLevelHigh'), (_IN, c_uint, 'fsEdgeRise'), (_IN, c_uint, 'fsEdgeFall')) dwf_digital_in_trigger_count_set = _dwf_function('FDwfDigitalInTriggerCountSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cCount'), (_IN, c_int, 'fRestart')) dwf_digital_in_trigger_length_set = _dwf_function('FDwfDigitalInTriggerLengthSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secMin'), (_IN, c_double, 'secMax'), (_IN, c_int, 'idxSync')) dwf_digital_in_trigger_match_set = _dwf_function('FDwfDigitalInTriggerMatchSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'iPin'), (_IN, c_uint, 'fsMask'), (_IN, c_uint, 'fsValue'), (_IN, c_int, 'cBitStuffing')) ### DIGITAL _OUT INSTRUMENT FUNCTIONS # Control dwf_digital_out_reset = _dwf_function('FDwfDigitalOutReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_out_configure = _dwf_function('FDwfDigitalOutConfigure', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fStart')) dwf_digital_out_status = _dwf_function('FDwfDigitalOutStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfState), 'psts')) if _version >= (3, 18, 30): dwf_digital_out_status_output = _dwf_function('FDwfDigitalOutStatusOutput', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pfsValue'), (_OUT, POINTER(c_uint), 'pfsEnable')) # Configuration dwf_digital_out_internal_clock_info = _dwf_function('FDwfDigitalOutInternalClockInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'phzFreq')) dwf_digital_out_trigger_source_set = _dwf_function('FDwfDigitalOutTriggerSourceSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTrigSrc, 'trigsrc')) dwf_digital_out_trigger_source_get = _dwf_function('FDwfDigitalOutTriggerSourceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTrigSrc), 'ptrigsrc')) dwf_digital_out_run_info = _dwf_function('FDwfDigitalOutRunInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax')) dwf_digital_out_run_set = _dwf_function('FDwfDigitalOutRunSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secRun')) dwf_digital_out_run_get = _dwf_function('FDwfDigitalOutRunGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecRun')) dwf_digital_out_run_status = _dwf_function('FDwfDigitalOutRunStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecRun')) dwf_digital_out_wait_info = _dwf_function('FDwfDigitalOutWaitInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecMin'), (_OUT, POINTER(c_double), 'psecMax')) dwf_digital_out_wait_set = _dwf_function('FDwfDigitalOutWaitSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'secWait')) dwf_digital_out_wait_get = _dwf_function('FDwfDigitalOutWaitGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'psecWait')) dwf_digital_out_repeat_info = _dwf_function('FDwfDigitalOutRepeatInfo', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pnMin'), (_OUT, POINTER(c_uint), 'pnMax')) dwf_digital_out_repeat_set = _dwf_function('FDwfDigitalOutRepeatSet', (_IN, HDWF, 'hdwf'), (_IN, c_uint, 'cRepeat')) dwf_digital_out_repeat_get = _dwf_function('FDwfDigitalOutRepeatGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pcRepeat')) dwf_digital_out_repeat_status = _dwf_function('FDwfDigitalOutRepeatStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_uint), 'pcRepeat')) dwf_digital_out_trigger_slope_set = _dwf_function('FDwfDigitalOutTriggerSlopeSet', (_IN, HDWF, 'hdwf'), (_IN, DwfTriggerSlope, 'slope')) dwf_digital_out_trigger_slope_get = _dwf_function('FDwfDigitalOutTriggerSlopeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfTriggerSlope), 'pslope')) dwf_digital_out_repeat_trigger_set = _dwf_function('FDwfDigitalOutRepeatTriggerSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fRepeatTrigger')) dwf_digital_out_repeat_trigger_get = _dwf_function('FDwfDigitalOutRepeatTriggerGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfRepeatTrigger')) dwf_digital_out_count = _dwf_function('FDwfDigitalOutCount', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pcChannel')) dwf_digital_out_enable_set = _dwf_function('FDwfDigitalOutEnableSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fEnable')) dwf_digital_out_enable_get = _dwf_function('FDwfDigitalOutEnableGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfEnable')) dwf_digital_out_output_info = _dwf_function('FDwfDigitalOutOutputInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfsDwfDigitalOutOutput')) dwf_digital_out_output_set = _dwf_function('FDwfDigitalOutOutputSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfDigitalOutOutput, 'v')) dwf_digital_out_output_get = _dwf_function('FDwfDigitalOutOutputGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfDigitalOutOutput), 'pv')) dwf_digital_out_type_info = _dwf_function('FDwfDigitalOutTypeInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfsDwfDigitalOutType')) dwf_digital_out_type_set = _dwf_function('FDwfDigitalOutTypeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfDigitalOutType, 'v')) dwf_digital_out_type_get = _dwf_function('FDwfDigitalOutTypeGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfDigitalOutType), 'pv')) dwf_digital_out_idle_info = _dwf_function('FDwfDigitalOutIdleInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfsDwfDigitalOutIdle')) dwf_digital_out_idle_set = _dwf_function('FDwfDigitalOutIdleSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, DwfDigitalOutIdle, 'v')) dwf_digital_out_idle_get = _dwf_function('FDwfDigitalOutIdleGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(DwfDigitalOutIdle), 'pv')) dwf_digital_out_divider_info = _dwf_function('FDwfDigitalOutDividerInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'vMin'), (_OUT, POINTER(c_uint), 'vMax')) dwf_digital_out_divider_init_set = _dwf_function('FDwfDigitalOutDividerInitSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_uint, 'v')) dwf_digital_out_divider_init_get = _dwf_function('FDwfDigitalOutDividerInitGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pv')) dwf_digital_out_divider_set = _dwf_function('FDwfDigitalOutDividerSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_uint, 'v')) dwf_digital_out_divider_get = _dwf_function('FDwfDigitalOutDividerGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pv')) dwf_digital_out_counter_info = _dwf_function('FDwfDigitalOutCounterInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'vMin'), (_OUT, POINTER(c_uint), 'vMax')) dwf_digital_out_counter_init_set = _dwf_function('FDwfDigitalOutCounterInitSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'fHigh'), (_IN, c_uint, 'v')) dwf_digital_out_counter_init_get = _dwf_function('FDwfDigitalOutCounterInitGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pfHigh'), (_OUT, POINTER(c_uint), 'pv')) dwf_digital_out_counter_set = _dwf_function('FDwfDigitalOutCounterSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_uint, 'vLow'), (_IN, c_uint, 'vHigh')) dwf_digital_out_counter_get = _dwf_function('FDwfDigitalOutCounterGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pvLow'), (_OUT, POINTER(c_uint), 'pvHigh')) # ADP3X50 if _version >= (3, 18, 30): dwf_digital_out_repetition_info = _dwf_function('FDwfDigitalOutRepetitionInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pnMax')) dwf_digital_out_repetition_set = _dwf_function('FDwfDigitalOutRepetitionSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_uint, 'cRepeat')) dwf_digital_out_repetition_get = _dwf_function('FDwfDigitalOutRepetitionGet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pcRepeat')) dwf_digital_out_data_info = _dwf_function('FDwfDigitalOutDataInfo', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_uint), 'pcountOfBitsMax')) dwf_digital_out_data_set = _dwf_function('FDwfDigitalOutDataSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_void_p, 'rgBits'), (_IN, c_uint, 'countOfBits')) if _version >= (3, 14, 3): dwf_digital_out_play_data_set = _dwf_function('FDwfDigitalOutPlayDataSet', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_ubyte), 'rgBits'), (_IN, c_uint, 'bitPerSample'), (_IN, c_uint, 'countOfSamples')) dwf_digital_out_play_rate_set = _dwf_function('FDwfDigitalOutPlayRateSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hzRate')) if _version >= (3, 18, 30): dwf_digital_out_play_update_set = _dwf_function('FDwfDigitalOutPlayUpdateSet', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_ubyte), 'rgBits'), (_IN, c_uint, 'indexOfSample'), (_IN, c_uint, 'countOfSamples')) # UART dwf_digital_uart_reset = _dwf_function('FDwfDigitalUartReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_uart_rate_set = _dwf_function('FDwfDigitalUartRateSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hz')) dwf_digital_uart_bits_set = _dwf_function('FDwfDigitalUartBitsSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cBits')) dwf_digital_uart_parity_set = _dwf_function('FDwfDigitalUartParitySet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'parity')) if _version >= (3, 17, 1): dwf_digital_uart_polarity_set = _dwf_function('FDwfDigitalUartPolaritySet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'polarity')) dwf_digital_uart_stop_set = _dwf_function('FDwfDigitalUartStopSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'cBit')) dwf_digital_uart_tx_set = _dwf_function('FDwfDigitalUartTxSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_uart_rx_set = _dwf_function('FDwfDigitalUartRxSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_uart_tx = _dwf_function('FDwfDigitalUartTx', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_char), 'szTx'), (_IN, c_int, 'cTx')) dwf_digital_uart_rx = _dwf_function('FDwfDigitalUartRx', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_char), 'szRx'), (_IN, c_int, 'cRx'), (_OUT, POINTER(c_int), 'pcRx'), (_OUT, POINTER(c_int), 'pParity')) # SPI dwf_digital_spi_reset = _dwf_function('FDwfDigitalSpiReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_spi_frequency_set = _dwf_function('FDwfDigitalSpiFrequencySet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hz')) dwf_digital_spi_clock_set = _dwf_function('FDwfDigitalSpiClockSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_spi_data_set = _dwf_function('FDwfDigitalSpiDataSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxDQ'), (_IN, c_int, 'idxChannel')) if _version >= (3, 14, 3): dwf_digital_spi_idle_set = _dwf_function('FDwfDigitalSpiIdleSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxDQ'), (_IN, DwfDigitalOutIdle, 'idle')) dwf_digital_spi_mode_set = _dwf_function('FDwfDigitalSpiModeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'iMode')) dwf_digital_spi_order_set = _dwf_function('FDwfDigitalSpiOrderSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fMSBFirst')) dwf_digital_spi_select = _dwf_function('FDwfDigitalSpiSelect', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_IN, c_int, 'level')) dwf_digital_spi_write_read = _dwf_function('FDwfDigitalSpiWriteRead', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ubyte), 'rgTX'), (_IN, c_int, 'cTX'), (_IN, POINTER(c_ubyte), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_write_read16 = _dwf_function('FDwfDigitalSpiWriteRead16', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ushort), 'rgTX'), (_IN, c_int, 'cTX'), (_IN, POINTER(c_ushort), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_write_read32 = _dwf_function('FDwfDigitalSpiWriteRead32', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_OUT, POINTER(c_uint), 'rgTX'), (_IN, c_int, 'cTX'), (_OUT, POINTER(c_uint), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_read = _dwf_function('FDwfDigitalSpiRead', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ubyte), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_read_one = _dwf_function('FDwfDigitalSpiReadOne', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_OUT, POINTER(c_uint), 'pRX')) dwf_digital_spi_read16 = _dwf_function('FDwfDigitalSpiRead16', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ushort), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_read32 = _dwf_function('FDwfDigitalSpiRead32', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_OUT, POINTER(c_uint), 'rgRX'), (_IN, c_int, 'cRX')) dwf_digital_spi_write = _dwf_function('FDwfDigitalSpiWrite', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ubyte), 'rgTX'), (_IN, c_int, 'cTX')) dwf_digital_spi_write_one = _dwf_function('FDwfDigitalSpiWriteOne', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBits'), (_IN, c_uint, 'vTX')) dwf_digital_spi_write16 = _dwf_function('FDwfDigitalSpiWrite16', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_IN, POINTER(c_ushort), 'rgTX'), (_IN, c_int, 'cTX')) dwf_digital_spi_write32 = _dwf_function('FDwfDigitalSpiWrite32', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cDQ'), (_IN, c_int, 'cBitPerWord'), (_OUT, POINTER(c_uint), 'rgTX'), (_IN, c_int, 'cTX')) # I2C dwf_digital_i2c_reset = _dwf_function('FDwfDigitalI2cReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_i2c_clear = _dwf_function('FDwfDigitalI2cClear', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pfFree')) if _version >= (3, 10, 9): dwf_digital_i2c_stretch_set = _dwf_function('FDwfDigitalI2cStretchSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fEnable')) dwf_digital_i2c_rate_set = _dwf_function('FDwfDigitalI2cRateSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hz')) dwf_digital_i2c_read_nak_set = _dwf_function('FDwfDigitalI2cReadNakSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fNakLastReadByte')) dwf_digital_i2c_scl_set = _dwf_function('FDwfDigitalI2cSclSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_i2c_sda_set = _dwf_function('FDwfDigitalI2cSdaSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) if _version >= (3, 17, 1): dwf_digital_i2c_timeout_set = _dwf_function('FDwfDigitalI2cTimeoutSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'sec')) dwf_digital_i2c_write_read = _dwf_function('FDwfDigitalI2cWriteRead', (_IN, HDWF, 'hdwf'), (_IN, c_ubyte, 'adr8bits'), (_IN, POINTER(c_ubyte), 'rgbTx'), (_IN, c_int, 'cTx'), (_IN, POINTER(c_ubyte), 'rgRx'), (_IN, c_int, 'cRx'), (_OUT, POINTER(c_int), 'pNak')) dwf_digital_i2c_read = _dwf_function('FDwfDigitalI2cRead', (_IN, HDWF, 'hdwf'), (_IN, c_ubyte, 'adr8bits'), (_IN, POINTER(c_ubyte), 'rgbRx'), (_IN, c_int, 'cRx'), (_OUT, POINTER(c_int), 'pNak')) dwf_digital_i2c_write = _dwf_function('FDwfDigitalI2cWrite', (_IN, HDWF, 'hdwf'), (_IN, c_ubyte, 'adr8bits'), (_IN, POINTER(c_ubyte), 'rgbTx'), (_IN, c_int, 'cTx'), (_OUT, POINTER(c_int), 'pNak')) dwf_digital_i2c_write_one = _dwf_function('FDwfDigitalI2cWriteOne', (_IN, HDWF, 'hdwf'), (_IN, c_ubyte, 'adr8bits'), (_IN, c_ubyte, 'bTx'), (_OUT, POINTER(c_int), 'pNak')) if _version >= (3, 18, 1): dwf_digital_i2c_spy_start = _dwf_function('FDwfDigitalI2cSpyStart', (_IN, HDWF, 'hdwf'), ) dwf_digital_i2c_spy_status = _dwf_function('FDwfDigitalI2cSpyStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'fStart'), (_OUT, POINTER(c_int), 'fStop'), (_IN, POINTER(c_ubyte), 'rgData'), (_OUT, POINTER(c_int), 'cData'), (_OUT, POINTER(c_int), 'iNak')) # CAN dwf_digital_can_reset = _dwf_function('FDwfDigitalCanReset', (_IN, HDWF, 'hdwf'), ) dwf_digital_can_rate_set = _dwf_function('FDwfDigitalCanRateSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hz')) dwf_digital_can_polarity_set = _dwf_function('FDwfDigitalCanPolaritySet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fHigh')) dwf_digital_can_tx_set = _dwf_function('FDwfDigitalCanTxSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_can_rx_set = _dwf_function('FDwfDigitalCanRxSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel')) dwf_digital_can_tx = _dwf_function('FDwfDigitalCanTx', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'vID'), (_IN, c_int, 'fExtended'), (_IN, c_int, 'fRemote'), (_IN, c_int, 'cDLC'), (_IN, POINTER(c_ubyte), 'rgTX')) dwf_digital_can_rx = _dwf_function('FDwfDigitalCanRx', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'pvID'), (_OUT, POINTER(c_int), 'pfExtended'), (_OUT, POINTER(c_int), 'pfRemote'), (_OUT, POINTER(c_int), 'pcDLC'), (_IN, POINTER(c_ubyte), 'rgRX'), (_IN, c_int, 'cRX'), (_OUT, POINTER(c_int), 'pvStatus')) # Impedance if _version >= (3, 9, 1): dwf_analog_impedance_reset = _dwf_function('FDwfAnalogImpedanceReset', (_IN, HDWF, 'hdwf'), ) dwf_analog_impedance_mode_set = _dwf_function('FDwfAnalogImpedanceModeSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'mode')) dwf_analog_impedance_mode_get = _dwf_function('FDwfAnalogImpedanceModeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'mode')) dwf_analog_impedance_reference_set = _dwf_function('FDwfAnalogImpedanceReferenceSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'ohms')) dwf_analog_impedance_reference_get = _dwf_function('FDwfAnalogImpedanceReferenceGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pohms')) dwf_analog_impedance_frequency_set = _dwf_function('FDwfAnalogImpedanceFrequencySet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'hz')) dwf_analog_impedance_frequency_get = _dwf_function('FDwfAnalogImpedanceFrequencyGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'phz')) dwf_analog_impedance_amplitude_set = _dwf_function('FDwfAnalogImpedanceAmplitudeSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'volts')) dwf_analog_impedance_amplitude_get = _dwf_function('FDwfAnalogImpedanceAmplitudeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvolts')) dwf_analog_impedance_offset_set = _dwf_function('FDwfAnalogImpedanceOffsetSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'volts')) dwf_analog_impedance_offset_get = _dwf_function('FDwfAnalogImpedanceOffsetGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pvolts')) dwf_analog_impedance_probe_set = _dwf_function('FDwfAnalogImpedanceProbeSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'ohmRes'), (_IN, c_double, 'faradCap')) dwf_analog_impedance_probe_get = _dwf_function('FDwfAnalogImpedanceProbeGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pohmRes'), (_OUT, POINTER(c_double), 'pfaradCap')) dwf_analog_impedance_period_set = _dwf_function('FDwfAnalogImpedancePeriodSet', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cMinPeriods')) dwf_analog_impedance_period_get = _dwf_function('FDwfAnalogImpedancePeriodGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_int), 'cMinPeriods')) dwf_analog_impedance_comp_reset = _dwf_function('FDwfAnalogImpedanceCompReset', (_IN, HDWF, 'hdwf'), ) dwf_analog_impedance_comp_set = _dwf_function('FDwfAnalogImpedanceCompSet', (_IN, HDWF, 'hdwf'), (_IN, c_double, 'ohmOpenResistance'), (_IN, c_double, 'ohmOpenReactance'), (_IN, c_double, 'ohmShortResistance'), (_IN, c_double, 'ohmShortReactance')) dwf_analog_impedance_comp_get = _dwf_function('FDwfAnalogImpedanceCompGet', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(c_double), 'pohmOpenResistance'), (_OUT, POINTER(c_double), 'pohmOpenReactance'), (_OUT, POINTER(c_double), 'pohmShortResistance'), (_OUT, POINTER(c_double), 'pohmShortReactance')) dwf_analog_impedance_configure = _dwf_function('FDwfAnalogImpedanceConfigure', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'fStart')) dwf_analog_impedance_status = _dwf_function('FDwfAnalogImpedanceStatus', (_IN, HDWF, 'hdwf'), (_OUT, POINTER(DwfState), 'psts')) dwf_analog_impedance_status_input = _dwf_function('FDwfAnalogImpedanceStatusInput', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_double), 'pgain'), (_OUT, POINTER(c_double), 'pradian')) dwf_analog_impedance_status_measure = _dwf_function('FDwfAnalogImpedanceStatusMeasure', (_IN, HDWF, 'hdwf'), (_IN, DwfAnalogImpedance, 'measure'), (_OUT, POINTER(c_double), 'pvalue')) if _version >= (3, 17, 1): dwf_analog_impedance_status_warning = _dwf_function('FDwfAnalogImpedanceStatusWarning', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'idxChannel'), (_OUT, POINTER(c_int), 'pWarning')) if _version >= (3, 18, 30): dwf_spectrum_window = _dwf_function('FDwfSpectrumWindow', (_IN, HDWF, 'hdwf'), (_IN, c_int, 'cdWin'), (_IN, DwfWindow, 'iWindow'), (_IN, c_double, 'vBeta'), (_OUT, POINTER(c_double), 'vNEBW')) dwf_spectrum_fft = _dwf_function('FDwfSpectrumFFT', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_double), 'rgdData'), (_IN, c_int, 'cdData'), (_IN, POINTER(c_double), 'rgdBin'), (_IN, POINTER(c_double), 'rgdPhase'), (_IN, c_int, 'cdBin')) dwf_spectrum_transform = _dwf_function('FDwfSpectrumTransform', (_IN, HDWF, 'hdwf'), (_IN, POINTER(c_double), 'rgdData'), (_IN, c_int, 'cdData'), (_IN, POINTER(c_double), 'rgdBin'), (_IN, POINTER(c_double), 'rgdPhase'), (_IN, c_int, 'cdBin'), (_IN, c_double, 'iFirst'), (_IN, c_double, 'iLast'))