步骤:
DAQmxCreateTask
函数创建任务。DAQmxCreateDOChan
函数创建数字输出通道。DAQmxStartTask
函数来启动任务。DAQmxWriteDigitalLines
函数对数字端口进行数据写入。DAQmxStopTask
函数来停止任务。DAQmxClearTask
函数来清除任务。int32 DAQmxCreateTask (const char taskName[], TaskHandle *taskHandle);
说明:
创建任务。如果使用此函数创建任务,则必须使用DAQmxClearTask
来销毁它。如果在循环中使用此函数,NI DAQmx会在循环的每次迭代中创建一个新任务。完成任务后,请在循环中使用DAQmxClearTask
函数,以避免分配不必要的内存。
参数:
示例:
//创建任务task
TaskHandle taskHandle=0;
DAQmxCreateTask("", &taskHandle);
int32 DAQmxCreateDOChan (TaskHandle taskHandle, const char lines[], const char nameToAssignToLines[], int32 lineGrouping);
说明:
创建通道以生成数字信号,并将通道添加到使用taskHandle指定的任务中。您可以将数字线路分组为一个数字通道,也可以将它们分离为多个数字通道。如果使用端口物理通道名称在行中指定一个或多个完整端口,则无法将端口分隔为多个通道。要将端口分成多个通道,请多次使用此功能,每次使用不同的端口。
参数:
nameToAssignToLines
指定自己的名称,则在其他NI DAQmx函数中引用这些通道时必须使用这些名称。lineGrouping
设置为DAQmx_Val_ChanForAllLines
示例:
DAQmxCreateDOChan(taskHandle, "Dev1/line0:71","",DAQmx_Val_ChanForAllLines);
int32 DAQmxStartTask (TaskHandle taskHandle);
说明:
将任务从提交状态转换为运行状态,从而开始测量或生成。使用此功能对于某些应用程序是必需的,对于其他应用程序则是可选的。如果不使用此功能,读取操作开始时,测量任务将自动启动。NI DAQmx Write
函数的autoStart
参数确定在使用NI DAQmx-Write
函数时生成任务是否自动启动。如果在多次调用NI DAQmx Read
函数或NI DAQmx Write
函数时(例如在循环中)未调用DAQmxStartTask
和DAQmxStopTask
,则任务会重复启动和停止。重复启动和停止任务会降低应用程序的性能。
参数:
示例:
DAQmxStartTask(taskHandle);
int32 DAQmxWriteDigitalLines (TaskHandle taskHandle, int32 numSampsPerChan, bool32 autoStart, float64 timeout, bool32 dataLayout, uInt8 writeArray[], int32 *sampsPerChanWritten, bool32 *reserved);
说明:
将多个样本写入任务中的每个数字行
参数:
DAQmx_Val_GroupByChannel
:按通道分组(未插入),DAQmx_Val_GroupByScanNumber
:按样本分组(交错)示例:
uInt8 data[71]={0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 };
DAQmxWriteDigitalLines(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,data,NULL,NULL);
int32 DAQmxStopTask (TaskHandle taskHandle);
说明:
关闭任务
参数:
示例:
DAQmxStopTask(taskHandle);
int32 DAQmxClearTask (TaskHandle taskHandle);
说明:
清除任务
参数:
示例:
DAQmxClearTask(taskHandle);
TaskHandle taskHandle=0;
uInt8 data[71]={0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 };
DAQmxCreateTask("", &taskHandle);
DAQmxCreateDOChan(taskHandle, "Dev1/line0:71","",DAQmx_Val_ChanForAllLines);
DAQmxStartTask(taskHandle);
DAQmxWriteDigitalLines(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,data,NULL,NULL);
DAQmxStopTask(taskHandle);
DAQmxClearTask(taskHandle);