2011年7月2日,第2稿
4.1 接线端——控件的映射
通过前面对控件的介绍,应该对接线端的概念并不很陌生。我们在前面板上每放置一个控件(修饰控件除外)便会在程序框图中产生一个与此相对应的映射——接线端。接线端是程序框图中非常重要的对象。接线端也是图形化代码中的一部分,接线端与其它对象相连接构成图形化程序。
常量是程序框图中特定的接线端。
常量是程序框图中特定的接线端。
4.1.1 接线端的作用和表示方式
接线端的作用是构成前面板和程序框图之间信息交换的输入输出端口。同时提供控件的数据类型,数据类型类型相同的接线端方可以连接到一起。接线端在程序框图中有两种显示方式:图标接线端和数据类型接线端。图标表示的接线端,参见下图。
上图中是接线端在程序框图中的图标显示方式,通过图标中的小箭头可以明显看出一个是输入数值控件的接线端,一个是数值显示控件的接线端。另一个区分方法是,通过图标边框的粗细,粗的是输入接线端,细的是显示接线端。显然,图标显示方式更逼真直观。
数据类型表示的接线端,参见下图。
数据类型表示的接线端,参见下图。
上图是接线端在程序框图中的数据类型表示方式。同样也可以通过小箭头和边框的粗细来区分输入接线端和显示接线端。数据类型的显示方式与图标显示方式相比显然它所占面积要小很多,这有利于大型程序框图的设计。
图标与数据类型显示方式的转换通过鼠标右键的快捷菜单中的“显示为图标”选项来切换,参见下图。
图标与数据类型显示方式的转换通过鼠标右键的快捷菜单中的“显示为图标”选项来切换,参见下图。
在子VI中,定义连线端就是确定接线端的数据类型。所以尽管子VI的前面板不打开,程序框图中它们依然确定了数据的输入、输出关系。
4.1.2 接线端——数据类型的标识
接线端的另一个作用就是承载控件的数据和数据类型。尽管在控件上没有数据类型的直观显示,可是通过控件的映射在接线端上完全可以看出它的数据类型。
接线端无论采用那种显示方式,都可以直观的看到它的数据类型。所以接线端也是数据类型的标识。接线端在程序框图上用两种方式来表示一个控件的数据类型,色彩和字符。在例2-1中,我们看到字符串接线端的色彩是粉色,它的下面标有粉色的字符:abc。而上图中的数据类型的色彩是橘黄色的。DBL是字符形式的双精度数据类型表达方法。
不同功能的控件所标识的基本数据类型也不同,对于数值控件而言它还有其它多种数据类型的表示法。具体操作是:鼠标右键控件或接线端,在弹出的快捷菜单中选择》表示法,参见下图。
接线端无论采用那种显示方式,都可以直观的看到它的数据类型。所以接线端也是数据类型的标识。接线端在程序框图上用两种方式来表示一个控件的数据类型,色彩和字符。在例2-1中,我们看到字符串接线端的色彩是粉色,它的下面标有粉色的字符:abc。而上图中的数据类型的色彩是橘黄色的。DBL是字符形式的双精度数据类型表达方法。
不同功能的控件所标识的基本数据类型也不同,对于数值控件而言它还有其它多种数据类型的表示法。具体操作是:鼠标右键控件或接线端,在弹出的快捷菜单中选择》表示法,参见下图。
前面板对象控件与程序框图对象接线端的映射关系可以通过鼠标右键弹出的快捷菜单中选择“查找显示(输入)控件”来确定。也可以通过鼠标双击前面板上的控件或程序框图中的接线端来确定,双击的结果是高亮所对应的控件或接线端。
4.1.3 接线端间的数据通道——连线
接线端是图形化程序间数据传递的端口,而端口与端口间的数据传递是依赖于连线来实现的。连线也是图形化代码中极特殊的部分,并充分利用了图形化的特点,比如用借助于连线的形状和色彩来展现所连接的数据类型。其实,连线本身没有确定性的数据类型,也就是说我们不能人为的定义(规定)连线的数据类型,连线的数据类型取决于它所连接的接线端的数据类型(还是依赖于控件的数据类型)。而在LabVIEW中,只有数据类型相同的对象才可以彼此连接在一起。
对于连线的作用似乎有许多不同的说法。在NI的论坛上,我曾看到这样的讨论:连线到底是不是LabVIEW中的变量(Wire = variable..... or wire != variable...)?
这是一个有趣的话题,涉及到许多基本概念,比如LabVIEW中有没有变量?连线是否是变量?控件是否是变量?等等。这里谈谈我的看法:
图形化语言是一种采用特殊方式进行计算机程序设计的编程语言。其实,任何计算机程序都可以简单理解为:数据+计算方法。图形化语言也不会例外,只是在数据的表达方式和程序的运行机制有所不同。所以我们在学习图形化语言中,切不可将其它语言中的概念生拉硬套的搬到图形化语言中来寻找对应关系。
变量在计算机程序中起着数据存储和数据传递以及数据交换的基本作用,所以在图形化语言中也一定会有变量的存在。
在C语言中,程序中的所有数据都被声明为变量。数据的存储和交换是通过表达式(借助于变量名)来实现的。所以变量的概念在C语言中非常重要。
在图形化语言中,程序中的数据被抽象到控件中,控件并不是传统意义中的变量。数据的存储和交换是通过控件(节点)间的连线依照图形化语言数据流运行机制来实现的。连线是数据的通道,也不是传统意义中的变量。
尽管变量的使用破坏了LabVIEW图形化语言数据流的运行机制,但在LabVIEW中还是有变量存在的。局部变量、全局变量、共享变量才是图形化语言中的真正变量(通过控件来创建)。这些变量在图形化语言中进行数据传递和数据交换。
如果不考虑LabVIEW内部的机制,比如数据拷贝、编译器等,这样的理解更简单、更直观、更清晰。
对于连线的作用似乎有许多不同的说法。在NI的论坛上,我曾看到这样的讨论:连线到底是不是LabVIEW中的变量(Wire = variable..... or wire != variable...)?
这是一个有趣的话题,涉及到许多基本概念,比如LabVIEW中有没有变量?连线是否是变量?控件是否是变量?等等。这里谈谈我的看法:
图形化语言是一种采用特殊方式进行计算机程序设计的编程语言。其实,任何计算机程序都可以简单理解为:数据+计算方法。图形化语言也不会例外,只是在数据的表达方式和程序的运行机制有所不同。所以我们在学习图形化语言中,切不可将其它语言中的概念生拉硬套的搬到图形化语言中来寻找对应关系。
变量在计算机程序中起着数据存储和数据传递以及数据交换的基本作用,所以在图形化语言中也一定会有变量的存在。
在C语言中,程序中的所有数据都被声明为变量。数据的存储和交换是通过表达式(借助于变量名)来实现的。所以变量的概念在C语言中非常重要。
在图形化语言中,程序中的数据被抽象到控件中,控件并不是传统意义中的变量。数据的存储和交换是通过控件(节点)间的连线依照图形化语言数据流运行机制来实现的。连线是数据的通道,也不是传统意义中的变量。
尽管变量的使用破坏了LabVIEW图形化语言数据流的运行机制,但在LabVIEW中还是有变量存在的。局部变量、全局变量、共享变量才是图形化语言中的真正变量(通过控件来创建)。这些变量在图形化语言中进行数据传递和数据交换。
如果不考虑LabVIEW内部的机制,比如数据拷贝、编译器等,这样的理解更简单、更直观、更清晰。







