您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页第一讲Labwindows (8.5版)虚拟仪器及其开发语言工具简介

第一讲Labwindows (8.5版)虚拟仪器及其开发语言工具简介

来源:华佗小知识
第一讲 虚拟仪器及其开发语言工具

学时分配:共32,2学时考试,4学时大作业,26学时共13讲 1.1什么是虚拟仪器? 一、引言

随着计算机技术、大规模集成电铬技木和通信技术的飞速发展,仪器技术领域发生了 巨大的变化,美国国家仪器公司(National Instruments, 简称NI)于20世纪80年代中期首先提出基于计算机技术的虚拟仪器的概念,把虚拟测试技术带入新的发展时期,随后研制和推出了基于多种总线系统的虚拟仪器。经过十几年的发展,虚拟仪器技术将高速发展的计算机技、电子技术、通信技术和测试技术结合起来,开创了个人计算机仪器时代,是测量仪器工 业发展的一个里程碑。

传统仪器:由电子电路+调节按钮组成,一旦仪器做好,功能很难改变。

1.1传统的示波器 1.2万用表

1.3频率计

虚拟仪器:虚拟仪器就是在通用计算机上加上一组软件和硬件,使用者在操作这台计算机时,就象是在操作一台他自己设计的专用电子仪器。

其优势在于可由用户自己定义通用仪器系统,且功能灵活,容易构建,因此应用广泛。用户可将各种计算机平台、硬件、软件和各种附备件结合起来,形成自己所需要的各种特定设备。可以是一台数字多用表,也可以是一台示波器,还有可能是一台信号源,或者它同时具有这些设备的所有功能甚至于更多的功能。

1

1.4虚拟仪器电表 1.5虚拟示波器

1.6虚拟温度测量仪

“虚拟”主要包含以下两方面的含义。 • 虚拟的虚拟仪器的面板

1、虚拟仪器面板上的各种“控件”与传统仪器面板上的各种“器件”所完成的功能是相同的。 如由各种开关、按键、显示器等实现仪器电源的“通”、“断”,被测信号“输入通道”、“放大倍数”等参数设置,测量结果的“数值显示”、“波形显示”等。

2、传统仪器面板上的器件都是实物,而且是用手动和触摸进行操作的,而虚拟仪器面板控件是外形与实物相像的图标,通、断、放大等对应着相应的软件程序。

3、这些控件已经设计好了,用户不必设计,只需选用代表该种软件程序的图形控件即可,由计算机的鼠标来对其进行操作。 二、虚拟仪器的组成结构

1、按照结构来说

虚拟仪器由仪器硬件平台和应用软件两大部分构成。

硬件平台由计算机+各种数据采集卡和总线仪器组成。虚拟仪器组成结构如1.7图所示。

2

1.7虚拟仪器组成结构

应用软件是利用虚拟仪器的软件开发工具,如LabWindows/CVI, LabVIEW等编程语言工具在计算机上编写的应用软件。

2、按照功能来说

如下图所示,虚拟仪器具有数据采集、数据分析和结果显示的功能,

3

图1.8虚拟仪器的内部功能划分

用户利用虚拟仪器的软件开发工具编写的应用软件具有数据采集、数据处理、数据分析、数据存储和显示输出等功能,是虚拟仪器的关键。 三、虚拟仪器的特点 1.2 Labwindows/CVI简介

虚拟仪器编程语言LabWindows/CVI是NI公司幵发的Measurement Studio软件组中的 一员。它是32位的面向计算机测控领域的虚拟仪器软件开发平台,可以在多操作系统下运 行。LabWindows/CVI是以ANSI C为核心的交互式虚拟仪器开发环境,它将功能强大的C 语为开发人员建立检测言与测控技术有机结合,具有灵活的交互式编程方法和丰富的库函数,系统、自动测试环境、数据釆集系统、过程监控系统等提供了理想的软件开发环境,是实现虚拟仪器及网络化仪器的快速途径。

