使用Pcie-6537来采集32位数据,采用continuous acquisition,sample clock sample time type,如果只是使用16位来采集数据,能正常工作,而当采用32位时,很快地就会显示如下的错误:
Possible reason(s):
Measurements: Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.
Property: RelativeTo
Requested Value: Current Read Position
Property: Offset
Requested Value: 0
Task Name: _unnamedTask<C6>
请问这是什么原因?多谢了!
非常感谢!!!
我想那种方法只是减少了错误出现的概率,并不能完全避免错误。
我把程序变成了这样:
但是发现这样还是会出问题,每当程序运行一段时间过后,while循环便再也收不到数据,这时停止程序,再重新运行的话,又可以收到数据。
请问这是怎么回事?
谢谢了!!!
你好,
因为板卡缓存不可能是无限大,因此读取需要足够快以免缓存爆掉。这个不是概率高低的问题,而是在设计系统时就应该避免出现不应有的情况。
另:你的截图中看不到配置任务的情况,因此不好判断是什么问题,如果可以的话,麻烦将配置那部分的程序截图贴一下,谢谢
你好,
在Windows系统中,while循环的定时精度比较差,不过一般也不会差到你讲的那个程度啦。 根据你程序截图,每次循环都是将板卡缓存中所有样本点都读取出来,不会出现需要一秒钟25000次循环的情况。在连续采集时,DAQmx Timing中的samples per channel仅用于决定缓存大小,而每次读取多少个样点,是在DAQmx read中设置的。
你看看有没有这种可能导致错误:由于缓存占满,同时设置了不覆盖没有读取的数据,那么板卡也就不再往缓存中写入数据了。这个可以在Available samples per channel中看到,如果这个节点得到的值逐渐变大的话,应该就比较危险了
我在电脑上也做了一个相同的程序,使用较低的采样率,没有出现采集一段时间之后无法接受数据的情况