这个例子展示了如何将在后台获取的数据保存到文件中。
创建一个数据采集和添加两个模拟输入通道电压
测量类型。对于本例,使用National Instruments®X系列数据采集设备,NI pci -6363卡与IDDev1
.
d = daqlist (“倪”)
d = 12×4表的DeviceID DeviceInfo描述模型 ___________ __________________________________ _____________ ____________________ " cDAQ1Mod1”“国家仪器NI 9205”“NI 9205”[1×1采集。DeviceInfo] "cDAQ1Mod2" "National Instruments NI 9263" "NI 9263" [1×1 daq。"cDAQ1Mod3" "National Instruments NI 9234" "NI 9234" [1×1 daq。DeviceInfo] "cDAQ1Mod4" "National Instruments NI 9201" "NI 9201" [1×1 daq。DeviceInfo] "cDAQ1Mod5" "National Instruments NI 9402" "NI 9402" [1×1 daq。DeviceInfo] "cDAQ1Mod6" "National Instruments NI 9213" "NI 9213" [1×1 daq。"cDAQ1Mod7" "National Instruments NI 9219" "NI 9219" [1×1 daq。"cDAQ1Mod8" "National Instruments NI 9265" "NI 9265" [1×1 daq。DeviceInfo] "Dev1" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq. exe] "Dev1"DeviceInfo]"Dev2" "National Instruments NI ELVIS II" "NI ELVIS II" [1×1 daq.DeviceInfo] "Dev3" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "Dev4" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo]
deviceInfo = d {9,“DeviceInfo”}
deviceInfo = ni: National Instruments PCIe-6363 (Device ID: 'Dev1')模拟输入支持:7范围支持0.金宝app0到2000000.0扫描/秒32通道('ai0' - 'ai31')“电压”测量类型模拟输出支持:-5.0到+5.0伏,-10到+10伏范围的速率从0金宝app.0到2000000.0扫描/秒4通道('ao0','ao1','ao2','ao3')数字IO支持:39通道('port0/line0' - 'port2/lin金宝appe6')计数器输入支持:速率从0.1到100000000.0扫描/秒4通道('ctr0','ctr1','ctr2','ctr3')金宝app计数器输出支持:速率从0.1到100000000.0扫描/秒4通道('ctr0','ctr1','ctr2','ctr3')金宝app“PulseGeneration”测量类型
dq =采集(“倪”);addinput (dq,“Dev1”0:1,“电压”);dq。渠道
ans =指数类型设备通道测量类型范围名称 _____ ____ ______ _______ ________________ __________________ __________ 1“人工智能”“Dev1”“ai0”“电压(Diff)”"-10 to +10 Volts" "Dev1_ai0" 2 " "ai" "Dev1" "ai1" "Voltage (Diff)""-10 to +10 Volts" "Dev1_ai1"
创建文件log.bin
和打开它。文件标识符用于写入文件。
fid1 = fopen (“log.bin”,“w”);
在后台采集过程中,可以使用ScansAvailableFcn
财产。
dq。ScansAvailableFcn = @(src, evt) logData(src, evt, fid1);
使用开始
来获取5秒钟的数据。
开始(dq,“持续时间”秒(5))
在正常运行期间,其他MATLAB命令可以在此采集期间执行。对于本例,使用暂停
在一个循环中监视在采集期间所采集的扫描次数。
而dq。运行暂停(0.5)流("While循环:Scans acquired = %d\n"dq.NumScansAcquired)结束流("获取已终止,%d扫描已获取\n", dq.NumScansAcquired);
文件关闭(fid1);
将文件内容作为3列矩阵加载到数据
.
fid2 = fopen (“log.bin”,“r”);(数据,统计)=从文件中读(fid2(3正),“双”);文件关闭(fid2);
t =数据(1);ch =数据(2:3,:);情节(t, ch);
函数logData(src, ~, fid) [data, timestamp, ~] = read(src, src. fid)ScansAvailableFcnCount,“OutputFormat”,“矩阵”);Data = [timestamp, Data]';写入文件(支撑材、数据“双”);结束
While循环:While循环扫描获得= 500:扫描获得= 1000 While循环:扫描获得= 1500 While循环:扫描获得= 2000 While循环:扫描获得= 2500 While循环:扫描获得= 3000 While循环:扫描获得= 3500 While循环:扫描获得= 4000 While循环:扫描获得= 4500 While循环:扫描采集= 5000采集已终止,采集5000个扫描