我有一个对象,它包含在我的程序中创建的事件(具体来说,一个基于会话的 ni daq 带有一个“DataAvailable”事件,每次获取一定数量的样本时都会触发。)此事件将在期间随机触发运行我的程序的过程,该程序将执行其他与录制无关的事情。触发时,它将收集数据块并将其保存在文件中。
我的问题是每次触发事件时,我都需要在原始程序中增加一个计数器(我将其命名为“块”)。这一点至关重要,因为我的程序中的许多功能取决于我能否准确测量块的数量。
问题:如何将事件已触发的事实传播到我的主程序中?
对于更好地处理(伪)代码的人:
setupStuff();
endLoop = false;
while ~endLoop
if ~recording
session = createDAQSessionObject(params);
chunkNum = 0;
session.addListener('DataAvailable',@(src,event)saveChunk(src,event,chunkNum));
session.startBackGround()
recording = true;
end
endLoop = doOtherStuff();
pause(0.1);
end
function saveChunk(src,event,numChunk)
filename = sprintf('chunk%d.mat',numChunk);
times = event.TimeStamps;
data = event.Data;
save(filename,'times','data');
% but now the next time around we need to get in numChunks+1 (but we never will because we have no way of knowing that the event was called...
end
谢谢
-bas