从解一元二次方程开始
LabVIEW开发环境的安装就不多费笔墨了,现在就启动LabVIEW,开始掌握工具之旅。初中数学我们就知道,一元二次方程 的解可以表示为 。那时候没少让大家解方程,现在就用LabVIEW编程来解。
LabVIEW里面开发的程序单元被称作VI(Virtual Instruments, 虚拟仪器),文件的扩展名是 .vi ,就像是用c语言开发的 .c 文件或C++开发的 .cpp 文件等。当然,现在LabVIEW开发环境下还包括其它的程序组织类型,如工程(.lvproj)、类(.lvclass)、模板(.vit)、库(.llb)……。这些类型有的是为了让你更好的组织开发工作,有的是为了让你获得更高效、复用性更好的程序。我们在前几章将围绕 .vi 文件进行学习,毕竟这是整个LabVIEW开发的核心。
建立 .vi 文件可以在LabVIEW启动后选择“新建>>VI”(如图1.4所示),也可以在开发环境下在文件菜单里选择“新建VI”。
图1.4 新建VI
一个默认文件名的vi文件将被建立,如图1.5所示,VI开发环境中常用模块包括以下几个主要部分:前面板、程序框图、工具快捷选板、控件快捷选板(前面板用)、函数快捷选板(程序框图用)等。其中前面板主要进行界面设计,类似于VB、VC等开发环境中的人机界面开发环境;而程序框图则类似于其他编程语言的代码编辑器,当然,LabVIEW是通过图形化的拖放来完成“代码”的生成。好的,我们就开始在前面板和程序框图中挥洒创意,实现功能了!当然,先把一元二次方程解了~
图1.5 VI程序开发界面
Ø 功能分析:程序的要求很简单,就是一个算法问题。为了尽快展现我们的程序,像二次项系数是否为0等问题我们先不考虑,程序就是一个三个浮点输入(a, b, c),两个浮点输出(x1, x2)的算法,涉及加、减、乘、除、平方、开方以及取负等运算。
Ø 前面板设计:根据算法,放置三个数值输入控件和两个数值显示控件(如图1.6(a)所示)。方法很简单,在控件快捷选板中,找到新式>>数值栏,用左键将数值输入控件和数值显示控件拖入前面板即可,需要几个拖几个。当然,通常默认的控件标签名称不一定符合我们的要求,那么双击文字(或在工具快捷选板中选择文本编辑 后,再单击控件的文字标签)就能够输入新的名称,如图1.6(b)所示。OK,界面完成了,虽然有一点简陋,不过没关系,后面我们会学习多种方法作出让人赞叹的程序界面。
(a) (b)
图1.6 前面板控件的放置
Ø 我们点击一下程序框图切换过去看一下,五个图标也出现在程序框图中,而且标签和前面板的控件一一对应。没错,这就是我们在前面板放置的控件,如果仔细观察一下,会发现每一个图标上都会有DBL的字样
,这说明我们放置的输入输出控件默认是双精度浮点数的,以后再介绍数据类型,接下来就要在框图中编写算法了!
图1.7 框图程序中的输入输出
Ø 在框图中编写算法要用到函数选板,如果没有出来,在查看菜单里点击一下(如图1.8所示)。
图1.8 程序框图的函数选板
本程序用到了加、减、乘、除、平方、开方等运算,我们可以在数值选板中找到它们,如图1.9所示。LabVIEW将各函数按照类别排放,只要稍加熟悉,便能快速找到所需的子VI。
图1.9 数值函数选板
Ø 接下来就根据算法开始在框图程序完成连线了,也就是“写代码”。通常LabVIEW各子VI左侧连线端为输入,右侧为输出,当你从工具选板中选中“进行连线”,即使用连线工具后,鼠标形式变换成为连线样式。将其放置于子VI左侧或右侧的对应位置时,开发环境便会自动显示连线端及其名称。如图1.10所示。当然通过点击Tab键LabVIEW能自动为您切换工具箱中的定位选择工具、连线工具、文本工具等。
图1.10 连线工具及使用
框图“编码”很简单,就是在变量/常量/VI的输入输出间连线:在输出/输入连线端按下鼠标左键后拖动到需要连接的输入/输出连线端,一条颜色、形状各异的线出现了,这就是你写下的代码。线的颜色、形状、粗细等标识者传递的数据类型,以后你会慢慢了解的。通常编写程序时,尽量让你的程序从左向右执行,也就是连线时若果上一个输出连接到下一个输入,那么前面的输出应置于框图左边,而后面的输入置于右边。
按照上面的方法,我们很容易就能够将解一元二次方程的算法实现,看下面的框图1.11,是不是都能够理解呢?
图1.11 解一元二次方程的程序框图
Ø 框图程序完成后,前面板上的输入输出之间就通过我们的算法联系起来了。细心的读者可能会观察到:不管是前面板还是程序框图的快捷按钮栏,有一个按钮由 变为 。恭喜你,程序运行按钮由无法执行变为了可以执行,点击运行按钮就可以执行我们的程序了------当然,我们先把需要解的方程的系数填入对应的输入。
图1.12 运行程序结果
如上图1.12所示,我们解了一个方程 ,结果是……,看输出吧,呵呵。
和 的变化体现出了LabVIEW实时编译的特点,即不需要你去点击某一个编译按钮,只要程序已经到了能够运行的程度,那 就会出现在你的眼前。当然,能够运行不代表你的程序已经正确完成了,只是说明了框图程序里没有逻辑错误而已。不信你看看,一个空的程序照样是有 的。
小结
虚拟仪器程序设计同主流的程序设计语言有很大不同,“图形化编程”、“G语言”不是吹出来的,用好LabVIEW的关键问题之一就是适应编程习惯。前面板的拖放很像VB、Delphi、VC/BCB、JAVA(NetBeans等)集成开发环境中截面设计,拖放即可;主要区别在于“代码”的生成,依靠连线为主的虚拟仪器确实很有特点。有两点必须现在就指出:第一是LabVIEW上手并不难,在一些领域如测试、信号处理、数值算法等等开发一些实用系统也比较擅长,但要想成为高手,能够实现良好的程序结构、便利的人机交互、复杂的功能,你要花费的力气不比学好任何一门语言少。如今大部分学术论文上充斥的某某虚拟仪器开发的系统类似于小儿科的玩具,只能停留在那种文章里。第二是LabVIEW有优点和缺点,这一点必须一开始就清楚。如果你想学习LabVIEW成为数据库系统开发的高手、网络系统开发的高手,我劝你还是死了这条心的,因为这种系统即使出现也不会有太大价值。
另外,程序设计都是相通的,学习LabVIEW也无法绕过软件工程等等能力的培养,比如不会做需求分析就没法实现良好的软件系统。但如果只是想解决一些LabVIEW所擅长解决的小问题(某些时候可能是大问题),那你会发现学习、开发的效率是相当的高。