带有NI板的DAQ:Matlab& Win64平台

时间:2012-10-11 20:12:00

标签: matlab win64 nidaqmx

在一个不知情的傲慢的时刻,我决定我的新数据采集计算机将成为x64运行win7。我有在计算机上运行的matlab 2012a和执行数据acq的NI PCIe6363卡。我的问题是关于新的daq.Session接口以及如何在后台收集数据(我的实验的一个关键组成部分)。

我包含一些示例代码。我将尝试解释我认为代码应该做什么。实际发生了什么......

代码:

function runSessionDAQ
s = daq.createSession ('ni'); s.addAnalogInputChannel('Dev1', 0, 'Voltage');
s.IsContinuous = true; s.Rate = 10000;
timeDuration = 5;
s.NotifyWhenDataAvailableExceeds = s.Rate*timeDuration-1; %trigger 'DataAvailable' before the last sample is collected
lh = s.addlistener('DataAvailable', @(src,events)collectAndSaveData(src,events));

function collectAndSaveData(src,event)
    fprintf('here\n');
    t = event.TimeStamps; data = event.Data;
    save('C:\Users\ephys-data\Desktop\data.mat','t','data');
end

tic;
startT = toc;
stopT = startT+timeDuration;
stop = false;
s.startBackground();
while ~stop
    if toc>stopT;
        stop = true;
        s.ScansAcquired
        s.stop();
        fprintf('stopping....\n');
    else
        if s.ScansAcquired == 0
%             keyboard
        end
        fprintf('continuing...\n')
    end
    WaitSecs(0.5);
end
delete(lh);
end

预期功能: 连续记录卡上的数据约5秒钟。在扫描最后几个数据点之前,将数据保存在适当的位置。然后停止收购。

实际结果:

>>runSessionDAQ
continuing...
continuing...
continuing...
continuing...
continuing...
continuing...
continuing...
continuing...
continuing...
continuing...

ans =

                0

stopping....

没有数据存储在适当的位置。实际上声称ScansAcquired的数量为零。然后停下来。

发生了什么事?我应该如何设计我的听众?

======

\ begin {rant}

我无法相信matlab网站对于基于会话的DAQ有多么糟糕。没有定时数字I / O?啧!

\ {端咆哮}

======

-bas

0 个答案:

没有答案