使用LabWindows/CVI设计的应用程序可脱离LabWindows/CVI开发环境运行,并可以打包生成.msi安装文件。LabWindows/CVI主要采用事件驱动与回调函数方式。 一、 LabWindows/CVI的特点

1、与传统仪器相比,虚拟仪器有以下几个特点: (1)功能由用户自己定义;

(2)面向应用的系统结构,可方便地与网络外设、应用程序等连接; (3)展开图形操作界面,由计算机完成读数并分析处理; (4)数据可编辑、存储、打印;

(5)价格低廉(是传统仪器价格的五至十分之一?); (6)基于计算机技术开放的功能模块可构成多种仪器; (7)技术更新快(周期为1~2年);

(8)基于软件体系的结构,大大节省开发维护费用; (9)个人可以拥有一个实验室。

2、LabWindows/CVI作为一个优秀的软件幵发平台,和其他虚拟仪器开发工具相比,具有 如下特点。

1、交互式的程序幵发

LabWindows/CVI将源码编程、32位ANSI C编译、链接、调试及标准ANSI C库等集成在一个交互式开发平台中,釆用简单直观图形用户界面设计,利用函数面板输入函数的参数,釆用事件驱动方式和回调函数方式的编程技术,有效地提髙了工程设计的效率和可靠性。

4

2、功能强大的函数库

如接口函数库、信号处理函数库、Windows SDK等,利用这些函数库可轻松实现复杂的数据采集和仪器控制系统的开发。同时,LabWindows/CVI附加了各种功能的软件开发包,如数据库软件包、Internet软件包、小波分析软件包等,大大增强了LabWindows /CVI 的性能。

3、灵活的程序调试手段

LabWindows/CVI提供了单步执行、断点执行、过程跟踪、参数检查、运行时内存检查等多种调试手段。 4、高效的编程环境

LabWindows/CVI以其面向虚拟仪器的交互式幵发环境,满足了用户对软件不断变化的 要求,在产品设计中,可以快速创建、配置并显示测量。LabWindows/CVI可以自动生成代码、编译和链接,省去了手工编写,更有利于系统的开发。 5、开放式的框架结构

在LabWindows/CVI环境中,可以结合使用标准的ANSI C源文件、obj文件和动态链接库(DLL)。还可以将软件中的仪器驱动库与其他标准C编译器结合使用,无需更改开发工具。同时,可以在不同的工作小组之间共享函数模块和虚拟仪器程序。 6、集成式的开发环境

LabWindows/CVI是集成式的幵发环境,可用于创建基于DAQ、GPIB、PXI、VXI串口和以太网的虚拟仪器系统。这一开发方式结合了交互式、简单易用的开发方式与ANSI C代码的强大编写功能和灵活性。LabWindows/CVI中的交互式开发工具和函数库可以轻松实现自动化测试系统、实验室研发、数据釆集监视项目、验证测试和控制系统的设计。 二、 LabWindows/GVI 的应用范围

LabWindows/CVI主要应用在各种测试、控制、故障分析及信息处理软件的开发中,与 NI公司开发的另一个虚拟仪器开发工具LabView相比,其更适合中,大型复杂测试软件的开发。基于LabWindows/CVI设计的虚拟仪器,在无损检测、电力仪表系统、温控系统、流程控制系统、故障诊断和医疗等领域中发挥着重要作用,LabWindows/CVI已经成为测控领域最受欢迎的开发平台之一,并且已得到较为广泛的应用。 1.3 Labwindows/CVI开发环境

(软件安装略)

5

1.4、Labwindows/CVI运行环境 一、程序结构

测控软件一般包括:用户界面、程序控制、数据采集和数据分析4部分

图1.9虚拟仪器的程序结构

二、文件类型

*.cws: 工程组文件

*.prj: 工程文件 *.c: C源代码文件

*.fp: 函数库(函数数和函数面板)文件

