此示例显示了如何使用非阻塞命令获取模拟输入数据。这允许您在采集期间继续在MATLAB命令窗口中工作。这就是所谓的背景收购。采用前景收购要使MATLAB等待整个采集完成,然后再执行下一个命令。
采用DAQ.
创建DataAcquisition对象和addInput.
添加输入通道到它。此示例在NITIONInstruments®CompactDAQ机箱NI CDAQ-9178中使用NI 9205模块。这是底盘中的模块1。
dq = daq(“你”);addInput(DQ,“cdaq1mod1”那“ai0”那“电压”);dq.rate = 2000;
在后台获取期间,DataAtQuisition可以使用指定的方式处理获取的数据scansavailablefcn.
财产。
dq.scansavailablefcn = @(src,evt)plotdataavailable(src,evt);
默认情况下,ScansavailableFCN每秒调用10次。修改scansavailablefcncount.
属性降低呼叫频率。当累积的点数超过此值时将调用ScansavailableFCN。将scansavailablefcncount设置为速率,从一次调用每秒拨打ScansavailableFCN。
dq.scansavailablefcncount = 2000;
采用开始
开始后台采集。
开始(DQ,“期间”,秒(5))
没有其他计算执行,并且将采集设置为在整个五秒钟内运行。采用暂停
在循环中监控获取持续时间所获得的扫描的数量。
尽管dq.running暂停(0.5)fprintf(“循环:扫描获得=%d \ n”,dq.numscansacquired)结尾fprintf(“收购因%D扫描而停止\ n”,dq.numscansacquired);
循环:扫描获得= 1000
连续获取,直到满足特定条件。在该示例中,获取直到信号等于或超过1 V.
dq.scansavailablefcn = @(src,evt)stopwhenequalsorexceedsonev(src,evt);
配置DataAcquisition以连续获取。侦听器检测到1V事件并呼叫停止
。
开始(DQ,“连续的”);
采用暂停
在循环中监控获取持续时间所获得的扫描的数量。请注意,显示的状态字符串scansavailablefcn.
可能会出现在循环上显示的最后一个状态字符串之前。
尽管dq.running暂停(0.5)fprintf(“循环:扫描获得=%d \ n”,dq.numscansacquired)结尾fprintf(“收购已终止%D扫描获取\ n”,dq.numscansacquired);dq.scansavailablefcn = [];
循环:获取扫描= 1000检测到电压超过1V:停止采集而循环:获取= 2000获取已终止2000年获取的扫描
功能plotdataavailable(src,〜)[数据,时间戳,〜] = read(src,src.scansavailablefcncount,“输出格式”那“矩阵”);绘图(时间戳,数据);结尾功能stopwhenequalsorexceedsonev(src,〜)[数据,时间戳,〜] = read(src,src.scansavailablefcncount,“输出格式”那“矩阵”);如果任何(数据> = 1.0)disp(“检测到电压超过1V:停止采集”)%明确停止连续收购src.stop()绘图(时间戳,数据)别的DISP('继续获得数据')结尾结尾
循环:扫描= 2200时循环:扫描= 3200而循环:循环获取= 4200时:循环获取= 5200时:循环获取= 7200时= 7200循环:扫描获取= 8200时循环:扫描获取= 9200,而循环:获取扫描= 10000采集停止,10000扫描获取