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参数中传递的值。

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

  1. LabWindows/CVI 下载

    LabWindows/CVI 是National Instruments 公司(美国国家仪器公司,简称NI 公司)推出的交互式C 语言开发平台.LabWindows/CVI 将功能强大.使用灵活的C ...

  2. LabWindows™/CVI中的多线程技术

    目录(?)[+] http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 o ...

  3. LabWindows™/CVI中的多线程技术【转】

    http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 out of 5 R ...

  4. 通过串口通讯实现LabWindows/CVI对GDM-906X万用表的上位机控制

    前言:本篇介绍了如何通过串口通讯实现对GDM-906X万用表的上位机控制,由于小明还在对LabWindows/CVI的学习阶段,只是实现了对AC/DC电压电流和电阻的测量. 界面演示: 一.创建uir ...

  5. Labwindows/cvi 2017生成软件安装包只能在win10以上系统安装,NI官方给出原因。

    Labwindows/cvi 2017生成软件安装包只能在win10以上系统安装 最近一直使用CVI开发上位机软件,之前一直用CVI2012由于IDE比较老使用起来不太友好,所以更换了CVI2017, ...

  6. Arduino 串口通讯参考笔记 - Serial 类库及相关函数介绍

    @TOArduino 串口通讯参考笔记 - Serial 类库及相关函数介绍 C 声明: 本ID发布的所有文章及随笔均为原创,可随意转载,单转载文章必须注明作者 saner686 及包含原文出处地址 ...

  7. LabWindows CVI 2017开发笔记--串口调试软件实例

    一.新建工程 打开LabWindows CVI软件,在桌面新建SerialDebug文件夹用来保存工程文件,在欢迎页点击New–>Project 或者在软件首页点击File–>New–&g ...

  8. LabWindows CVI 2017开发笔记--串口调试软件实例源码

    基于Labwindows CVI 2017编写的一个简单的串口调试助手,附带接收一个00–99的两位数并进行波形绘制的功能,编写过程可见:https://blog.csdn.net/Stark_/ar ...

  9. LabWindows CVI 2017开发笔记--常用API

    参考资料:https://download.csdn.net/download/Stark_/87424565?spm=1001.2014.3001.5501 转载注明出处:https://blog. ...

最新文章

  1. python globals().get,python – 为什么人们会使用globals()来定义变量
  2. mysql load data infile 重写_mysql load data infile 命令的数据导入
  3. Java基础篇3——流程控制
  4. 如何更好地理解Javascript对象的自有属性和原型继承属性
  5. 基于SpringBoot的项目管理后台
  6. 使用 MacBook Pro 的硬件重置功能解决故障
  7. Python暴力破解附近局域网WiFi密码
  8. 城市智慧排水系统导论
  9. 企业网络安全的重要性
  10. 压缩包已损坏或压缩格式未知无法打开 的解决办法
  11. Unity2021 Inventory(背包)系统学习记录
  12. eNSP第五篇扩展1:vrrp over nqa,nqa探测,双重vrrp监听方法1,vrrp与nqa结合
  13. 月均200wUP主活跃的B站涨粉密码是什么?
  14. 视觉在机器人领域的应用
  15. Win10杀毒软件大PK:Defender垫底 卡巴/小红伞第一
  16. 淘宝商品采集上架拼多多店铺(无货源数据采集接口,拼多多商品详情数据,淘宝商品详情数据,京东商品详情数据)接口代码对接教程
  17. 树的先序遍历(双亲表示法)
  18. 低配置高自由度游戏_高/低游戏
  19. win10下载python失败_win10环境下python下载安装,及一些错误的解决方案
  20. 【华为】MPLS及MPLS VPN概念

热门文章

  1. macports 安装php,「macports」MacOS 中 MacPorts 安装和使用 - 金橙教程网
  2. 安装macports
  3. linux 同步北京时间 局域网同步时间
  4. Java平行线算法_多边形的平行线填充算法
  5. go语言怎么 控制一个变量输入的范围_go语言并发原理和机制【二】
  6. 零基础Python完全自学教程11:Python中的选择语句
  7. 交通车辆工程机械高级仪器设备用丙烯酸磁漆 耐化学品性能好
  8. 山西初中计算机网络教案,山西省各地初中教材版本
  9. 推荐系统实践(七)----基于邻域的社会化推荐算法
  10. excel不显示0_表格0值太多,看起来不够美观简洁,只需这么做1分钟将0值隐藏掉...