*.uir: 用户界面资源文件 *.h :用户界面资源头文件 *.dll 动态链接库文件

*.lib: 动态链接库导入库文件,还可以是外部静态库模块文件

===============================================================================

*_dbg.exe: 调试状态执行文件 *.obj: 三、CVI的工作空间

1、工程目录区:包含当前工作空间中所有工程的目录,粗体的工程名表示该工程当前为激活状态,用户可以对该工程进行构建、调试和修改。

2、函数目录区:包括CVI的函数库和仪器库目录,双击目录中的函数名,即可打开相关的函数面板。

3、窗口区:在此区可以打开源代码编辑器、用户界面编辑器、函数面板编辑器,当打开某一窗口时,菜单栏和工具栏会随着编辑界面的不同而发生相应的改变。

4、输出区:包括编译错误、运行时错误和源代码错误信息窗口。

5、运行区:包括变量、内存、监视和堆栈窗口,可以在该窗口中编辑变量和观察程序运行状况。

6

目标文件 *.exe: 可执行文件

四、LabWindows/CVI中的对象编程

对象编程是LabWindows/CVI编程的核心概念。虚拟仪器的面板和面板中的控件都是对象。对象有两个基本元素:属性和事件。在编程时,就是通过对象的这两个元素来控制和操作对象的。

1、对象的属性:是反映对象特征的参数,如仪器面板中控件的大小、位置等等。可以通过属性对话框来设置属性。多数控件需要设置如下属性:

 控件的常量名称  事件的响应函数名称  控件外观  文字标签 2、对象的事件和回调函数

每一个控件对象都有其相应的响应事件,如双击鼠标、拖动窗口、点击按钮等。在CVI

中,每个事件对应一个回调函数,当事件发生时,相应的回调函数被激活,由回调函数来完成控件相应的功能。

五、LabWindows/CVI的基本编程窗口

LabWindows/CVI开发平台是交互式集成开发平台,图形化用户界面。其编程环境主要由:源代码窗口、用户界面编辑窗口、函数面板三部分组成如图1.10所示。

图1.10

1、用户界面编辑窗口

用来创建、编辑GUI(用户界面)的面板、控件和菜单,并且设置各种属性,一般情况

下,一个用户界面至少要有一个面板,如图1.11所示

7

图1.11

在用户界面编辑窗口,右击鼠标将出现弹出式菜单,则弹出式菜单中包含创建面板和面板菜单的菜单项,如图1.12所示。

图1.12

当鼠标点击在面板背景上时,弹出式菜单将出现创建控件的菜单项。如图1.13所示。

8

图1.13

当鼠标点击控件上时,将出现生成和查看回调函数的菜单项,如图1.14所示。

图1.14

2、工作区窗口

工作区窗口包括:File、Edit、View、Create、Arrange、Code、Build、Run、Instrument、Library、Tools、Windows、Options、Help共14个菜单项。

 File菜单。用于完成对工作空间文件、工程文件、C源代码文件、头文件、用户界面文件及函数面板文件的新建、打开、保存、另存为等功能,同时还具有保存全部文件、自动保存工作空间、设置当前工程、最近打开文件、退出环境的功能,如图1.15所示。

9

图1.15 用户界面窗口File菜单

 Edit菜单。用于完成对工作空间的编辑、工程编辑、向当前工程添加文件、撤销操作、重复操作、剪切、复制、粘贴、删除/剪切/复制面板、面板编辑、菜单编辑等。如图1.16所示。

图1.16 用户界面窗口Edit菜单

 View菜单。用于定制是否显示工程目录区、函数目录区、工具栏及窗口排列方式,对于不同的编辑窗口,菜单项会有所不同。在用户界面编辑窗口为当前激活窗口的状态下,其

10

菜单如图1.17所示。

图1.18 用户界面窗口View菜单

 Creat菜单。用于创建面板、菜单、控件。

