时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Get Control Value.
GetCtrlVal (panelHandle, PANEL_SCANRATE, &ScanRate) 使用该函数我 们可以得到数字量ScanRate的值(请在该函数面板中声明局部双精度变量ScanRate).插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Get Control Value.
nidaqAICreateTask (ChanString, kNidaqWaveformCapture, &NumChan, &AiTask) 使用该函数我们可以创建一个模入采样任务AITask(请在该函数面板中声明全局整型变量AITask), 同时该函数根据ChanString可以返回一个表示该采样任务共有多少个通道的值NumChan(请在该函数面板中声明局部整型变量NumChan).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Creat Task(Required).
nidaqAIConfigScanClockRate (AiTask, ScanRate, &ActScanRate) 使用该函数我们可以设置采样的扫描速度ScanRate并且通过 ActScanRate返回采样的实际扫描速度(请在该函数面板中声明局部双精度变量ActScanRate).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Config Timing…>>AI Config Scan Clock Rate…
nidaqAIConfigBuffer (AiTask, 2000000, kNidaqContinuous) 使用该函数我们可以设置采样缓冲为2M(即2000000).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Config Buffer…
nidaqAIStart(AiTask)使用该函数我们可以启动数据采集任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Start (Required)…
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 1) 我们在UIR 中将AI Timer的属性设置为非运行状态,现在通过该函数将AI Timer 属性设置为 Enable 即从现在开始AI Timer 开始运行,每隔固定的时间间隔调用一次AITimerCallBack( )函数.插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Set Control Attribute...
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 0) 使用该函数我们可以让控件AI Timer停止工作.插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Set Control Attribute...
nidaqAIStop (AiTask) 使用该函数我们可以停止采样任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Stop (Required)…
nidaqAIDestroyTask (AiTask) 使用该函数我们可以取消采样任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Destroy Task(Required)…
DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1, VAL_IMMEDIATE_DRAW)使用该函数我们可以清除Graph控件上所画的图形.插入该函数时请选择:Library>>User Interface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plottin
13
g and Deleting>>Delete Graph Plot…
nidaqAICheck (AiTask, &AcqState, &AcqBacklog)使用该函数我们通过返回AcqState参数的值可得知采样过程的状态;通过返回AcqBacklog参数的值可得知所采样以放在缓冲中的有多少个点我们未读取(请在该函数面板中声明局部长整型变量AcqState与AcqBacklog).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Destroy Task(Required)…
nidaqAIRead (AiTask, ChanString, AcqBacklog, -1.0, AcqData) 使用该函数我们可以将缓冲中未读的数据读到数组AcqData中(请在该函数面板中声明局部双精度数组变量AcqData[10000]).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Read (Required)…
DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1, VAL_IMMEDIATE_DRAW)使用该函数我们可以清除Graph控件上所画的图形.插入该函数时请选择:Library>>User Interface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Delete Graph Plot…
PlotWaveform(panelHandle,PANEL_GRAPH,AcqData,AcqBacklog,VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED) 使用该函数我们可以将读到数组AcqData中的数据(AcqBacklog个数据)画到控件Graph上.插入该函数时请选择:Library>>User Interface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Plot Waveform ..
下面我们将仔细讲解当Acquire/Stop开关被扳上(下)去后程序的运行过程.程序流程图如下:
GetCtrlVal (panelHandle, PANEL_ACQUIRE, &Value) // 得到Acquire/Stop二进制开关的值Value
= 0 SetCtrlAttribute ( )
Value // 让AITimer 停止工作 =1
GetCtrlVal (panelHandle, PANEL_CHANNEL_STRING, ChanString) // 从UIR上字符串控件ChannelString得到采样通道设置 GetCtrlVal (panelHandle, PANEL_SCANRATE, &ScanRate) // 从UIR上数字量控件ScanRate得到采样扫描速率设置
nidaqAICreateTask ( ) // 创建采样任务
nidaqAIConfigScanClockRate ( ) // 设置扫描速率 nidaqAIConfigBuffer ( ) // 设置缓冲区大小 nidaqAIStart( ) // 采样任务开始
SetCtrlAttribute ( ) // 让AITimer 开始工作
注意:让AITimer开始工作其实也就是每隔一定的时间间 隔调用一次AITimerCallback( )函数 每隔0.1秒
14
AITimerCallback( ) {
nidaqAICheck ( ) // 检查采样过程中缓冲的状态 nidaqAIRead ( ) // 从缓冲中读取数据
DeleteGraphPlot( ) // 先清除Graph上已有的图形
PlotWaveform( ) // 把从缓冲中读到的数据画到Graph上 }
AITimer 是 No 否停止工作 Yes
nidaqAIStop ( ) // 停止采样任务
nidaqAIDestroyTask ( ) // 取消采样任务
到此为止我们已经完成本章的学习,有些内容需要读者反复研读以理解LabWindows/CVI在数据采集中的应用,该程序亦可作为读者进一步学习LabWindows/CVI的敲门砖.
通过本部分的学习,你是否已经掌握
□ LabWindows/CVI 中数采程序设计步骤及程序的运行机制.
巩固在用户接口编辑窗中用快捷方式生成或查看回调函数,在源代码窗中用快捷方式返回到函数面板或对应控件元素等编程中所需的快捷操作.
巩固在函数面板上声明变量,选择变量或常量,插入函数等快捷操作. 后 记
通过对本书的学习,相信读者已经基本掌握了LabWindows/CVI编程基本操作.希望读者在初学时一定要注意程序设计的思想,而不必要过多的去抠一些细节问题.下面谈谈如何进一步学习与使用LabWindows/CVI的一些捷径.
在LabWindows/CVI安装目录下的Samples文件夹下有非常多的例程,请读者选择自己感兴趣类别的例子打开后看看,并且读者在开发项目时直接将这些例子中的一些程序拷贝到自己的程序中去.这样做,不但能减少开发时间并且减少程序的出错机率,这是一项实在值得读者注意的技巧.
怎么看懂例程 当读者打开一个例子后,通过查看控件对应回调函数,返回函数对应的函数面板以及查看函数参数在线帮助,你就可以通过这些方法看懂例程.从而即可以学习函数的使用也能够明白编制某类别程序的基本思想.
下面所列的是在使用LabWindows/CVI开发程序时值得一看的书目: 1.LabWindows/CVI在线帮助中CVI Library>>Online Manuals For LabWindows/CVI 中的一些程序设计参考书.
2 .读者若装有NI公司的数采卡,则在装DAQ驱动后读者会在 在开始>>程序 >>National Instruments DAQ>>Documents中 找到下面这本书:NI-DAQ User Manual for PC Compatibles 该 书详细得介绍了怎样使用DAQ函数,实在是值得一读的一 本书.
15
相关推荐: