From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

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
(2,379 Views)

你好!

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

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

你好,

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

0 Kudos
Message 3 of 6
(2,272 Views)

你好,

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

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

希望能够帮助到你!

Download All
0 Kudos
Message 4 of 6
(2,247 Views)

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

0 Kudos
Message 5 of 6
(2,234 Views)

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

0 Kudos
Message 6 of 6
(2,230 Views)