Callback function pointer in Matlab

I am trying to call a function from Matlab NI daqmx toolbox:
function [status, callbackData] = DAQmxRegisterEveryNSamplesEvent(uint64 task, int32 everyNsamplesEventType, uint32 nSamples, uint32 options, DAQmxEveryNSamplesEventCallbackPtr callbackFunction, void* callbackData)
This function requires a callbackFunction pointer as input but I have no idea how to create that in Matlab and matlab function handle doesn't work for it. Could anyone help me with this issue?

Answers (1)

You put an @ symbol in front of the argument when you call it. For example calling it might look like
[status, callbackData] = DAQmxRegisterEveryNSamplesEvent(task, everyNsamplesEventType,...
nSamples, options, DAQmxEveryNSamplesEventCallbackPtr, @MyCallbackFunction, callbackData)
where you've assigned values for the other arguments. Then you'd define that MyCallbackFunction() function somewhere, like
function results = MyCallbackFunction()
% code...
% The function needs to know what will be given to it when DAQmxRegisterEveryNSamplesEvent() gives stuff to it
% and what kind of data DAQmxRegisterEveryNSamplesEvent() expects to get back after MyCallbackFunction has been executed.

3 Comments

funtion handle like @function doesn't work.
I got this error when replacing function pointer with function handle:
" Error using DAQmxRegisterEveryNSamplesEvent
Expected input number 5, callbackFunction, to be one of these types:
int32
Instead its type was function_handle.
Error in DAQmxRegisterEveryNSamplesEvent (line 9)
validateattributes(callbackFunction, {'int32'}, {'scalar'},
'DAQmxRegisterEveryNSamplesEvent', 'callbackFunction', 5);"
Then I don't know. Try calling NI tomorrow and asking for sample code.
Thanks a lot!

Sign in to comment.

Categories

Products

Asked:

on 23 Dec 2019

Commented:

on 23 Dec 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!