获得连续使用NI和背景数据的设备
这个例子展示了如何使用非阻塞获得模拟输入数据的命令。这允许您继续工作在MATLAB命令窗口的收购。这就是所谓的背景收购。使用前景收购导致MATLAB等待整个收购完成才能执行下一个命令。
创建和配置DataAcquisition对象
使用数据收集
创建一个DataAcquisition对象addinput
添加一个输入通道。这个示例使用一个NI 9205年国家仪器模块®CompactDAQ底盘倪cdaq - 9178。这是模块1的底盘。
dq =采集(“倪”);addinput (dq,“cDAQ1Mod1”,“ai0”,“电压”);dq。率= 2000;
情节获取实时数据
背景收购期间,DataAcquisition可以处理获得的数据在指定的方式使用ScansAvailableFcn
财产。
dq。ScansAvailableFcn = @ (evt) src plotDataAvailable (src, evt);
设置ScansAvailableFcnCount
默认情况下,ScansAvailableFcn叫做每秒10倍。修改ScansAvailableFcnCount
财产减少调用的频率。都会调用ScansAvailableFcn当点积累的数量超过这个值。设置ScansAvailableFcnCount率,结果在一个叫ScansAvailableFcn每秒。
dq。ScansAvailableFcnCount = 2000;
开始收购的背景
使用开始
启动背景收购。
开始(dq,“持续时间”秒(5))
没有其他的计算执行和收购将为整个运行5秒。使用暂停
在一个循环中监控扫描期间获得的数量。
而dq。运行暂停(0.5)流(“While循环:扫描获得= % d \ n "dq.NumScansAcquired)结束流(“收购停止% d扫描获得\ n”,dq.NumScansAcquired);
While循环:扫描获得= 1000
捕获一个独特的事件在传入的数据
获得不断,直到特定的条件满足。在这个例子中,获取,直到信号等于或超过1 V。
dq。ScansAvailableFcn = @ (evt) src stopWhenEqualsOrExceedsOneV (src, evt);
配置DataAcquisition不断收购。侦听器检测到1 v事件和调用停止
。
开始(dq,“连续”);
使用暂停
在一个循环中监控扫描期间获得的数量。注意,字符串显示的状态ScansAvailableFcn
可能出现之前最后一个状态while循环显示的字符串。
而dq。运行暂停(0.5)流(“While循环:扫描获得= % d \ n "dq.NumScansAcquired)结束流(“收购已终止,% d扫描获得\ n”,dq.NumScansAcquired);dq。ScansAvailableFcn = [];
While循环:扫描获得= 1000检测到电压超过1 v:停止收购While循环:扫描获得= 2000年收购已终止,2000扫描
函数plotDataAvailable (src, ~)(数据、时间戳~)=阅读(src, src.ScansAvailableFcnCount“OutputFormat”,“矩阵”);情节(时间戳、数据);结束函数stopWhenEqualsOrExceedsOneV (src, ~)(数据、时间戳~)=阅读(src, src.ScansAvailableFcnCount“OutputFormat”,“矩阵”);如果任何(数据> = 1.0)disp (“检测到电压超过1 v:停止收购”)%停止连续收购明确src.stop()图(时间戳,数据)其他的disp (“继续获取数据”)结束结束
While循环:While循环扫描获得= 2200:扫描获得= 3200 While循环:扫描获得= 4200 While循环:扫描获得= 5200 While循环:扫描获得= 6200 While循环:扫描获得= 7200 While循环:扫描获得= 8200 While循环:扫描获得= 9200 While循环:扫描获得= 10000与10000年收购停止扫描