Labview中引用,属性节点,局部变量之间的区别
- 格式:docx
- 大小:9.14 KB
- 文档页数:2
成员变量、实例变量、类变量和局部变量区别
⼀、成员变量、实例变量、类变量和局部变量区别
1::变量电议部分所定义的变量被称为类的。
也就是说在整个类中都有效,类中的⽅法可以直接调⽤成员变量使⽤。
然⽽成员变量⼜分为实例成员变量(简称)和类变量(简称)
1.1::就是我们正常定义的变量,⽐如int a; a就是
1.2::定义前要加上Static ⽐如static int a;这个a就是静态变量,当在变量定义前加上static的时候就代表着该变量在使⽤的时候有⼀处改变则各个⽤到这个变量的地⽅,该变量都发⽣改变,就是所谓的⼀处改变处处改变,静态变量的⽣存期为整个,但是只能在定义该变量的函数内使⽤该变量。
退出该函数后,尽管该变量还继续存在,但不能使⽤它。
2::在⽅法体中定义的变量和⽅法的参数称。
也就是说只在定义它的⽅法内有效,⽽⽅法外部的其他⽅法⽆法使⽤局部变量。
当局部变量名字与成员变量名字相同,则成员变量被隐藏,即这个成员变量在这个⽅法内暂时失效,以局部变量定义的为准。
⼆.长提到的⽅法有,类⽅法,实例⽅法。
就是名字和类名相同,⽽且没有类型。
类⽅法和实例⽅法的区别就是类⽅法前⾯有static修饰,⽽实例⽅法没有static修饰。
实例⽅法既能对类变量操作,也能对实例变量操作,⽽类⽅法只能对类变量进⾏操作。
用到的Labview知识点:属性节点、引用句柄、子VI、枚举、条件结构、连线板
首先创建三态的子VI:
1.在前面板添加“枚举”控件以及Bool引用句柄,创建布尔引用句柄方法为:先添加“控件引用句柄”,然后右键→选择VI服务器类→通用→图形对象→控件→布尔,并勾选“包括数据类型”;
2.在程序框图添加“属性节点”,并和Bool引用句柄连线;
3.添加“条件结构”,并同“枚举”类型连接,其中“枚举”类型的“编辑项”属性中添加三态:default,run,fault;
4.在每态条件结构中分别定义“数组常量”,然后添加“簇常量”,并在“簇常量”中添加两个“颜色盒常量”,然后将这个“簇常量”整体放入前面定义的“数组常量”,并同“属性节点”连线;
5. 程序框图如下图所示:
6.在前面板中对子VI进行连接线定义:前面板中右键子VI图标,选择编辑图标,此处选取自己喜欢的子VI图标,并勾选显示接线端,退出编辑后,继续右键子VI图标,选择“显示连线板”,开始选取子VI的连线板,这里选择前面板中的“枚举”和“bool引用句柄”这两个输入,至此子VI建立完成,前面板如下图所示:
子VI建立好后,就可以设计一个指示灯,试验一下三态LED的运行情况了,我添加的一个简单VI如下图,这里注意的是要创建指示灯的一个bool引用:
程序建立完成后,就可以运行了,试验结果表明此VI能很好的实现三态LED显示。
很多教科书上都提示要慎用局部变量和全局变量,主要有以下几个原因:违背了数据流的编程读取局部变量需要拷贝数据不能象SUBVI一样可以重用数据BUFFER不利于程序调试容易引起竞争我在论坛上看到很多初学者的程序,里面充满了大量的局部变量,可以这样说,当你使用了过多的局部变量的时候,你的程序结构是有问题的,在早期的LV版本中根本不存在全局变量和局部变量,同样可以编制规模很大的程序,这说明局部变量和全局变量并不是必须的,LV提供了它们是因为在特定的情况下可以简化编程。
当我们使用SUBVI时,我们需要定义一个连接器,包括输入输出端子,调用VI的数据从输入端子进入,当SUBVI未执行完毕时,数据是不会流出到输出端子的,因此,SUBVI可以重用调用VI的数据缓冲区。
而局部变量可以在子VI的任何位置被读写,局部变量在同一一个VI中,全局变量可以在任何VI中,所以通常情况下,无法重用数据缓冲区。
局部变量用于读写一个VI的前面板对象,对象是控制器或者指示器都可以,当我们读局部变量的时候,我们是在对象的当前状态,而对象在程序框图中的其它位置,其它的线程可能连续写这个对象,所以LABVIEW无法重用内存,不得不拷贝数据到新的缓冲区中,如果数据结构很大,就会占用相当多的内存。
很多情况下,局部变量都是可以避免的,看下面的例子。
上面图中的设计方式,在很多初学的程序中经常碰到,同样的数据要传到两个VI中,并且有次序要求,因此采用了顺序结构。
问题是根本没有必要用局部变量,局部变量导致了数据的复制。
上面的两个图完成同样的功能,一个仍然采用顺序结构,不过CLUSTER挪到了FRAME外面,通过隧道,将数据传入到两个子VI中,避免了使用局部变量。
但是顺序结构本身也是效率比较低的,也是NI不建议过度使用的.针对这个具体问题,最下面的是最好地解决方案,利用错误簇作为数据流实现了顺序处理,避免使用局部变量。
通过错误簇同时也有利于程序调试跟踪.另外一个明显的优点是程序框图更清晰明了,避免了在各个FRAME中进行切换.全局变量使用内存的方式类似于局部变量,不同的是每次读全局变量肯定要生成一份内存拷贝,而局部变量是有可能重用缓冲区的.当全局变量是一个比较大的数组或者字符串时,多处多次读操作会造成大量的内存复制,极大地占用内存,导致运行速度下降。
Labview复习题一、填空1. 所有的LabVIEW 应用程序,即虚拟仪器(VI),它包括前面板、流程图以及图标/连结器三部分。
2. LabView有三种操作模板,分别是控件模板、函数模板和工具模板。
3. CIN节点需要调用*.lsb格式文件,这种文件可以通过Visual C++来生成。
4. 虚拟仪器设计中连线为虚线时表示数据类型不匹配出错,当RUN按钮显示为折断的箭头时,表示程序有错误发生。
5.在LabView中局部变量主要用于程序内部传递数据,全局变量主要用于程序之间传递数据。
6. 程序框图由端口、节点和连线组成的可执行代码。
7、数组是相同类型的数据元素的集合,数据元素的类型可以是任意的,可以创建数值数组、布尔数组、字符数组和簇数组。
8、数据采集系统由被测参数→传感器→信号调理→数据采集卡→计算机组成。
9、Labview支持文本文件,二进制文件,数据记录文件,波形文件,测试数据文件等格式的文件输入和输出。
10、数据采集卡性能指标有输入通道数,输出通道数,采集位数,采集速度等。
11、循环边框上的数据出口为一个小方块,称为移位寄存器,具有存贮数据功能,对FOR循环而言第一次循环时布尔型数据出口值为false。
12、虚拟仪器在使用数据采集卡之前必须运行专用软件MAX进行配置,如设置通道名,输入输出类型,测量类型等。
13、LabVIEW概念是一种用图标代替文本行创建应用程序的图形化编程语言。
14、传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。
它用图标表示函数,用连线表示数据流向。
15、LabVIEW程序为称为VI,扩展名默认为.vi。
16、程序框图是图形化源代码的集合,这种图形化的编程语言也称为G语言。
17、虚拟仪器系统是由计算机、应用软件和仪器硬件三大要素构成的。
计算机与仪器硬件又称为VI的通用仪器硬件平台。
如文档对您有帮助,欢迎下载支持,谢谢!LV Nugget 之如何创建通用属性节点和调用节点 2011-01-01 07:34/csxcs366/blog/10-12/201447_993ee.html这篇文章中我谈到了创建通用引用的两个简便方法。
我们创建通用引用的目的是通过通用引 用的属性节点和方法节点等修改引用所指向的对象。
这与我们直接创建前面板中控件的引用 的目的是一样的。
我们必须注意,LV 中的数据都是以输入控件、显示控件和常量的方式存在的,通用控件的 引用本身也是一种特殊的控件,这导致了许多初学者在使用通用引用时出现了问题。
NI 论坛上有几个帖子就出现了这样的问题,我简单了回答了一下,但是网友无法理解,发 邮件希望我给解答一下,在这里我一并回答这个问题。
帖子地址为:/t5/NI-LabVIEW-CVI-数据采集等产品讨论区/两个难题-关于显 示数据和调用节点/td-p/1398578对于前面板中的控件,可以直接通过控件的快捷菜单创建它的引用、属性节点、调用节点、 常量、局部变量等等,以多列列表框为例,直接利用控件的快捷菜单。
在程序框图中的控件的接线端子中,同样可以利用接线端子的快捷菜单,创建指向控件的引 用、属性节点等,与控件的快捷菜单功能是相同的。
我们知道,对于前面板中的控件,直接创建它的属性节点和调用节点时,是不需要连接引用 的,这是因为我们通过快捷菜单创建时候,LV 自然知道创建的属性节点和调用节点是指向 这个特殊控件的。
实际上,我们也可以通过控件的引用,间接创建这个控件的属性节点和调用节点,在应用控 制函数选板中提供了很多与引用有关的操作,包括属性节点和调用节点。
箭头所示的属性节点和调用节点在使用时候必须连接控件的引用,也就是说这里的属性节点 和调用节点是通用的,不指向任何特定控件的,只有连接一个引用的时候,它才会指向一个 特定的控件或者特定的控件类型,指向特定的控件如下图所示,指向特定的控件类型则是我 们将要重点讨论的。
LabVIEW中的数据类型和变量管理在LabVIEW中,数据类型和变量管理是非常重要的概念。
通过正确地理解和使用数据类型和变量,我们可以更好地组织和管理数据,提高程序的可读性和可维护性。
本文将介绍LabVIEW中常用的数据类型,并探讨变量的管理方法。
一、数据类型在LabVIEW中,数据类型用于定义变量或数据的格式和属性。
常见的LabVIEW数据类型包括整数(Integer)、浮点数(Floating-Point)、布尔值(Boolean)、字符串(String)等。
不同的数据类型在内存占用、数据范围、精度等方面有所差异,选择合适的数据类型可以提高程序的效率和准确性。
例如,对于表示温度的变量,我们可以选择浮点型数据类型,以保留小数位数并能表示负数。
而对于只有两个状态的变量(如开关状态),布尔值可以更好地满足需求。
除了基本的数据类型,LabVIEW还提供了聚集数据类型,如数组(Array)和矩阵(Matrix)。
数组可以方便地存储和处理多个相同类型的数据,而矩阵则更适用于数学计算和图像处理等领域。
二、变量管理变量是在LabVIEW中存储和处理数据的基本单元。
良好的变量管理可以提高程序的可读性和可维护性。
1. 命名规范在LabVIEW中,变量的命名应遵循一定的规范,以提高程序的可读性。
以下是一些常见的命名规范:- 使用有意义的变量名,能准确描述变量的用途。
- 变量名应使用英文单词或单词缩写,避免使用拼音或中文等。
- 避免使用与LabVIEW内置函数或关键字相同的名称。
例如,对于表示温度的变量,我们可以使用“temperature”或“temp”等命名,而不要使用“t”或“temp1”等命名,以提高变量的可读性。
2. 变量作用域变量的作用域决定了变量的可见性和生存周期。
在LabVIEW中,可以通过将变量定义在合适的作用域内来控制其访问权限。
- 局部变量(Local Variable):定义在VI或子VI中,只在当前VI 中可见,适用于内部数据传递。
Labview中引用,属性节点,局部变量之间的区别
在Labview 中我们经常会碰到这样几个概念,那就是控件的引用,属
性节点以及局部变量,他们之间到底有哪些区别呢?首先谈引用,在Labview 中长称为引用句柄,在Windows 编程中,引用句柄指的是指向指针的指针,换句话说,引用句柄保存的是其他一些数据类型的地址,例如窗口句柄。
在Labview 中,控件的引用句柄指的也是指向特定数据类型的指针,在Labview 中,控件的引用句柄是长度为四个字节,引用句柄不但能够表示控件的类型,还与空间一一对应,这是通过句柄的编号来实现的,引用句柄自身未代表任何空间,但是通过引用句柄指向特定的实例后,就可以操作具体的控件了,简单的理解就是通过对引用句柄的操作,可以改变控件的属性参数。
接下来说属性节点,属性节点在Labview 中是一个很重要的概念,属性节点用于访问控件的属性,例如需要改变控件在前面板的大小,运行时候的状态等都需要通过属性节点来进行操作,与引用结合起来讲就是属性节点可以设置引用的属性。
Labview 的属性节点功能强大,不同的控件有不同的引用,这些不同的引用都可以通过各自的属性节点来进行设置,但需要注意的是,属性节点的执行效率比较低,甚至比全局变量的效率还要低,所以NI 一般建议少用属性
节点。
最后说局部变量,局部变量相当于C 语言中的局部变量一样,通过局部变量可以在一个VI 中访问或者存储数据,通常这些数据都是存储在不同
的显示或者输入控件当中,所以说局部变量不是单独存在的,每一个局部变量都是与特定的控件相对应的,一个控件可以生成许多局部变量,就相当于在一个函数中定义了一个变量,在函数的任何地方都可以使用这个变量一样,每一个局部变量都要复制对应控件中的数据,因此这将消耗更多的内存,因此在labview 中一些大的数组中不建议使用局部变量。
tips:感谢大家的阅读,本文由。