在你开始之前
要使用本教程,您必须在系统上安装以下软件和硬件:
- LabWindows/CVI 7.0 或更高版本。
- NI-DAQ 7.0.1 或更高版本的 NI-DAQmx。
- NI-DAQmx 支持的 DAQ 设备。有关 NI-DAQmx 支持的设备列表,请参阅NI-DAQ 7.x 自述文件。
有关安装和配置软件和硬件的信息,请参阅DAQ 快速入门指南和设备文档。
创建任务
您可以使用 DAQ 助手快速的创建 DAQ 任务。任务是一个或多个具有定时、触发和其他属性的虚拟通道。从概念上,任务代表您要执行的测量(measurement)或生成(generation)。您可以在任务中设置和保存所有配置信息,并在应用程序中使用该任务。
要从 LabWindows/CVI 启动 DAQ 助手,请选择Tools»Create/Edit DAQmx Tasks。出现如图 1 所示的对话框。
图1
在于 LabWindows/CVI 项目创建任务时,将会有两种选择。
- 基于 MAX 中的任务是可以被同一电脑上的其它程序所使用。您可以直接在 MAX 中查看、编辑和测试此类型任务。您可以在多个项目中使用基于 MAX 的任务,甚至是不属于 LabWindows/CVI 中所创建的任务。
- 基于项目的任务是储存在项目中。存储在项目中的任务是该项目的本地任务。如果您需要在多个开发人员之间共享任务定义或将任务定义存储在源代码控制系统中,则基于项目的任务会更加方便。
创建一个基于 MAX 的任务
- 从Create/Edit DAQmx task对话框中选择Create New Task in MAX。
- 单击OK以启动 DAQ 助手。
- 在下一个对话框中,为您的任务选择测量类型,然后单击Next 。
- 选择虚拟通道并单击Next 。
- 输入任务的名称并单击Finish。 DAQ 助手已成功创建任务。
- 出现如图 2 所示的 DAQ 助手面板。在此面板中,您可以配置特定于通道的设置,例如缩放、输入限制和终端配置。您还可以配置特定于任务的设置,例如计时和触发。
图 2
- 当您指定各种设置时,您也可以测试该任务。单击Test按钮以验证任务是否正常工作。
- 完成后单击OK。 DAQ 助手将任务保存到 MAX。
有关使用 DAQ 助手配置任务的更多信息,请参阅随 NI-DAQmx 安装的
DAQ 助手帮助。
创建基于项目的任务
- 从Create/Edit DAQmx Tasks对话框中选择Create New Task in Project。
- 单击OK以启动 DAQ 助手。
- 在下一个对话框中,为您的任务选择测量类型,然后单击Next 。
- 选择虚拟通道并单击Next 。
- 创建任务后,将出现图 3 所示的 DAQ Assistant 面板。在此面板中,您可以配置特定于通道的设置,例如缩放、输入限制和终端配置。您还可以配置特定于任务的设置,例如计时和触发。
- 当您指定各种设置时,您也可以测试任务。单击Test按钮以验证任务是否正常工作。
- 指定任务名称、创建任务函数和目标目录。在图 3 所示的 DAQ 助手面板区域中输入此信息。
- Task Name——任务关联的名称以及将创建的.c 、 .h和.mxb文件的前缀。例如,使用DAQTaskInProject作为任务名称。
- Create Task Function——您将以编程方式来创建和配置任务的函数名称。例如,使用CreateDAQTaskInProject作为创建任务函数。
- Target Directory——将三个生成文件存储的目录。
图 3
- 单击OK以生成任务。
DAQ 助手创建三个文件来描述 LabWindows/CVI 中的任务:源文件 (
.c )、标题 (
.h ) 和任务描述
(
.mxb ) 文件。 LabWindows/CVI 自动将这些文件添加到项目中。生成的源文件和头文件定义了任务创建函数,其中包含以编程方式创建和配置指定任务所需的代码。生成的任务描述文件 (
.mxb ) 包含在 DAQ 助手中编辑任务时所使用的二进制任务的描述。打开
.mxb文件将会打开该任务的 DAQ 助手。这些文件都与任务相关,因此您从 DAQ 助手对任务所做的任何更改都会自动反映在生成的代码中。
有关使用 DAQ 助手配置任务的更多信息,请参阅随 NI-DAQmx 安装的
DAQ 助手帮助。
在 LabWindows/CVI 项目中使用任务
创建任务后,您可以在 LabWindows/CVI 项目中使用。
基于 MAX 的任务
要使用基于 MAX 的任务,请调用DAQmxLoadTask ,如图 4 所示。DAQmxLoadTask的功能面板包含电脑上所有基于 MAX 的 DAQmx 任务列表。在此功能面板中的Task Name控件上按 <Enter> 可查看任务列表。
#include <NIDAQmx.h> #include <cvirte.h>
static int32 samplesPerChan; static float64 data[1000]; static TaskHandle daqTask;
int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ /* 调用加载基于 MAX 的任务函数 */ DAQmxLoadTask ("MyVoltageTask", &daqTask); DAQmxReadAnalogF64 (daqTask, DAQmx_Val_Auto, 10.0, DAQmx_Val_GroupByChannel, data, 1000, &samplesPerChan, 0); DAQmxClearTask (daqTask); return 0; }
|
图 4
基于项目的任务要使用基于项目的任务,请调用在生成的头文件中所声明的task creation function (建立函数)(本范例中为
CreateDAQTaskInProject )。您还必须将其头文件包含到您的主项目文件中。有关示例,请参见图 5。
#include <NIDAQmx.h> #include <cvirte.h> /* 包含生成的头文件 */ #include "DAQTaskInProject.h"
static int32 samplesPerChan; static float64 data[1000]; static TaskHandle daqTask;
int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ /* 调用创建基于项目的任务函数 */ CreateDAQTaskInProject(&daqTask); DAQmxReadAnalogF64 (daqTask, DAQmx_Val_Auto, 10.0, DAQmx_Val_GroupByChannel, data, 1000, &samplesPerChan, 0); DAQmxClearTask (daqTask); return 0; }
|
图 5
基于项目和 MAX 的任务调用
DAQmxLoadTask或任务创建函数后,添加执行所需的操作以及所需的其他函数。例如,如果您正在从模拟输入通道读取数据,您可能需要使用
DAQmxReadAnalogF64函数。
完成任务后请调用
DAQmxClearTask 。此函数将停止任务并从内存中清除任务。
生成示例代码
您还可以使用 DAQ 助手生成运行任务所需的代码。
- 为基于 MAX 的任务生成范例代码——在 Source 窗口中,右键单击对DAQmxLoadTask的调用并选择Generate DAQ Example Code 。
- 为基于项目的任务生成范例代码——在 Source 窗口中,右键单击对任务创建函数的调用(例如CreateDAQTaskInProject )并选择Generate DAQ Example Code 。
当您为基于项目或基于 MAX 的任务选择Generate DAQ Example Code时,将出现 Generate DAQ Example Code 对话框,如图 6 所示。
图 6
在对话框中,指定运行任务的函数名称和包含生成的范例代码的文件,然后单击OK 。生成的代码包括定义运行任务函数的源文件和头文件。 LabWindows/CVI 自动将这些文件添加到工程中并修改当前源文件以调用运行任务函数。调用时,运行任务函数以编程方式创建一个用户界面,允许您启动任务并显示数据。
下图显示了为基于项目的任务所选择生成 DAQ 范例代码后的范例源文件。
#include <NIDAQmx.h> #include <cvirte.h> #include "DAQTaskInProject.h" /* 范例代码的头文件 */ #include "DAQTaskInProjectExampleCode.h"
static int32 samplesPerChan; static float64 data[1000]; static TaskHandle daqTask;
int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ CreateDAQTaskInProject(&daqTask); /* 调用运行任务的函数 */ RunDAQTaskInProject (daqTask); return 0; }
|
图 7
编辑现有任务
在创建任务后,您可以通过多种方式启动 DAQ 助手来编辑任务。您可以通过选择Tools»Create/Edit DAQmx Tasks。此命令将启动Create/Edit DAQmx Tasks对话框,您可以在其中选择要编辑的任务。
您可以通过选择My System»Data Neighborhood»NI-DAQmx Tasks中编辑基于 MAX 的任务
您可以通过在 LabWindows/CVI 的项目树中双击.mxb文件来编辑基于项目的任务。
当您完成任务编辑后,LabWindows/CVI 会根据您所做的任何更改来更新项目中的 MAX 任务或配置文件。但是,您生成的范例代码不会自动更新。因为范例代码没有直接链接到任务,如果您对任务进行任何修改,您必须重新生成任务的范例代码以更新您所做的更改。
将 MAX 任务复制到项目
您可以创建一个新的基于项目的任务,它是基于 MAX 的任务的副本。在 Source 窗口中,右键单击对DAQmxLoadTask的调用并选择Copy DAQ Task to Project 。在出现的对话框中,您必须指定任务名称、任务创建函数和目标目录,就像您在 DAQ 助手中为基于项目的任务指定的一样。当您单击 OK 时,LabWindows/CVI 会生成源文件 ( .c )、头文件 ( .h ) 和任务描述文件 ( .mxb ),并将这些文件添加到项目中;用对新任务创建函数的调用替换对DAQmxLoadTask的调用;并为生成的头文件添加include。
请注意,MAX 任务和您创建的新项目任务之间没有链接。您对 MAX 任务所做的任何更改都不会自动更新在新的项目任务中。
附加文件
有关 NI-DAQmx 的详细信息以及使用 DAQ 助手配置任务的详细信息,请参阅以下文件。
DAQ 快速入门指南,位于Start»...»National Instruments»NI-DAQ
NI-DAQmx 帮助,位于Start»...»National Instruments»NI-DAQ
DAQ 助手帮助,可在 DAQ 助手的右窗格中访问
LabWindows/CVI 帮助,位于 Start»...»National Instruments»LabWindows/CVI