« Close

Datasheets and User Guides

App Notes

Software & Driver

 

2.4.5 - SetStreamCallback

Sets a callback that is called by LJM when the stream has collected ScansPerRead scans. The callback should call LJM_eStreamRead.

LJM_SetStreamCallback is alternative to manually calling LJM_eStreamRead. Manually calling LJM_eStreamRead is more straightforward than using LJM_SetStreamCallback, but LJM_SetStreamCallback allocates a work thread within LJM that calls the callback. Because of this, it's more appropriate for applications that need to perform other work, such as updating a GUI.

Syntax

typedef void (*LJM_StreamReadCallback)(void *);
LJM_ERROR_RETURN LJM_SetStreamCallback(
                int Handle, 
                LJM_StreamReadCallback Callback,
                void * Arg)

Parameters

Handle [in]
A device handle. The handle is a connection ID for an active device. Generate a handle with LJM_Open or LJM_OpenS.
Callback [in]
The callback function for LJM's stream thread to call when ScansPerRead scans of stream data are ready, which should call LJM_eStreamRead to acquire data. ScansPerRead is a value of LJM_eStreamStart.
Arg [in]
The user-defined argument that is passed to Callback when it is invoked.

Returns

LJM errorcodes or 0 for no error.

Remarks

Before calling this function, start stream using LJM_eStreamStart.

The Callback function is executed by a dedicated thread within LJM. LJM_SetStreamCallback should not be called from within Callback. In versions of LJM before 1.1405, LJM_eStreamStop should not be called from within Callback.

To disable the previous callback for stream reading, pass 0 or NULL as Callback.

As an alternative to LJM_SetStreamCallback, the LJM configuration LJM_STREAM_SCANS_RETURN may also be useful. It controls the block on LJM_eStreamRead, allowing LJM_eStreamRead to return immediately with an error if a full read of data is not ready.