Source code for nidaqmx._task_modules.triggering.handshake_trigger

# Do not edit this file; it was automatically generated.

import ctypes
import numpy

from nidaqmx._lib import lib_importer, wrapped_ndpointer, ctypes_byte_str
from nidaqmx.system.physical_channel import PhysicalChannel
from nidaqmx.errors import (
    check_for_error, is_string_buffer_too_small, is_array_buffer_too_small)
from nidaqmx.constants import (
    Level, TriggerType)


[docs]class HandshakeTrigger(object): """ Represents the handshake trigger configurations for a DAQmx task. """ def __init__(self, task_handle): self._handle = task_handle @property def interlocked_asserted_lvl(self): """ :class:`nidaqmx.constants.Level`: Specifies the asserted level of the Handshake Trigger. """ val = ctypes.c_int() cfunc = lib_importer.windll.DAQmxGetInterlockedHshkTrigAssertedLvl if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes.POINTER(ctypes.c_int)] error_code = cfunc( self._handle, ctypes.byref(val)) check_for_error(error_code) return Level(val.value) @interlocked_asserted_lvl.setter def interlocked_asserted_lvl(self, val): val = val.value cfunc = lib_importer.windll.DAQmxSetInterlockedHshkTrigAssertedLvl if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes.c_int] error_code = cfunc( self._handle, val) check_for_error(error_code) @interlocked_asserted_lvl.deleter def interlocked_asserted_lvl(self): cfunc = lib_importer.windll.DAQmxResetInterlockedHshkTrigAssertedLvl if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle] error_code = cfunc( self._handle) check_for_error(error_code) @property def interlocked_src(self): """ str: Specifies the source terminal of the Handshake Trigger. """ cfunc = lib_importer.windll.DAQmxGetInterlockedHshkTrigSrc if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes.c_char_p, ctypes.c_uint] temp_size = 0 while True: val = ctypes.create_string_buffer(temp_size) size_or_code = cfunc( self._handle, val, temp_size) if is_string_buffer_too_small(size_or_code): # Buffer size must have changed between calls; check again. temp_size = 0 elif size_or_code > 0 and temp_size == 0: # Buffer size obtained, use to retrieve data. temp_size = size_or_code else: break check_for_error(size_or_code) return val.value.decode('ascii') @interlocked_src.setter def interlocked_src(self, val): cfunc = lib_importer.windll.DAQmxSetInterlockedHshkTrigSrc if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes_byte_str] error_code = cfunc( self._handle, val) check_for_error(error_code) @interlocked_src.deleter def interlocked_src(self): cfunc = lib_importer.windll.DAQmxResetInterlockedHshkTrigSrc if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle] error_code = cfunc( self._handle) check_for_error(error_code) @property def trig_type(self): """ :class:`nidaqmx.constants.TriggerType`: Specifies the type of Handshake Trigger to use. """ val = ctypes.c_int() cfunc = lib_importer.windll.DAQmxGetHshkTrigType if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes.POINTER(ctypes.c_int)] error_code = cfunc( self._handle, ctypes.byref(val)) check_for_error(error_code) return TriggerType(val.value) @trig_type.setter def trig_type(self, val): val = val.value cfunc = lib_importer.windll.DAQmxSetHshkTrigType if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle, ctypes.c_int] error_code = cfunc( self._handle, val) check_for_error(error_code) @trig_type.deleter def trig_type(self): cfunc = lib_importer.windll.DAQmxResetHshkTrigType if cfunc.argtypes is None: with cfunc.arglock: if cfunc.argtypes is None: cfunc.argtypes = [ lib_importer.task_handle] error_code = cfunc( self._handle) check_for_error(error_code)