Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

DAQmxRegisterEveryNSamplesEvent如何实现每秒采集256个点?

Solved!
Go to solution

DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandle, "", 10000, DAQmx_Val_Rising, DAQmx_Val_ContSamps, 1000));

个人理解:

范例中10000是采样频率10kHZ,1000代表每通道采集1000点
DAQmxErrChk(DAQmxRegisterEveryNSamplesEvent(taskHandle, DAQmx_Val_Acquired_Into_Buffer,1000 , 0, EveryNCallback, NULL));

同理:1000是缓存区数据到1000后执行回调函数,但是这个数必须能被缓存区整除,所以不能是256这样的数据,所以如果我想实现多通道数据连续采集,且每通道数据都是采样频率256HZ,也就是一秒采集256个点应该如何实现呢?

                                                                                                                谢谢

0 Kudos
Message 1 of 6
(370 Views)

你好!

看了上面的问题,想请教一下为什么有:“但是这个数必须能被缓存区整除,所以不能是256这样的数据”这个前提?是因为之前有配置成256后出现过错误吗,还是有什么资料提到了这一点(如果有能不能分享一下)?因为条件有限不太能复现这个问题,所以能不能分享一下把nSamples这个参数设置成256给你的项目中带来的具体影响?

0 Kudos
Message 2 of 6
(277 Views)
Solution
Accepted by asdfgh12211

你好,

刚才在LabVIEW中尝试复现了您的问题,并给出了问题解决的思路,具体见下面附件验证VI和Word总结。

0 Kudos
Message 3 of 6
(263 Views)
Highlighted

你好,

不知道上次回复之后,你的问题有没有得到解决?

关于上次回复中最后一条中提到的误差问题,我有做一些验证并得到了解决,具体情况在以下附件中进行了详细说明。

希望能够帮助到你!

0 Kudos
Message 4 of 6
(238 Views)

在配置的时候会报错,原因是如果我没有设置缓存大小,程序会按照我的采样频率而自动分配缓存区的大小,这样是没法实现我的要求,一秒从缓存区读256个点,我需要在前面加上一句话,就是设置具体缓存区大小就可以了,因为我这边是用c++写的,labview可能不涉及这个问题

0 Kudos
Message 5 of 6
(225 Views)

抱歉我今天才看到,确实是这样的呢,谢谢!

0 Kudos
Message 6 of 6
(221 Views)