# EnableEvent()

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 method is used in conjunction with interrupt driven processes such as AInScan(), APretrig(), or AOut().

Member of the MccBoard class.

## Function Prototype

VB .NET

Public Function EnableEvent(ByVal eventType As MccDaq.EventType, ByVal eventParameter As Integer, ByVal callbackFunc As MccDaq.EventCallback, ByVal userData As IntPtr) As MccDaq.ErrorInfo

Public Function EnableEvent(ByVal eventType As MccDaq.EventType, ByVal eventParameter As System.UInt32, ByVal callbackFunc As MccDaq.EventCallback, ByVal userData As IntPtr) As MccDaq.ErrorInfo

Public Function EnableEvent(ByVal eventType As MccDaq.EventType, ByVal eventParameter As MccDaq.EventParameter, ByVal callbackFunc As MccDaq.CallbackFunction, ByVal userData As IntPtr) As MccDaq.ErrorInfo

C# .NET

public MccDaq.ErrorInfo EnableEvent(MccDaq.EventType eventType, uint eventParameter, MccDaq.EventCallback callbackFunc, System.IntPtr userData)

public MccDaq.ErrorInfo EnableEvent(MccDaq.EventType eventType, int eventParameter, MccDaq.EventCallback callbackFunc, System.IntPtr userData)

public MccDaq.ErrorInfo EnableEvent(MccDaq.EventType eventType, MccDaq.EventParameter eventParameter, MccDaq.CallbackFunction callbackFunc, System.IntPtr userData)

## Parameters

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 bitwise OR'ing the event types. Set it to one of the constants in the eventType Parameter Values section below.

eventParameter

Additional data required to specify some event conditions, such as an OnDataAvailable event or OnExternalInterrupt event.

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

Most event conditions ignore this value.

callbackFunc

A delegate type that is the user-defined callback function to handle the above event type(s). A delegate is a data structure that refers either to a static method, or to a class instance and an instance method of that class.

The callbackFunc needs the same parameters as the EventCallback delegate declaration. Refer to the "EventCallback delegate" section for proper syntax and return values.

userData

Reference to user-defined data that is passed to the EventCallback delegate. This parameter is NOT de-referenced by the library or its drivers; as a consequence, a NULL pointer can be supplied.

## Returns

- An ErrorInfo object that indicates the status of the operation.

### eventType Parameter Values

OnDataAvailable | Generates an event whenever the number of samples acquired during an analog input scan increases by eventParameter samples or more. Note that for BlockIo scans, events will be generated on packet transfers; for example, even if EventParameter is set to 1, events will only be generated every packet-size worth of data (256 samples for the PCI-DAS1602) for aggregate rates greater than 1 kHz for the default AInScan() mode. For APretrig(), the first event is not generated until a minimum of EventParameter samples after the pretrigger.
OnEndOfInputScan | Generates an event upon completion or fatal error of AInScan() or APretrig(). Some devices, such as the USB-1208FS and USB-1408FS, will generate an end of scan event after StopBackground() is called, but most devices do not. Handle post-scan tasks directly after calling StopBackground.
OnEndOfOutputScan | Generates an event upon completion or fatal error of AOutScan(). Some devices, such as the USB-1208FS and USB-1408FS, will generate an end of scan event after StopBackground() is called, but most devices do not. Handle post-scan tasks directly after calling StopBackground.
OnExternalInterrupt | For some digital and counter boards, generates an event, latches digital input data, or latches digital output data upon detection of a pulse at the External Interrupt pin.
OnPretrigger | For APretrig(), generates an event upon detection of the first trigger.
OnScanError | Generates an event upon detection of a driver error during Background input and output scans. This includes OverRun, UnderRun, and TooFew errors.

### eventParameter Parameter Values

LatchDI | Returns the data that was latched in at the most recent interrupt edge.
LatchDO | Latches out the data most recently written to the hardware.

### Callback Function Prototypes

C# .NET

public delegate void EventCallback( int BoardNum, MccDaq.EventType EventType, uint EventData, IntPtr pUserData);

VB .NET

Public Sub MyCallback(ByVal BoardNum As Integer, ByVal EventType As MccDaq.EventType, ByVal EventData As UInt32, ByVal pUserData As System.IntPtr)

## Notes

- EnableEvent() cannot be called while any background operations (AInScan(), APretrig(), or AOutScan()) are active. If a background operation is in progress when EnableEvent() is called, EnableEvent() will return the AlreadyActive error. Perform a StopBackground() call before calling EnableEvent().
- Events will not be generated faster than the user callback function can handle them. If an event type becomes multi-signaled before the event handler returns, events are merged. The event handler is called once per event type, and is supplied with the event data corresponding to the latest event. When more than one event type is generated, the event handler for each event type is called in the same order in which they are enabled.
- Events are generated while handling board-generated interrupts. As a consequence, using StopBackground() to abort background operations will not generate OnEndOfOutputScan or OnEndOfInputScan events. However, the event handlers can be called directly immediately after calling StopBackground().

## Important!

In order to understand the methods, you must read the board-specific information contained in the Universal Library User's Guide. Review and run the example programs before attempting any programming of your own. Following this advice will save you hours of frustration, and possibly time wasted holding for technical support.

This note, which appears elsewhere, is especially applicable to this method. Now is the time to read the board-specific information for your board (see the Universal Library User's Guide). We suggest that you make a copy of that page to refer to as you read this manual and examine the example programs.