在 DAQmx 和传统 DAQ 中配置数据传输机制(中断或 DMA)

更新 Aug 25, 2026

环境

驱动

  • Traditional NI-DAQ
  • NI-DAQmx

我正在做许多不同的操作(模拟输出、模拟输入、数字 I/O、计数器 I/O...),我想为每个操作选择数据传输机制。如何配置哪些操作使用 DMA 通道,哪些操作使用中断请求?

使用 NI-DAQmx

使用 LabVIEW API

  1. 在程序框图上放置一个 DAQmx 通道属性节点,并将其连接到 DAQmx 创建通道 VI。
  2. 右键单击属性节点并选择全部转换为写入。
  3. 属性的实际位置因您的操作类型而异。对于模拟和数字输入和输出操作类型,右键单击属性节点并导航到Properties » Analog Input » General Properties » Advanced » Data Transfer and Memory » Data Transfer Mechanism。对于计数器输入和输出操作类型,您需要转到Properties » Counter Input » General Properties » More » Advanced » Data Transfer and Memory » Data Transfer Mechanism
  4. 右键单击 DAQmx Channel Property NodeDataXferMech 接线端并选择Create » Constant,然后选择您要使用的传输机制类型。


注意:确保您已连接到兼容设备,否则这些选项可能不可用。您也可以在 NI MAX 中创建虚拟并兼容的设备。

使用 C API

实际的功能将取决于操作类型。例如,如果您想要为模拟输入任务设置数据传输机制,您将调用:

DAQmxSetAIDataXferMech(TaskHandle taskHandle, const char channel[ ], int32 mode);

参数模式可以采用四个不同值之一:

  • DAQmx_Val_DMA
  • DAQmx_Val_Interrupts
  • DAQmx_Val_ProgrammedIO
  • DAQmx_Val_USBBulk


有关更多详细信息,请参阅 NI-DAQmx C Reference Help

使用 .NET API

.NET 调用也将取决于操作类型。如果操作类型是模拟输入,您将调用:

Task.AIChannels.All.DataTransferMechanism = Mode

模式可以采用以下四个值之一:

  • AIDataTransferMechanism.Dma
  • AIDataTransferMechanism.Interrupts
  • AIDataTransferMechanism.ProgrammedIO
  • AIDataTransferMechanism.UsbBulk


使用传统 NI-DAQ(Legacy)

使用 LabVIEW API

  1. 在程序框图上放置一个 Set DAQ Device Information VI。
  2. 右键单击信息类型终端并选择创建常量。选择要配置的操作的数据传输模式。
  3. 右键单击信息设置并选择创建常量。选择您要使用的传输机制类型。


使用 C API

要修改传统 NI-DAQ(Legacy)中的数据传输机制,您应该调用:

Set_DAQ_Device_Info( deviceNumber, infoType, infoValue )

infoType 参数将取决于操作类型。例如,如果您想修改模拟输入操作的数据传输机制,您应该调用:

Set_DAQ_Device_Info( deviceNumber, ND_DATA_XFER_MODE_AI, infoValue )

如果您使用的是典型的 E 系列 PCI 设备,则 infoValue 参数可以采用两个不同值之一:

  • ND_INTERRUPTS
  • ND_UP_TO_1_DMA_CHANNEL


关于使用 Traditional NI-DAQ (Legacy) C API 设置数据传输机制的更多详细信息,请参考位于 Start » All Programs » National Instruments » NI-DAQ 的 Traditional NI-DAQ (Legacy) C Function Reference Help » Traditional NI-DAQ Function Reference Help.