enable_event()

Binds one or more event conditions to a user-defined callback function. Upon detection of an event condition, the user-defined function is invoked with board- and event-specific data. Detection of event conditions occurs in response to interrupts. Typically, this function is used in conjunction with interrupt driven processes such as a_in_scan(), a_pretrig(), or a_out_scan().

Prototype

enable_event(board_num, event_type, event_param, callback_func, c_user_data)

Parameters

board_num (int)

The number associated with the board when it was installed with InstaCal or created with create_daq_device().

event_type (EventType)

Specifies one or more event conditions that will be bound to the user-defined callback function. More than one event type can be specified by adding the event types. Refer to the constants in the event_type parameter values section below.

event_param (int)

Additional data required to specify some event conditions, such as an EventType.ON_DATA_AVAILABLE event or EventType.ON_EXTERNAL_INTERRUPT event.

For EventType.ON_DATA_AVAILABLE events, event_param is used to determine the minimum number of samples to acquire during an analog input scan before generating the event. For EventType.ON_EXTERNAL_INTERRUPT events, event_param is used to latch digital bits on supported hardware by setting it to one of the constants in the event_param parameter values section below.

Most event conditions ignore this value.

callback_func (ULEventCallback)

A ULEventCallback instance used to handle the above event type(s).

No reference to the ULEventCallback object is stored internally. The ULEventCallback object must remain allocated until no more events will occur, otherwise the next callback will cause a crash. It is up to the user of this function to ensure that Python will not garbage-collect the object. Typically, assigning the ULEventCallback to a member variable or making it a global variable is sufficient.

The function passed to the ULEventCallback constructor should accept four parameters (not including self if it is a member function): board_num, event_type, event_data, c_user_data. Refer to the Callback function parameters section below for more information.

c_user_data

User-defined data that will be passed to the callback function.

The data may be any C type object. Care must be taken to cast back to the same type in the callback method. In most cases, py_object is recommended.

No reference to the c_user_data object is stored internally. It is up to the user of this function to ensure that Python will not garbage-collect the object. Typically, assigning the c_user_data to a member variable is sufficient.

event_type parameter values

ON_DATA_AVAILABLEGenerates an event whenever the number of samples acquired during an analog input scan increases by event_param samples or more. Note that for BLOCKIO scans, events will be generated on packet transfers; for example, even if event_param is set to 1, events will only be generated every packet-size worth of data for aggregate rates greater than 1 kHz for the default a_in_scan() mode.

For a_pretrig(), the first event is not generated until a minimum of EventParam samples after the pretrigger.
ON_END_OF_INPUT_SCANGenerates an event upon completion or fatal error of a_in_scan() or a_pretrig().

Some devices, such as the USB-1208FS and USB-1408FS, will generate an end of scan event after stop_background() is called, but most devices do not. Handle post-scan tasks directly after calling stop_background.
ON_END_OF_OUTPUT_SCANGenerates an event upon completion or fatal error of a_out_scan() or a_pretrig().

Some devices, such as the USB-1208FS and USB-1408FS, will generate an end of scan event after stop_background() is called, but most devices do not. Handle post-scan tasks directly after calling stop_background.
ON_EXTERNAL_INTERRUPTFor some digital and counter boards, generates an event upon detection of a pulse at the External Interrupt pin.
ON_PRETRIGGERFor a_pretrig(), generates an event upon detection of the first trigger.
ON_SCAN_ERRORGenerates an event upon detection of a driver error during BACKGROUND input and output scans. This includes OVERRUN, UNDERRUN, and TOOFEW errors.

event_param parameter values

LATCH_DIReturns the data that was latched in at the most recent interrupt edge.
LATCH_DOLatches out the data most recently written to the hardware.

Callback function parameters

Callback event_data parameter values
ON_DATA_AVAILABLEThe number of samples acquired since the start of the scan.
ON_END_OF_INPUT_SCANThe total number of samples acquired upon the scan completion or end.
ON_END_OF_OUTPUT_SCANscan completion or end.
ON_EXTERNAL_INTERRUPTThe number of interrupts generated since enabling the ON_EXTERNAL_INTERRUPT event.
ON_PRETRIGGERThe number of pretrigger samples available at the time of pretrigger. This value is invalid for some boards when a TOOFEW error occurs. Refer to board-specific information.
ON_SCAN_ERRORThe error code of the scan error.

Notes