图1.19 用户界面窗口Creat菜单

 Arrange菜单。用于控件位置、大小、对齐方式、控件叠放顺序的调节,能实现控件前后排序、标签居中、对齐控件的功能。

11

图1.20 用户界面窗口Arrange菜单

 Code菜单。用于程序源代码的产生,选择所需的事件消息类型,查看控件的回调函数及事件设置。

图1.21 用户界面窗口Code菜单

 Build菜单。用于完成相关的编译操作,进行编译文件、配置编译文件、配置编译类型、导入外部编译器、标记编译文件。

图1.22 用户界面窗口Build菜单

 Run菜单。用于执行程序、调试程序、设置断点、单步执行、终止执行、设置错误的中断方式。

12

图 1.23 用户界面窗口Run菜单

 Instrument菜单。是一个动态菜单,包含已载入的仪器驱动目录和载入、卸载及编辑仪器驱动文件的菜单项。

图1.24 用户界面窗口Instrument菜单

 Library菜单。提供了丰富的函数库,用于完成用户界面函数、I/O接口,信号分析及各类驱动器函数面板的设置。

 Tools菜单。用于创建、编辑ActiveX控制器与服务器、建立IVI驱动、源代码控制、UI代码转换以及定制菜单功能。

 Window菜单。用于各种编辑窗口的排列、最小化、关闭等功能,同时可实现打开内存、变量、查看窗口来观察程序在运行时变量的状态参数。

13

图1.25 用户界面窗口Library菜单、Tools菜单、Window菜单

 Options菜单。用于系统开发环境、编译参数、颜色、工具栏、字体等相关信息设置。  Help菜单。

14

图1.26用户界面窗口Options菜单、Help菜单

3、源代码编辑窗口

显示了程序的源代码,用于编辑C语言代码文件。其窗口菜单与用户界面窗口菜单相类

似,

图1.27 源代码编辑窗口

4、函数面板窗口

在CVI编程环境下,当在源程序某处插入标准函数时,只需找出所对应的函数库,在从

15

库中选择所需函数,便会弹出一个与之对应的函数面板,填入相应的参数,便可完成函数的插入。

在函数面上或面板的控件中右击鼠标,可以弹出相应的帮助窗口。有关于函数属性设置的详细说明。

图1.28函数面板窗口

 在函数面板中常用到的工具栏中的几个按钮,如图1.29所示。

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 图1.29 与函数面板相关的几个按钮

①→将函数插入到源代码文件的鼠标位置上;

②→声明变量名,按下该按钮会弹出声明变量对话框,如图1.30所示。

16

图1.30 声明变量窗口

③→选择目标文件,一般默认为当前工程中的源文件,如图1.31所示。

图1.31目标文件选择窗口

④→选择属性或UIR常量。将鼠标放置在需要添加控件常量名文本框内,选择该按钮,则弹出界面如图1.32所示。

⑤→选择变量,其弹出窗口会显示当前源文件中出现的所有变量,如图1.33所示。

图1.32属性或UIR常量选择窗口 图1.33变量选择窗口

17

⑥→显示当前函数树。 ⑦→显示前一函数面板窗口。 ⑧→显示后一函数面板窗口。 1.5 构建一个简单程序

通过本节学习,可以基本掌握CVI的基本编程方法,了解CVI编程的基础知识。 Labwindows/CVI编程的基本步骤如下:

1、建立工程文件,根据任务要求,确定程序的基本框架,包括各类控件所需的各类函数;

2、创建用户图形界面,根据要求,添加控件,设置控件属性及确定控件的回调函数; 3、编辑程序代码。由计算机自动生成程序代码及回调函数的基本框架,然后向源程序中添加程序代码,完成所实现的功能;

4、调试程序和生成可执行文件。 实验指导:

(1)实验任务

编写一个LabWindows/CVI程序,功能自定(可以是课堂或者书上的例子),程序有菜单或多种控件,用程序改变控件值或属性。

