File: 创建,保存或打开文件. Edit: 可用来编辑源代码文件.
View: 设置源代码编辑窗的风格等功能. Build: 编译文件以及编译设置. Run: 运行程序.
Instrument: 装入仪器驱动程序. Library: 函数库.
Tools: 一些你可使用的工具项.
Windows: 用来访问某个已经打开的窗,例如:项目工程窗,用接 口编辑窗,源代码窗… .
Options: 设置用接口编辑窗的编辑环境.
Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮 助.
说明:在编程中有一快捷菜单是非常有用的,当你把鼠标指在某一函数上点击右键后便弹出一快捷菜单,通过该菜单你可以查看回调函数以及与该函数对应控件元素.这是一个大家以后在编程中要常用到的技巧,请掌握. 第四节 函数面板(Fuction Panel)
在LabWindows/CVI 编程环境下,当你想在源程序某处插入函数时,你只需从函数所在的库中选择该函数后便会弹出一个与之对应的函数面板,你所做的就是:填入该函数所需的参数后完成插入即可.而且更为方便的是:若参数是一你以有的常量或变量,你只需点击常量或变量工具按扭后选择你所需的量即可;若参数是一变量,你直接可声明该变量而无须再切换至源代码窗.
下面我们就谈谈这些在LabWindows/CVI中可以加快你编程的技巧. 一个函数面板如下图所示:
这是FirstSample中产生一个正弦波的函数其中SinePattern项是用来装正弦波的数组,我们在程序中使用数组Wave[512] 来装正弦波的.当我们在SinePattern项填入Wave后,由于Wave是一变量,所以我们需要声明该变量:让鼠标指在Wave上然后点击工具条中的声明变量按扭 后, 便弹出一个声明变量对话框即可声明该变量为局域变量或为全局变量.
当你所填参数是一以有的常量或变量,你只需点击选择常量或变量工具按扭后选择你所需的量即可,下面就介绍该技巧:
上图是FirstSample中把数组Wave中的正弦波画到Graph上去的PlotWaveform函数.其中,Control ID 项所填的是程序中用来标识GUI中控件元素的常量,该常量是由LabWindows/CVI自动在头文件中预定义的(你可以打开头文件看看).故当我们填入该常量时只需将鼠标放在Control ID项的文本框中然后用鼠标点击工具条中的选择属性或UIR常量按扭 后, 便弹出一个选择属性或UIR常量对话框,选择你所需的常量或属性即可.Panel Handle 是程序运行开始时UIR的句柄,是由LabWindows/CVI 自动生成的是一变量;Number of Points 项需填的是512,这正是我们在声明Wave时已用过的;Y Array 项所填的是我们已经声明过的变量 —— 数组Wave;故当我们填入以上各项时只需将鼠标放在对应项下文本框中,然后用鼠标点击工具条中的选择变量按扭 后, 便弹出一个选择变量对话框,选择你所需的变量Wave即可.
当你填完函数的参数后,点击插入按扭后即可完成函数的插入,而无须再选择菜单中的插入命令.
以上这些都是加快你编程的技巧,这些技巧你以后编程时是会非常频繁使用的.而这些也正是LabWindows/CVI 开发环境所独具的加快你编程速度的特色.
9
说明:当你的鼠标落在工具条按扭上时,计算机会自动的显示该工具按扭的功能. 请你使用上面所讲技巧重新编制FirstSample,我相信你将会有新的收获.
当你对函数中的某个参数有不明白的时候,你只须将鼠标置于该项的文本框中点击鼠标右键后便会出现对此参数说明的在线帮助,这一技巧在编程中是非常有帮助的. 如果你想进一步了函数面板(Function Panel )细节请使用在线帮助.
请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI 请查阅 LabWindows/CVI User Manual Chapter 6 Using Function Panels
第四章 LabWindows/CVI 的函数库(Library)
LabWindows/CVI 其强大功能的所在就是基于其非常丰富的库函数.LabWindows/CVI 所提供的库函数从用户图形界面,数据采集,数据分析,仪器控制 … 到现在Internet时代的TCP.所以说LabWindows/CVI 在测量领域成为先锋的同时又与当前时代的新科技保持了同步.
下面我们就来谈谈LabWindows/CVI 的函数库,我们把LabWindows/CVI 的函数库分为了五个大的方面,各个方面又分成了不同的小类: ·数据采集方面(Data Acquisition),7个库: Instrument Library: 仪器驱动库
GPIB/GPIB 488.2 Library: 仪器控制函数库 Data Acquisition Library: 数据采集函数库 Easy I/O for DAQ : 易用的数据采集函数库 RS 232 Library : RS 232 库 VISA Library : VISA 库 VXI Library : VXI库 ·数据分析方面,两个库:
Formatting and I/O Library : 格式化以及输入输出库 Analysis Library: 分析库
或者Advanced Analysis Library: 高级分析库 ·数据显示方面:
User Interface Library : 用户接口库
说明: 用户接口库中提供了许多用于与面板上各种控件元素打交道的函数,通 过这些函数你可以非常容易的把一个采集来的波形画到Panel 的Graph 上或删除Graph 上已画的图形;得到Panel上某个控件元素的数值以及 把某个数值写到Panel上的某个控件元素上去(亦就是改变该控件元素的 值);修该Panel上控件元素的属性.总之,你只有熟练掌握了用户接口
库函数后才能使你创建的用户图形界面正正的动起来,该库是初学者应迅 速熟悉的库. ·网络,通信与数据交换方面,四个库: DDE Library : 动态数据交换库 TCP Library: TCP库
Active X Automation Library: Active X自动化库 DataSocket Library: DataSocket库 ·其它方面:
ANSI C Library: 标准C 库
如果你想进一步了解LabWindows/CVI 函数库(Library)细节请使用在线帮助. 请选择:Help>>CVI Library>> Library Help中你感兴趣的库
10
通过本部分的学习,你是否已经掌握
□LabWindows/CVI 程序设计步骤及程序的运行机制. 三个主要窗的基本操作.
在用户接口编辑窗中用快捷方式生成或查看回调函数,在源代码窗中用快捷方式返回到函数面板或对应控件元素等编程中所需的快捷操作.
在函数面板上声明变量,选择变量或常量,插入函数等快捷操作. LabWindows/CVI 库的构成及其在编程中适用的方向. 第四部分 CVI 中数据采集的应用
通过前两部分的学习,读者应该已掌握了LabWindows/CVI程序设计的基本步骤,思路以及编程环境.本部分将在前两部分的基础上讲解LabWindows/CVI中的数据采集,并在讲解的过程中编制一个程序:EeasyIOSample .请读者确保自己已经安装了Daq驱动,否则你会找不到例子中要用到的函数.
Easy IO 库中数采函数的应用
本章我们将使用Easy IO 库中的数采函数来编制一个真正能用于实际工作中的数据采集程序 EasyIOSample.
我们程序运行时的界面如下图所示: 其中各控件元素的功能说明如下:
ChannelSrting 项是一字符串控件,我们通过该项来设置采集数据的 通道(数采路径).我们把该项缺省设置为:daq::1!(0) 其意思是指:采集设备(device)1的0通道(channel). 其中设备号正是你在Measurement &Automation 中所 看到的对应于数采板的编号.在数采停止时,该项是 可以修改的.daq::1!(0) 这段字符串是NI 数采通道的 语法表示,具体说明如下: daq::1!(0,2,5) 是指采集设 备1的通道0,2,5.daq::1!(2:6)是指采集设备1的通 道2,3,4,5,6.
ScanRate项是一数字控件,我们通过该项来设置扫描速率,其缺省 设置为1000
Acquire/Stop项是一开关控件,我们通过该开关来控制数据采集的开 始与停止.
Clear项是一按扭,当我们按下该按扭后即可清除Acquire Wave上所 画的波形.
Quit项是一按扭,当我们按下该按扭后,退出程序.
Acquire Wave项是一波形显示控件,我们所采集的数据正是通过该 控件来显示的.
现在我们就开使创建该程序.首先按下面步骤起动CVI: 开始>>程序>>National Instrument CVI>>CVI IDE 或者直接从桌面起动CVI 的快捷方式,双击桌面 National Instrument CVI 图标
当LabWindows/CVI打开后你就会见到如下所示的项目(Project)窗,里面装的正是我们上次创建的FirstSample.prj:
选择:File>>New>>Project(*.prj)… 便会弹出一个对话框,如下所示:
询问你是否移走当前的项目工程,点击OK按扭,确定移走后又会弹出一个对话框如下所示:
11
询问你转移该项目的选项,全选之后点击OK按扭后,便会弹出一个新的项目工程窗. 第一节 创建图形用户界面
从Project窗中选择:File>>New>>User Interface(*.uir)…创建一个用户图形接口文件(*.uir). 下图就是本程序应该创建的UIR界面:
请按下面步骤创建下列控件元素以及修改其属性: 创建一个string ,修改其属性如下图所示: 创建一个Numeric, 修改其属性如下图所示: 创建一个BinarySwitch, 修改其属性如下图所示: 创建一个Timer控件, 修改其属性如下图所示:
请你确保Control Settings中Enable项前的矩形框是空的,因为我们将AI Timer的初始状态设置为非运行状态.
说明:Timer控件是一我们在编程时常用到的控件,当程序运行时图形用户界面上是看 不到Timer控件的.当你设置Timer有回调函数时,计算机会每隔固定的时间调 用一次Timer的回调函数.该时间间隔你是可以在Edit Timer 窗中Contro Settings 的Inteval(seconds)项中设定的.本程序设定时间间隔为0.1秒,也就是说:当程 序运行时,每隔0.1 秒AITimerCallback( )函数就会被调用一次. 创建一个Graph控件, 修改其属性如下图所示:
创建两个Command控件, 修改它们属性分别如下两图所示: 最后修改Panel的属性如下图所示:
创建好各控件元素后,将它们按下图所示排放好各自的位置:
说明:由于程序运行时,AI Timer 控件并不在界面中显示,故AI Timer的位置你可以随 意放置.
选择:File>>Save 保存UIR文件,命名为EasyIOSample.uir. 第二节 产生程序代码与添加函数代码
从用户图形界面窗口中选择:Code>>Generate>>All Code… 产生源程序框架.
其源程序代码中需要你注意的如下:当某一行字符是蓝色时是指该行代码是需要我们添加上去的.为了作者讲解函数功用的方便,作者按照顺序把插入的函数编了号,标注在该函数的顶头.
#include #include #include
#include \ static int panelHandle; static long AiTask;
int main (int argc, char *argv[]) {
if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, \h/Strip Chart>>General Functions>>Get Control Value.
GetCtrlVal (panelHandle, PANEL_CHANNEL_STRING, ChanString) 使用该函数我们可以得到字符串ChannelString的值(请在该函数面板中声明局部字符串变量ChanString).插入该函数
12
相关推荐: