2010年5月16日,第一稿
2011年6月18日,第二稿
2011年6月18日,第二稿
2.2 NI LabVIEW概述
尽管本书是为使用过LabVIEW的用户编写的,但是为了更深入全面的理解LabVIEW图形化语言的特点,我们仍然会叙述一些LabVIEW的最显著的特征。现在我们就开始围绕LabVIEW来进行更多更深入的讨论。
2.2.1 关于NI LabVIEW
关于LabVIEW,我们在不同场合可能会听到多种不同的说法:
LabVIEW是一种编程语言。
LabVIEW是一种图形化的编程语言。
LabVIEW是一种图形化系统设计平台。
LabVIEW是一种图形化的虚拟仪器软件开发环境。
上述说法那一种说法表述的比较准确?LabVIEW到底是指的是什么呢?
其实,上面所有的表述都是正确的,只是在不同场合表述时所强调的侧重点不同。谈到什么是LabVIEW?最好还是回顾它诞生之初所被赋予的内涵。
LabVIEW来自Laboratory Virtual Instrument Engineering Workbench的缩写组合(实验室虚拟仪器集成环境)。
实际上,LabVIEW中包含了三个层面上的意思:
第一,LabVIEW是NI公司所发明的图形化设计系统。所以,官方网站中比较常见的表示方法是:NI LabVIEW。
第二,LabVIEW是一种采用图形化方式进行计算机程序设计的编程语言。图形化的编程方法的确是一个创举。事实上,NI公司在发明LabVIEW之初就明确的树立了这样的目标:为科学家和工程师提供一种符合它们思维方式和工作习惯的计算机编程语言。图形化的编程方式实现了这一目的。
第三,LabVIEW是一个包含图形化编程语言在内的虚拟仪器应用软件集成开发环境,也就是在第1章虚拟仪器技术中所谈到的软件集成开发平台。在可视化操作系统支持下,通过这个平台可以使用图形化编程语言进行虚拟仪器应用程序从设计到调试直至发布。
由于虚拟仪器自身的特点,这个虚拟仪器集成环境也就意味着:软、硬件之间紧密结合的一整套虚拟仪器开发技术。
正因为如此,LabVIEW时常被赋予双重身份,有时用来表示NI公司的图形化系统设计平台,有时又被用来表示图形化编程语言。其实这并不矛盾,图形化编程语言也只能在图形化系统设计平台下进行程序设计。
本书中规定:用NI LabVIEW来表示图形化系统设计平台,用LabVIEW来表示图形化的编程语言。在此后的所有内容中,都将遵循这一基本原则。
LabVIEW是一种编程语言。
LabVIEW是一种图形化的编程语言。
LabVIEW是一种图形化系统设计平台。
LabVIEW是一种图形化的虚拟仪器软件开发环境。
上述说法那一种说法表述的比较准确?LabVIEW到底是指的是什么呢?
其实,上面所有的表述都是正确的,只是在不同场合表述时所强调的侧重点不同。谈到什么是LabVIEW?最好还是回顾它诞生之初所被赋予的内涵。
LabVIEW来自Laboratory Virtual Instrument Engineering Workbench的缩写组合(实验室虚拟仪器集成环境)。
实际上,LabVIEW中包含了三个层面上的意思:
第一,LabVIEW是NI公司所发明的图形化设计系统。所以,官方网站中比较常见的表示方法是:NI LabVIEW。
第二,LabVIEW是一种采用图形化方式进行计算机程序设计的编程语言。图形化的编程方法的确是一个创举。事实上,NI公司在发明LabVIEW之初就明确的树立了这样的目标:为科学家和工程师提供一种符合它们思维方式和工作习惯的计算机编程语言。图形化的编程方式实现了这一目的。
第三,LabVIEW是一个包含图形化编程语言在内的虚拟仪器应用软件集成开发环境,也就是在第1章虚拟仪器技术中所谈到的软件集成开发平台。在可视化操作系统支持下,通过这个平台可以使用图形化编程语言进行虚拟仪器应用程序从设计到调试直至发布。
由于虚拟仪器自身的特点,这个虚拟仪器集成环境也就意味着:软、硬件之间紧密结合的一整套虚拟仪器开发技术。
正因为如此,LabVIEW时常被赋予双重身份,有时用来表示NI公司的图形化系统设计平台,有时又被用来表示图形化编程语言。其实这并不矛盾,图形化编程语言也只能在图形化系统设计平台下进行程序设计。
本书中规定:用NI LabVIEW来表示图形化系统设计平台,用LabVIEW来表示图形化的编程语言。在此后的所有内容中,都将遵循这一基本原则。
2.2.2 LabVIEW图形化编程语言
我们对于计算机编程语言的认识和了解大多是来自那些基于字符的文本式编程语言,比如汇编语言、C语言、Java语言等等。
基于文本的编程语言以特定的助记符或标识字来规定或定义各自语言的语法规则,编程就是按规则来撰写文本代码,设计者将按着严格的语法规定一丝不苟的进行程序的设计。这些按规定编写出的代码经过编译器编译、调试、链接后最终生成计算机的可执行代码。
LabVIEW图形化编程语言与文本式的编程语言在程序设计的方式上截然不同,它不使用文本代码来编写程序。LabVIEW采用了一种经过特殊设计和定义的图形化代码来进行程序设计,并遵循图形化语言所特定的数据流运行机制。从编程语言的角度来看,LabVIEW图形化编程语言并不逊色与文本式的编程语言,甚至在灵活性、效率等许多方面有着更加显著的特点。
LabVIEW的编译器是一个即时编译器。在编程过程中同时进行图形化代码的编译。该编译器的编译速度很快,以至于我们都无法察觉到它的存在。所以说LabVIEW的确是一种真正意义上的图形化编程语言。
LabVIEW图形化语言的编程过程,就是通过鼠标拖拽的方式来放置这些确定性的图形符号,并通过它们之间的相互连线来描述程序的执行行为,这种方式必须满足数据流编程的要求。学习或使用过LabVIEW的人都应该有这样的体会:图形化的编程方法的确大大降低了程序设计的复杂度。
LabVIEW充分利用了图形的形状和色彩,从而构成了用图形符号所表示的图形化程序代码。因为图形符号本身具有以下的特点:
首先,图形及它的色彩可以看作是一种视觉语言,通过视觉就可以获得对事物最直观的表达。比如指挥交通的信号灯,禁烟标志等。另外图形本身还具备形象化的特点,比文字更容易记忆和理解。
其次,LabVIEW真正、也是最显著的特点是结合科学家和工程师的设计习惯,抽象地创造出非常适合他们领悟和理解的图形化代码。而且这些图形化代码本身隐含了许多需要计算机专业基础知识支撑的概念或特定编程语言的语法。因而降低了程序设计的复杂性,提高了程序设计的效率。图形化代码将对计算机的掌控(线程处理)和管理(内存分配)完全交付给LabVIEW来处理,使用者所关心的重点是如何实现工程应用中的具体算法。这些对那些非专业的程序设计人员来说是极为方便的。
还有,LabVIEW另一个显著特点就是充分利用了现代可视化操作系统中鼠标、键盘的操作功能。计算机操作系统的可视化,导致计算机从过去只能由专业人员操作使用工具,变成了不分年龄、不分专业的大众化的实用工具。其实,起到核心作用的还是可视化操作系统的简洁、方便和易学。LabVIEW也充分利用这点来简化程序设计中的一些操作。
苹果电脑率先实现了计算机的可视化操作。LabVIEW在研发阶段就毫不含糊的利用了苹果电脑可视化操作系统的这一优势,使图形化程序设计更趋向于完美。这也是为什么直到MicroSoft也推出图形化操作系统后,NI才发布了基于Windows的LabVIEW 3.0版本的真正原因。
最后,大家还应该注意到:LabVIEW不仅仅是一种功能丰富的图形化编程语言,它还支持免费的图形化的硬件驱动程序(针对NI的硬件产品)。这不仅是虚拟仪器技术的一个重要组成部分,也是它能够成为科学家和工程师所钟爱的编程工具的一个极为重要、不可忽视的原因。
到目前为止,大家还没有看到图形化代码的真面貌,也不清楚如何使用图形化语言进行计算机的程序设计。这些必须在了解NI LabVIEW之后,才能获得真正的解答。
基于文本的编程语言以特定的助记符或标识字来规定或定义各自语言的语法规则,编程就是按规则来撰写文本代码,设计者将按着严格的语法规定一丝不苟的进行程序的设计。这些按规定编写出的代码经过编译器编译、调试、链接后最终生成计算机的可执行代码。
LabVIEW图形化编程语言与文本式的编程语言在程序设计的方式上截然不同,它不使用文本代码来编写程序。LabVIEW采用了一种经过特殊设计和定义的图形化代码来进行程序设计,并遵循图形化语言所特定的数据流运行机制。从编程语言的角度来看,LabVIEW图形化编程语言并不逊色与文本式的编程语言,甚至在灵活性、效率等许多方面有着更加显著的特点。
LabVIEW的编译器是一个即时编译器。在编程过程中同时进行图形化代码的编译。该编译器的编译速度很快,以至于我们都无法察觉到它的存在。所以说LabVIEW的确是一种真正意义上的图形化编程语言。
LabVIEW图形化语言的编程过程,就是通过鼠标拖拽的方式来放置这些确定性的图形符号,并通过它们之间的相互连线来描述程序的执行行为,这种方式必须满足数据流编程的要求。学习或使用过LabVIEW的人都应该有这样的体会:图形化的编程方法的确大大降低了程序设计的复杂度。
LabVIEW充分利用了图形的形状和色彩,从而构成了用图形符号所表示的图形化程序代码。因为图形符号本身具有以下的特点:
首先,图形及它的色彩可以看作是一种视觉语言,通过视觉就可以获得对事物最直观的表达。比如指挥交通的信号灯,禁烟标志等。另外图形本身还具备形象化的特点,比文字更容易记忆和理解。
其次,LabVIEW真正、也是最显著的特点是结合科学家和工程师的设计习惯,抽象地创造出非常适合他们领悟和理解的图形化代码。而且这些图形化代码本身隐含了许多需要计算机专业基础知识支撑的概念或特定编程语言的语法。因而降低了程序设计的复杂性,提高了程序设计的效率。图形化代码将对计算机的掌控(线程处理)和管理(内存分配)完全交付给LabVIEW来处理,使用者所关心的重点是如何实现工程应用中的具体算法。这些对那些非专业的程序设计人员来说是极为方便的。
还有,LabVIEW另一个显著特点就是充分利用了现代可视化操作系统中鼠标、键盘的操作功能。计算机操作系统的可视化,导致计算机从过去只能由专业人员操作使用工具,变成了不分年龄、不分专业的大众化的实用工具。其实,起到核心作用的还是可视化操作系统的简洁、方便和易学。LabVIEW也充分利用这点来简化程序设计中的一些操作。
苹果电脑率先实现了计算机的可视化操作。LabVIEW在研发阶段就毫不含糊的利用了苹果电脑可视化操作系统的这一优势,使图形化程序设计更趋向于完美。这也是为什么直到MicroSoft也推出图形化操作系统后,NI才发布了基于Windows的LabVIEW 3.0版本的真正原因。
最后,大家还应该注意到:LabVIEW不仅仅是一种功能丰富的图形化编程语言,它还支持免费的图形化的硬件驱动程序(针对NI的硬件产品)。这不仅是虚拟仪器技术的一个重要组成部分,也是它能够成为科学家和工程师所钟爱的编程工具的一个极为重要、不可忽视的原因。
到目前为止,大家还没有看到图形化代码的真面貌,也不清楚如何使用图形化语言进行计算机的程序设计。这些必须在了解NI LabVIEW之后,才能获得真正的解答。
2.2.3 NI LabVIEW图形化开发环境
创建LabVIEW图形化语言开发环境就是在使用者的计算机上安装NI LabVIEW(除非另有说明,本书针对的都是Windows XP操作系统)。如果你已经成为NI LabVIEW的SSP(购买NI的升级服务的用户)用户,那么每个季度都会收到最新软件的DVD光盘。这些用户可直接进行升级安装即可。
对于大多数学生和爱好者通常获得是NI LabVIEW(评估版)大致会有这样几种情况:
DVD——包括了NI LabVIEW工具包和驱动程序
CD——仅包含NI LabVIEW(700M左右),不包含驱动软件
官方下载的NI LabVIEW(700M左右),不包含驱动软件
安装这些软件时,只有DVD版的可以同时选择安装上DAQmx驱动软件,其它的都需另行下载DAQmx驱动软件后安装。这就是为什么有些用户安装了NI LabVIEW后发现没有DAQmx驱动的原因。
NI LabVIEW的安装工作本身并不复杂,但需要一定的时间。在安装过程中,除了必须填写的用户名和序列号外,用户仅需指明安装路径后系统即可自动完成全部安装工作。
NI推荐:首先安装LabVIEW和工具包,最后安装或以后安装驱动软件DAQmx等。
安装DAQmx可以选择最近发布的即可。因当前的DAQmx都很大,一般在1GB以上,下载时最好使用NI提供的Downloader(支持断续下载)软件进行下载。
产品激活
NI LabVIEW评估版的试用期为30天,在试用期内NI LabVIEW具有专业版的所有特性包括工具包。一旦30天的试用期过后,将无法再次打开NI LabVIEW。
购买该产品后可凭借软件序列号激活LabVIEW许可证。只有专业版的用户才可以同时激活“应用程序生成器”。
版本差异
25年来,NI LabVIEW已经发行了多个版本。但是最基本使用操作方式并没有发生本质上的改变,所以读者可以使用任意版本的NI LabVIEW来进行学习(注意察看对应版本的帮助文件)。目前NI只针对包括当前版本在内的4个版本给与相应的技术支持。
到目前为止,本书中所涉及的NI LabVIEW版本为:NI LabVIEW 2010 SP1。本书中的所有实例均使用这个版本编写并运行通过。
一切都安装好后就可以开始学习图形化编程了!
对于大多数学生和爱好者通常获得是NI LabVIEW(评估版)大致会有这样几种情况:
DVD——包括了NI LabVIEW工具包和驱动程序
CD——仅包含NI LabVIEW(700M左右),不包含驱动软件
官方下载的NI LabVIEW(700M左右),不包含驱动软件
安装这些软件时,只有DVD版的可以同时选择安装上DAQmx驱动软件,其它的都需另行下载DAQmx驱动软件后安装。这就是为什么有些用户安装了NI LabVIEW后发现没有DAQmx驱动的原因。
NI LabVIEW的安装工作本身并不复杂,但需要一定的时间。在安装过程中,除了必须填写的用户名和序列号外,用户仅需指明安装路径后系统即可自动完成全部安装工作。
NI推荐:首先安装LabVIEW和工具包,最后安装或以后安装驱动软件DAQmx等。
安装DAQmx可以选择最近发布的即可。因当前的DAQmx都很大,一般在1GB以上,下载时最好使用NI提供的Downloader(支持断续下载)软件进行下载。
产品激活
NI LabVIEW评估版的试用期为30天,在试用期内NI LabVIEW具有专业版的所有特性包括工具包。一旦30天的试用期过后,将无法再次打开NI LabVIEW。
购买该产品后可凭借软件序列号激活LabVIEW许可证。只有专业版的用户才可以同时激活“应用程序生成器”。
版本差异
25年来,NI LabVIEW已经发行了多个版本。但是最基本使用操作方式并没有发生本质上的改变,所以读者可以使用任意版本的NI LabVIEW来进行学习(注意察看对应版本的帮助文件)。目前NI只针对包括当前版本在内的4个版本给与相应的技术支持。
到目前为止,本书中所涉及的NI LabVIEW版本为:NI LabVIEW 2010 SP1。本书中的所有实例均使用这个版本编写并运行通过。
一切都安装好后就可以开始学习图形化编程了!
2.2.4 创建第一个图形化程序
安装NI LabVIEW后,我们就可以创建图形化程序了。
具体操作是:在操作系统下,选择:开始》所有程序》National Instruments LabVIEW 2010 SP1。用鼠标双击该条目,系统会自动导出NI LabVIEW的启动界面,参见下图。
具体操作是:在操作系统下,选择:开始》所有程序》National Instruments LabVIEW 2010 SP1。用鼠标双击该条目,系统会自动导出NI LabVIEW的启动界面,参见下图。
在这个开发环境下,通过左边栏可以选择新建一个VI、项目或者是VI的模版。也可以浏览此前打开或已创建的VI等等;通过右边栏可以通过网络察看有关资讯信息,包括在线支持,而通过本机自带的帮助文件和范例,这些可以帮助我们随时随地的了解NI LabVIEW开发环境的概念和使用方法及察看相关的范例等等。
与大多数文本编程语言的第一个程序相类似,我们的第一个图形化程序也是一个与世界打招呼的程序,当程序运行后显示出一串字符:Hello World !
与大多数文本编程语言的第一个程序相类似,我们的第一个图形化程序也是一个与世界打招呼的程序,当程序运行后显示出一串字符:Hello World !
例2-1 图形化语言的Hello World !程序
创建一个图形化程序具体的操作是:首先用鼠标点击,新建》VI。开发环境会自动弹出图形化代码设计所必须的两个空白的窗口。其中,一个称为:前面板,另一个称为:程序框图,参见下图所示。
创建一个图形化程序具体的操作是:首先用鼠标点击,新建》VI。开发环境会自动弹出图形化代码设计所必须的两个空白的窗口。其中,一个称为:前面板,另一个称为:程序框图,参见下图所示。
这两个窗口是提供给设计者的,它们分别有不同的用途。前面板是用来与用户进行交互式操作(人机对话),程序框图是用来放置(设计编写)图形化代码的地方。
我们期待为这个新创建的VI命名并保存这个VI。
具体操作是:选择开发环境中,文件》保存,在弹出的对话框中选择:桌面》键入文件名“Hello World!”》点击“确定”键后,在桌面上可看到这个VI——Hello world!.vi( .vi是图形化程序文件的后缀)。
这里,我们应该注意到,图形化程序的命名可以使用任何字符或单词,而C语言等则会要求避免使用关键字和保留字。
重新打开这个VI,开始进行图形化程序的设计。因为要在前面板上显示出一串字符,所以需要在前面板上放置一个能够显示字符串的显示控件。
具体操作是:在前面板上,鼠标右键》控件选板》字符串与路径》字符串显示控件;将其拖拽到前面板上。请注意,当我们在前面板上放置一个控件时,也会在程序框图上出现一个与此相对应的“字符串”接线端。
下面在程序框图中添写图形化程序代码,完成最终的图形化程序设计。
具体操作是:在程序框图上鼠标右键》函数选板》编程》字符串》字符串常量;将其拖拽到程序框图上。然后在字符串常量的框架内输入“Hello world!”,将该常量与字符串接线端用连线直接连接在一起。
至此,我们的第一个图形化程序设计完成,点击“运行”按钮,程序运行后,在前面板上的字符串显示控件上就可以看到:Hello world ! 参见下图所示。
我们期待为这个新创建的VI命名并保存这个VI。
具体操作是:选择开发环境中,文件》保存,在弹出的对话框中选择:桌面》键入文件名“Hello World!”》点击“确定”键后,在桌面上可看到这个VI——Hello world!.vi( .vi是图形化程序文件的后缀)。
这里,我们应该注意到,图形化程序的命名可以使用任何字符或单词,而C语言等则会要求避免使用关键字和保留字。
重新打开这个VI,开始进行图形化程序的设计。因为要在前面板上显示出一串字符,所以需要在前面板上放置一个能够显示字符串的显示控件。
具体操作是:在前面板上,鼠标右键》控件选板》字符串与路径》字符串显示控件;将其拖拽到前面板上。请注意,当我们在前面板上放置一个控件时,也会在程序框图上出现一个与此相对应的“字符串”接线端。
下面在程序框图中添写图形化程序代码,完成最终的图形化程序设计。
具体操作是:在程序框图上鼠标右键》函数选板》编程》字符串》字符串常量;将其拖拽到程序框图上。然后在字符串常量的框架内输入“Hello world!”,将该常量与字符串接线端用连线直接连接在一起。
至此,我们的第一个图形化程序设计完成,点击“运行”按钮,程序运行后,在前面板上的字符串显示控件上就可以看到:Hello world ! 参见下图所示。
在上图的前面板中,我们看到:在字符串显示控件显示出Hello world!
前面板的最上部,Hello World! .vi 前面板*,可以看到了一个“*”号,这是开发环境在提醒使用者目前这个VI已经被改动,此时如果保存这个VI,这个“*”号就会消失。现在,保存这个VI到本书的例子文件夹中。
前面板的最上部,Hello World! .vi 前面板*,可以看到了一个“*”号,这是开发环境在提醒使用者目前这个VI已经被改动,此时如果保存这个VI,这个“*”号就会消失。现在,保存这个VI到本书的例子文件夹中。
2.2.5 图形化语言运行机制——数据流
我们已经创建并运行了第一个图形化程序,它的程序代码很简单,其中包括一个字符串常数(Hello World!);一个字符串显示控件的端子;以及一段粉色的连线,用来连接字符串常数和字符串显示控件的端子。
在LabVIEW中,粉色意味着是字符串数据类型。所以我们在例2-1中看到的图形化程序代码都是粉色的。对于其它数据类型其颜色是不同的。
图形化语言的运行机制是基于数据流的,字符串常数(数据源)通过连线(流动)到字符串显示控件的端子(数据接收终端),通过端子将流动过来的数据映射到前面板上的字符串显示控件,所以我们在前面板上就会看到显示内容。这种数据流运行机制很直观,也应该很好理解。
在LabVIEW图形化编程语言中,数据流编程方式是十分重要的,也是必须要掌握的最基本概念之一。要想学习使用LabVIEW就必须习惯数据流编程方式的思维模式,这也是LabVIEW编程思想的核心部分内容。这也是本书重点要表述的主要内容。
数据流
图形化语言中,输入控件的端子、常量构成数据流的源头,同时也确定了数据流中的数据类型。这些数据通过连线连接到后面的节点上,但这些节点需保持数据类型的一致(对于数值类型的数据可以进行强制转换),否者程序运行按钮会发生断裂的提示。换句话说,数据类型不相同的两个节点是不能连接到一起的。由此也可以看出连线是贯彻数据流编程基本概念最简单、最直观的方法。
这仅仅是一个认识图形化程序的一个实例,其中好多基本概念还没有进行过介绍。结合后面的内容我们会陆续做介绍。
在LabVIEW中,粉色意味着是字符串数据类型。所以我们在例2-1中看到的图形化程序代码都是粉色的。对于其它数据类型其颜色是不同的。
图形化语言的运行机制是基于数据流的,字符串常数(数据源)通过连线(流动)到字符串显示控件的端子(数据接收终端),通过端子将流动过来的数据映射到前面板上的字符串显示控件,所以我们在前面板上就会看到显示内容。这种数据流运行机制很直观,也应该很好理解。
在LabVIEW图形化编程语言中,数据流编程方式是十分重要的,也是必须要掌握的最基本概念之一。要想学习使用LabVIEW就必须习惯数据流编程方式的思维模式,这也是LabVIEW编程思想的核心部分内容。这也是本书重点要表述的主要内容。
数据流
图形化语言中,输入控件的端子、常量构成数据流的源头,同时也确定了数据流中的数据类型。这些数据通过连线连接到后面的节点上,但这些节点需保持数据类型的一致(对于数值类型的数据可以进行强制转换),否者程序运行按钮会发生断裂的提示。换句话说,数据类型不相同的两个节点是不能连接到一起的。由此也可以看出连线是贯彻数据流编程基本概念最简单、最直观的方法。
这仅仅是一个认识图形化程序的一个实例,其中好多基本概念还没有进行过介绍。结合后面的内容我们会陆续做介绍。