labwindows/cvi数据采集-DAQ相关函数介绍

1.如果函数状态出现错误,就用goto语句跳转到错误Error函数块去执行。Error需要自己定义

#define  DAQmxErrChk(functionCall)       if( DAQmxFailed(error=(functionCall)) ) goto Error; else

2.创建任务函数------DAQmxCreateTask   

1)函数原型

int32 DAQmxCreateTask (const char taskName[], TaskHandle *taskHandle);

2)函数作用

创建一个任务,且创建任务之后必须要清除这个任务(DAQmxClearTask)

如果这个函数在循环体内,则必须把清除任务函数也放在函数体内,以避免浪费太多内存

3)关键点

    DAQmxErrChk (DAQmxCreateTask("",&gAItaskHandle));//输入任务

    DAQmxErrChk (DAQmxCreateTask("",&gAOtaskHandle)); //输出任务

第一个是名字,第二个是句柄。名字可以不用,用空格也可以。

3.输入通道配置函数-------DAQmxCreateAIVoltageChan

1)函数原型

int32 DAQmxCreateAIVoltageChan (TaskHandle taskHandle, const char physicalChannel[], const char nameToAssignToChannel[], int32 terminalConfig, float64 minVal, float64 maxVal, int32 units, const char customScaleName[]);

2)函数作用

创建测量电压的通道,并将通道添加到使用taskHandle指定的任务中。可以不止一个通道

3)关键点

taskHandle--------任务句柄。gAItaskHandle
physicalChannel[]------物理通道名,例:"Dev1/ai0:1",去labwindows查看

nameToAssignToChannel-------起一个别名,可以不用

terminalConfig-----------终端配置,可以选择下列四种

Value Description
DAQmx_Val_Cfg_Default At run time, NI-DAQmx chooses the default terminal configuration for the channel.
DAQmx_Val_RSE Referenced single-ended mode
DAQmx_Val_NRSE Non-referenced single-ended mode
DAQmx_Val_Diff Differential mode
DAQmx_Val_PseudoDiff Pseudodifferential mode

minVal,maxVal-------测量电压的上下限制

units------单位,可以指定是伏特,或者是自定义比例值。

customScaleName--------自定义比例值时调用,不用的时候写null

4.DAQmxCreateAOVoltageChan-------创建电压输出通道

1)函数原型

int32 DAQmxCreateAOVoltageChan (TaskHandle taskHandle, const char physicalChannel[], const char nameToAssignToChannel[], float64 minVal, float64 maxVal, int32 units, const char customScaleName[]);

2)函数作用

与上面那个函数类似,创建输出通道,可以不止一个通道。

3)关键点

与上面类似

5.DAQmxCfgSampClkTiming-----配置采样时钟

1)函数原型

int32 DAQmxCfgSampClkTiming (TaskHandle taskHandle, const char source[], float64 rate, int32 activeEdge, int32 sampleMode, uInt64 sampsPerChanToAcquire);

2)函数作用

设置采样时钟的源、采样时钟的速率以及要获取或生成的采样数。

3)关键点

source[]------样本时钟的源端。要使用设备的内部时钟,请使用NULL或OnboardClock。

rate------采样频率;

activeEdge-----指定在时钟的哪个边缘上获取或生成样本。在采样时钟的上升沿上采集或生成采样,或者在样本时钟的下降沿上采集或生成样本

sampleMode----采样模式,是连续采样还是有限采样

sampsPerChanToAcquire-----每个通道的采样点。如果sampleMode为DAQmx Val_FiniteSamps,则为任务中的每个通道采集或生成的样本数。如果sampleMode是DAQmx_Val_ContSamps,则NI DAQmx使用此值确定缓冲区大小。

我自己需要注意的点:我的电压输出是优点,采样是连续的。

6.此外还有触发设置函数,但是我不想改动了,可以参考示例DAQmxCfgDigEdgeStartTrig

7.往设备中写数据DAQmxWriteAnalogF64

8从设备中读数据DAQmxReadAnalogF64

9.DAQmxRegisterDoneEvent-------注册回调函数

1)函数原型

int32 DAQmxRegisterDoneEvent (TaskHandle taskHandle, uInt32 options, DAQmxDoneEventCallbackPtr callbackFunction, void *callbackData);

2)函数作用

注册回调函数,以便在任务因错误而停止或有限获取任务或有限生成任务完成执行时接收事件。当任务显式停止(例如通过调用DAQmxStopTask)时,不会发生Done事件。(因为标红的部分,害我调试了一下午)

3)关键点

callbackFunction----自定义一个函数,事件发生时希望DAQmx调用的函数。

传入此参数的函数必须具有以下原型:

int32 CVICALLBACK callbackFunction(TaskHandle TaskHandle,int32 status,void*callbackData);

进入回调后,task handle参数包含发生事件的任务的句柄。status参数包含事件发生时任务的状态。如果状态值为负,则表示有错误。如果状态值为零,则表示没有错误。如果状态值为正,则表示警告。callbackData参数包含您在此函数的callbackData参数中传递的值。参数传递NULL将注销事件回调函数。

10.DAQmxRegisterEveryNSamplesEvent----值满传输事件

1)函数原型

int32 DAQmxRegisterEveryNSamplesEvent (TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples, uInt32 options, DAQmxEveryNSamplesEventCallbackPtr callbackFunction, void *callbackData);

2)函数作用

注册一个回调函数。将设定数量的数据从PC缓冲区传输到设备,或者将设定数量的数据从设备传输到缓冲区。

当您显式停止任务时,将丢弃任何挂起的事件。例如,如果调用DAQmxStopTask,则不会收到任何挂起的事件。

3)关键点

事件发生时希望DAQmx调用的函数。传入此参数的函数必须具有以下原型:

int32 CVICALLBACK回调(TaskHandle TaskHandle,int32 everyNsamplesEventType,uInt32 nSamples,void*callbackData);进入回调后,task handle参数包含发生事件的任务的句柄。everySamplesEventType参数包含您在此函数的everySamplesEventType参数中传递的值。nSamples参数包含您在此函数的nSamples参数中传递的值。callbackData参数包含您在此函数的callbackData参数中传递的值。

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
LabWindows/CVI是一个基于C语言的开发环境,广泛用于数据采集和控制系统的开发。它提供了丰富的函数库和工具,用于快速开发各种应用程序。 数据采集与串口通信是LabWindows/CVI中常见的应用之一。通过串口通信,可以与外部设备进行数据交换和控制。下面是关于LabWindows/CVI数据采集与串口通信典型应用实例PDF下载的说明。 首先,你可以在NI官方网站上找到相关的学习资料和示例代码。NI网站提供了丰富的教程、应用案例和免费的LabWindows/CVI开发工具下载。你可以在搜索框中输入关键词"LabWindows/CVI数据采集与串口通信应用示例",即可找到相关资料。 其次,还可以在LabWindows/CVI社区论坛中获取更多的资料和技术支持。在论坛上,你可以与其他开发者交流经验、提问问题,并且有机会下载一些高质量的示例代码。在搜索框中输入关键词"LabWindows/CVI数据采集与串口通信示例PDF下载",即可找到相关帖子和资源。 此外,你还可以在一些开发社区和技术论坛上寻找相关的资源。这些网站上有很多社区成员分享的学习资料和应用案例,你可以通过搜索关键词找到相关的内容。 总结起来,要下载LabWindows/CVI数据采集与串口通信典型应用实例的PDF资料,可以通过NI官方网站、LabWindows/CVI社区论坛和其他开发社区进行搜索和下载。这些资源将帮助你快速学习和应用LabWindows/CVI数据采集和串口通信功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙八瓶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值