在超过1百万采样点的有限点模拟采集任务中DAQmx Wait Until Done不正常的超时了



主要软件:
主要软件版本: 8.3
主要软件修正版本: N/A
次要软件: N/A

问题: 我正在使用NI-DAQmx驱动进行一个有限点的模拟输入任务,我想要采集超过一百万个采样点,并且想知道采集什么时候完成。但是当我使用DAQmx Wait Until Done的时候,采集结束后不能够返回正确的值或者出现了错误-200560并且超时了。

解答:

这样的情况在NI-DAQmx驱动下是正常的。有几种方法可以避免这样的问题。

  1. 手动将输入缓存区的大小设置成您想要采集的点数。这是一种最好的解决方式。

    您可以通过以下方式设置输入缓存区的大小。

    1. 在DAQmx LabVIEW API中使用DAQmx Configure Input Buffer VI。
    2. 在DAQmx C API使用DAQmxCfgOutputBuffer函数。
    3. 在DAQmx .NET API中设置Task.Stream.Buffer.InputBufferSize属性。 

  2. 对于支持中断的PCI设备而言,您可以将数据传输机制(Data Transfer Mechanism)DMA改为中断(Interrupts)方式。注意在许多应用中将数据传输机制改为中断方式可能会对系统的性能造成一定的影响。

    需要了解如何更改数据传输机制,请参考: KnowledgeBase 34FGAFVM: How do I Configure the Data Transfer Mechanism (Interrupt or DMA) in DAQmx and Traditional DAQ?

  3. 若您紧紧箱要获得最后的一百万个采样点,您可以将重写模式(OverWrite Mode)改为重写未读的采样点(Overwrite Unread Samples)。

    您可以通过以下方式设置重写模式属性:

    1. 在LabVIEW中,将DAQmx Read property node的OverWrite Mode属性改为Overwrite Unread Samples
    2. 在DAQmx C API中调用DAQmxSetReadOverWrite( taskHandle, DAQmx_Val_OverwriteUnreadSamps)函数。
    3. 在DAQmx .NET API中设置Task.Stream.ReadOverwriteMode = ReadOverwriteMode.OverwriteUnreadSamples


相关链接:

附件:





报告日期: 02/09/2007
最近更新: 01/08/2008
文档编号: 468DS6NO