2010年9月24日,第一稿
2011年6月25日,第二稿
2011年6月25日,第二稿
3.2 控件的基本作用
作为前面板的对象,控件在虚拟仪器中具有非常重要的作用,比如修饰前面板;实现人机对话;放置数据等等。
3.2.1 装饰前面板
控件作为前面板上的对象最基本的作用就是创建和修饰前面板。来自十年前的一个前面板实例参见下图[8]。
这是一个虚拟仪器主界面的前面板,这个前面板结合修饰控件、图片、文字、色彩以及其它控件创建了一个赏心悦目的虚拟仪器前面板。由此可见,使用图形化语言也完全可以设计出十分美观和实用的GUI界面。
其实,虚拟仪器主界面的前面板并非要设计的很花哨,清晰、满足用户的需要就是最好的设计。这部分设计的关键就是要充分听取用户的意见和建议,因为最终前面板是要面对用户的。对于子VI前面板的设计就更简单了,只要将输入控件集中放置在前面板的左边,而将显示控件集中放置在前面板的右边即可。
并不是所有控件都需要在前面板上显示出来,比如错误簇、程序调试过程所需的显示控件、路径等等。这些控件可以安排、放置到前面板的可视区域之外。
其实,虚拟仪器主界面的前面板并非要设计的很花哨,清晰、满足用户的需要就是最好的设计。这部分设计的关键就是要充分听取用户的意见和建议,因为最终前面板是要面对用户的。对于子VI前面板的设计就更简单了,只要将输入控件集中放置在前面板的左边,而将显示控件集中放置在前面板的右边即可。
并不是所有控件都需要在前面板上显示出来,比如错误簇、程序调试过程所需的显示控件、路径等等。这些控件可以安排、放置到前面板的可视区域之外。
3.2.2 实现人机对话
前面板也是虚拟仪器或VI用来与用户进行人机对话的交互式界面。用户通过前面板上的输入控件可以直接输入数据或通过按键开关的切换来控制程序的运行。所以如果程序设计的好,甚至无须任何说明就可以通过按键来引导整个程序按设计要求来执行。因为控件具有丰富的动态属性,通过属性节点的设置可以程控的实现控件的闪烁、可见、不可见(灰化)等等。
下面我们就来看一个实用程序的前面板示意图,它就是通过按键开关来确定程序的执行顺序,实现人机对话操作,参见下图。
下面我们就来看一个实用程序的前面板示意图,它就是通过按键开关来确定程序的执行顺序,实现人机对话操作,参见下图。
在上图中,我们看到前面板上有五个按键开关,分别是:[即时帮助]、[开始测量]、[停止测量]、[生成报告]和[退出测量]。
这是程序运行初始化后的状态。显然,初始化后我们可以选择查看即时帮助,也可以选择开始测量和退出测量。此时因为测试还没有开始进行,所以停止测量和生成报告是禁止选择的操作。
如果我们此时选择按下[开始测量]按键,程序进入测量状态。测量进行状态下各按键开关的状态如下图所示。
这是程序运行初始化后的状态。显然,初始化后我们可以选择查看即时帮助,也可以选择开始测量和退出测量。此时因为测试还没有开始进行,所以停止测量和生成报告是禁止选择的操作。
如果我们此时选择按下[开始测量]按键,程序进入测量状态。测量进行状态下各按键开关的状态如下图所示。
显然,在测量进行状态下,只有[停止测量]按键可以进行操作,而其它按键都被禁止操作使用。
当测量任务完成后,我们按下[停止测量]按键,程序会自动跳转到下一个状态,参见下图。
当测量任务完成后,我们按下[停止测量]按键,程序会自动跳转到下一个状态,参见下图。
在测量结束后,我们可以选择查看即时帮助,重新开始测量(获得新的测量结果),创建测试报告和退出测量等操作。与初始化后相比多了个生成报告的选择。
此时若选择[生成报告]按键,程序会自动打开Word文档并写入测量结果,这个过程需要一定的时间。所以程序禁止任何操作,参见下图。
此时若选择[生成报告]按键,程序会自动打开Word文档并写入测量结果,这个过程需要一定的时间。所以程序禁止任何操作,参见下图。
当报告生成后,程序自动关闭Word,并将返回到初始化后状态,等候重新开始测量或退出测量程序。
这些功能是基于按键开关和它们的属性通过状态机设计来实现的。这样的操作方式不会导致用户产生任何错误操作,同时学习和使用也不会有任何难度,因为所有非法操作都被禁止了。比如测量没有开始时停止测量就不可能允许操作。测量还没有结束时就不可允许创建报告。
这里仅仅是一个展示说明,说明如果程序设计的好,甚至无须任何说明就可以通过按键来引导整个程序按设计要求来执行。关于程序的具体实现方法将会在后面的状态机工具包单元进行。
这些功能是基于按键开关和它们的属性通过状态机设计来实现的。这样的操作方式不会导致用户产生任何错误操作,同时学习和使用也不会有任何难度,因为所有非法操作都被禁止了。比如测量没有开始时停止测量就不可能允许操作。测量还没有结束时就不可允许创建报告。
这里仅仅是一个展示说明,说明如果程序设计的好,甚至无须任何说明就可以通过按键来引导整个程序按设计要求来执行。关于程序的具体实现方法将会在后面的状态机工具包单元进行。
3.2.3 放置数据、承载数据类型
前面板上控件的另一个重要作用就是放置数据(包含数据的数据类型)。这也是图形化语言特殊之处。
有C语言编程经验的读者都清楚,C语言的数据是放置在已声明的“变量”中,并在声明变量的同时还会定义出变量的数据类型。
图形化编程语言的数据和数据类型是如何表达的?它会与C语言一样吗?
实际上,图形化编程语言与C语言有着显著的不同,它的数据(常数除外)不是放置在变量中,而是放置在前面板的对象——控件(包括输入控件和显示控件)中,同时控件本身还确定了数据的数据类型。
在图3-1中,我们看到这些控件尽管外观不同,但它们的数据类型确是一致的,都属于数值控件。这些具有相同数据类型而外观和功能不一样的控件是图形化语言所特有的,也是虚拟仪器所需要的。像开关,尽管都是布尔量,我们就可以看到多种不同的外观的开关,参见下图。
有C语言编程经验的读者都清楚,C语言的数据是放置在已声明的“变量”中,并在声明变量的同时还会定义出变量的数据类型。
图形化编程语言的数据和数据类型是如何表达的?它会与C语言一样吗?
实际上,图形化编程语言与C语言有着显著的不同,它的数据(常数除外)不是放置在变量中,而是放置在前面板的对象——控件(包括输入控件和显示控件)中,同时控件本身还确定了数据的数据类型。
在图3-1中,我们看到这些控件尽管外观不同,但它们的数据类型确是一致的,都属于数值控件。这些具有相同数据类型而外观和功能不一样的控件是图形化语言所特有的,也是虚拟仪器所需要的。像开关,尽管都是布尔量,我们就可以看到多种不同的外观的开关,参见下图。
尽管控件中包含了数据和数据类型,但控件不是C语言中的变量,控件仅仅是一个放置数据的对象,类似于数据的容器。 控件不仅用来存放数据,还承载了所存放数据的数据类型。可是我们从前面板的控件上确丝毫看不到任何数据类型的标识。这是为什么呢?
其实这很好理解,前面板是与用户交互的界面,用户根本无须知道控件的数据类型,他们知道如何有效的使用就足可以了。那么谁应该知道数据类型呢?当然是程序的设计者,他们需要清楚这些!所以在程序框图中,通过控件映射的端子我们可以清楚的看到控件的数据类型。
其实这很好理解,前面板是与用户交互的界面,用户根本无须知道控件的数据类型,他们知道如何有效的使用就足可以了。那么谁应该知道数据类型呢?当然是程序的设计者,他们需要清楚这些!所以在程序框图中,通过控件映射的端子我们可以清楚的看到控件的数据类型。
3.2.4 控件的数据类型
计算机程序都可以抽象的理解为:数据+计算方法(运算、分析、处理)。图形化编程语言也可以简单的归结为这样的方式来理解。
由此可见,无论那种计算机编程语言,数据类型都是极其重要的组成部分,数据类型越丰富越有利于对复杂问题的处理。
我们知道,图形化语言的数据类型包含在控件中,可是那些控件可以包含那些数据类型呢?
我们认为:《LabVIEW 编程样式》中给出的控件类型和数据类型的简单性和兼容性列表最为直观[9],参见下图。
由此可见,无论那种计算机编程语言,数据类型都是极其重要的组成部分,数据类型越丰富越有利于对复杂问题的处理。
我们知道,图形化语言的数据类型包含在控件中,可是那些控件可以包含那些数据类型呢?
我们认为:《LabVIEW 编程样式》中给出的控件类型和数据类型的简单性和兼容性列表最为直观[9],参见下图。
通过该表我们可以看出,对于变体控件来讲,它可以适用于所有的数据类型,绝对是名正言顺。而簇控件和数组控件除变体数据类型外,适应其它的所有数据类型。
在LabVIEW中数据类型相同的对象(连线端)才可以彼此相连接在一起。这里参照“显示缓存区分配”对话框中的划分方法也可以进行控件的数据类型分类。
选择vi的》工具》性能分析》显示缓存区分配,参见下图。
在LabVIEW中数据类型相同的对象(连线端)才可以彼此相连接在一起。这里参照“显示缓存区分配”对话框中的划分方法也可以进行控件的数据类型分类。
选择vi的》工具》性能分析》显示缓存区分配,参见下图。
这里将数据类型分为:数组、簇、字符串、路径、标量、变体和所有其它类型。主要在程序框图中查看缓存区分配,就可以看到连线端所属的数据类型。











