在Python 设置DAQmx任务采样率

更新 Nov 8, 2023

适用于

硬件

  • CompactDAQ Chassis

驱动

  • NI-DAQmx

程式语言

  • Python

问题详述

我正在使用Python控制我的DAQ设备。我可以创建任务并连接到设备,但是我想配置计时选项。
如何为任务设置采样率和采样模式?

解决方案

您可以配置 nidaqmx.task 类的定时属性,如参考文档:nidaqmx.task.timing 中所示。其中一种方法是使用cfg_samp_clk_timing方法。为此,请在编写脚本时执行以下步骤:
  1. 使用以下几行导入所需的定时常量。有关更多信息,请参见参考资料:nidaqmx.constants
from nidaqmx.constants import Edge
from nidaqmx.constants import AcquisitionType
  1. 创建您的任务并为其添加通道。 (此示例将使用数字输入任务)
with nidaqmx.Task() as digitalInputTask: 
        digitalInputTask.di_channels.add_di_chan("cDAQ1Mod3/port0/line0", line_grouping=LineGrouping.CHAN_PER_LINE)
  1. 使用cfg_samp_clk_timing配置定时选项
digitalInputTask.timing.cfg_samp_clk_timing(1000,source =“”,active_edge = Edge.RISING,sample_mode = AcquisitionType.FINITE,samps_per_chan = 5)

此方法的参数如下:
  • rate (float) – 指定采样率,以每通道每秒为单位。
  • source (Optional[str]) – 指定采样时钟的源接线端。如未连接该输入端,将使用设备的默认板载时钟。
  • active_edge – 指定在采样时钟脉冲的上升或下升沿采集或生成采样。
  • sample_mode – 指定任务是否连续采集或生成采样,或者采集或生成有限采样。
  • samps_per_chan (Optional[long]) – 指定采样模式有限采样时,每个通道要采集或生成的采样数。

您的代码应与此类似:
import nidaqmx
from nidaqmx.constants import LineGrouping
from nidaqmx.constants import Edge
from nidaqmx.constants import AcquisitionType 

with nidaqmx.Task() as digitalInputTask: 
        digitalInputTask.di_channels.add_di_chan("cDAQ1Mod3/port0/line0", line_grouping=LineGrouping.CHAN_PER_LINE)
        digitalInputTask.timing.cfg_samp_clk_timing(100, source="", active_edge=Edge.RISING, sample_mode=AcquisitionType.FINITE, samps_per_chan=50)
        data = digitalInputTask.read(50);
        print(data)

相关信息

有关如何通过Python使用NI-DAQ设备的相关信息,请参阅:使用Python和NI DAQmx控制NI DAQ设备
您可以参考此链接:NI-DAQmx Python Documentation 了解Python API。