在本实验中,我们制作两数值型控件,当一控件值改变时,另一控件值也随之改变。同时,设计一命令控件,当点击它时即可退出用户接口界面。

此次实验中要用到的控件和回调函数如下表所示

常量名 PANEL NUMERICKNOB 面板 控件类型 主要属性 标题:实验一 label:输入 Numeric 回调函数:ChangedValueCB label:输出 Control Mode:Indicator label:__Quit 回调函数:QuitCB NUMERICSLIDE Numeric COMMANDBUTTON

Command Button

18

(2)实验步骤

步骤1:新建一工程,选择File→New→Project(*.prj),如图1-1所示。

图1-1 创建一工程

步骤2:新建一用户界面。从工程(Project)窗口中选择File→New→User Interface(*.uir),创建一个用户界面文件(*.uir),编辑器将自动产生一个空面板,如图1-2所示。

图1-2 用户界面编辑器窗口

步骤3: 在用户界面编辑器窗口中Untitled Panel 的灰色区域中单击鼠标右键,弹出如图1-3所示的控件选择的快捷菜单。在本实验中我们选择两数值型控件(Numeric)和一命令按钮(Command Button),其属性设置见图1-4~1-6。图1-7为面板属性编辑窗口,最后生成如图1-8所示界面。

19

图1-3 控件菜单

图1-4 “编辑数值控件1”对话框

20

图1-5 “编辑数值型控件2”对话框

图1-6 “编辑命令按钮”对话框

21

图1-7 面板属性编辑窗口

图1-8 最终用户界面

选择菜单File →Save a11.uir,将用户界面文件保存为“ex1.uir”。

步骤4:用代码生成器生成程序框架。选择Code→Generate→All Code,显示如图1-9所

22

示的生成所有代码对话框。

图1-9 生成所有代码对话框

首先必须确定程序启动时要显示的面板。对本实验来说,在.uir文件里只有一个面板。选择该面板作为程序启动时首先显示的面板。

此对话框下部分显示.uir 文件里的回调函数列表。在面板的属性中已经设置QuitCB作为程序终止执行的函数,其旁边出现一个“√”号。

选择OK 按钮,触发代码生成器建立程序源代码,如图1-10所示。 在源代码窗口里选择File→Save,以文件名ex1.c保存源文件。

23

图1-10 程序源代码

步骤5:使用函数面板和函数库开发ChangeValueCB回调函数。

把光标置于ChangeValueCB函数的case语句中,然后选择Library→User Interface Library→Controls/Graphs/Strip Charts….→General Function→Get Control Value,弹出如图1-11所示的Get Control Value函数面板。在面板的控件里输入如图1-11所示的值。在面板的灰色地带点击右键,可获得函数的说明文档。

在源代码里插入函数Get Control Value前,必须声明变量value。选择Code→Declare Variable,并选中复选框Add declaration to current block in target file “ex1.c”,这样将在源代码当前段插入一行代码声明回调函数ChangeValueCB里的变量value。

选择Code→Insert Function Call,将函数Get Control Value 插入源代码窗口光标所在位置,关闭函数Get Control Value面板,可以看到函数Get Control Value 的调用出现在源代码的case EVENT_COMMIT语句后。 选择

Library→Uer Interface Library→Controls/Graphs/Strip

24

Charts….→General

Function→Set Control Value,在函数面板各控件里输入如图1-12所示信息。 选择Code→Insert Function Call,将函数 Set Control Value 插入源代码。 最后所生成代码如图1-13 所示。

图1-11 Get Control Value函数面板

25

图 1-13 最终代码

步骤6:保存并运行程序。选择Run→Debug ex1_dbg.exe,开始运行程序。 步骤7:

把回调函数ChangeValueCB中的EVENT_COMMIT 事件改为EVENT_VAL_CHANGED,保存后运行程序,观察效果有什么不同。

26

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务