LabVIEW创建类 2
定义私有数据控件
创建LabVIEW类时,LabVIEW将自动创建类的私有数据控件。请注意在下列项目浏览器窗口中,LabVIEW类的图标是一个有色立方体。该立方体用于代表一个LabVIEW类。私有数据控件的图标是一个带有绿色圆柱体的有色立方体。圆柱体用于代表数据存储。同时,私有数据控件的图标中有一个红色钥匙符号,表示该控件是私有的。
通过控件编辑器窗口可对类的私有数据控件进行自定义。在项目浏览器窗口中双击类的私有数据控件,即可打开“控件编辑器”窗口。可将类私有数据的簇中的输入控件和显示控件放置到LabVIEW类的定义私有数据控件中。为类私有数据簇中的输入控件设置的默认值为类的默认值。
注: 私有数据控件不能包含XControl。
以下范例中,汽车类的数据类型包含齿轮数量、车门数量和颜色三个数值,以及制造和型号两个字符串。
注: 如类中不需要任何私有数据,类私有数据的簇中可以不设定任何数据。
用户可创建在前面板或程序框图上代表类的图标。单击类属性对话框常规设置页的编辑按钮,打开图标编辑器对话框。创建类图标后,LabVIEW将把类图标应用于类的所有对象。修改类中各个对象的图标。
创建成员VI
通过创建成员VI(或称创建方法),可对类的私有数据执行操作。成员VI是LabVIEW类的方法。在LabVIEW类中创建,并在项目浏览器窗口中该类的私有数据控件下出现的VI,是该类的成员VI。
LabVIEW将类的数据定义为一个簇。所有成员VI都可对类数据的簇进行读写。LabVIEW为创建用于访问簇中各元素的VI提供了捷径。这种访问器VI是LabVIEW类的成员,可对类数据进行读写操作。如创建一个访问器VI以读取类数据,LabVIEW将取消对类数据的绑定,如下图所示。
如创建用于写入类数据的访问器VI,LabVIEW将把新值绑定至类数据,如下图所示。
也可使用解除捆绑或按名称解除捆绑函数,在成员VI的程序框图中对类的私有数据解除捆绑。使用捆绑或按名称捆绑函数可在访问和操作私有数据之后,将数据重新捆绑成簇。由于类的数据是私有的,若试图在非该类成员VI的程序框图中通过“捆绑”和“解除捆绑”节点访问该类数据,节点将自动断开无法运行。
注: 建议尽量使用“按名称捆绑”和“按名称解除捆绑”函数替代“捆绑”和“解除捆绑”函数,以免在私有数据的簇中插入新元素时VI断开。
如写入成员VI的操作将取消捆绑某个值,修改该值然后将值捆绑至对象,可使用元素同址操作结构,在结构两边放置解除捆绑和捆绑函数,以实现更高的效率。该结构可保证LabVIEW使用了某些内存优化技术。使用常规取消捆绑和捆绑节点时也可使用该内存优化的方法。但是,在复杂VI的情况下,LabVIEW编译器可能会认为优化不够安全而拒绝使用优化算法,导致运行速度变慢。元素同址操作结构保证了这些优化算法的安全性,确保VI按优化算法运行。
可通过各种方式创建成员VI。右键单击类并在以下快捷菜单项中选择:
新建»VI-打开一个空的成员VI。
新建»属性定义文件夹-创建一个属性定义文件夹,可在其中创建或添加现有成员VI。如LabVIEW类包含一个属性定义文件夹,可将LabVIEW类连接至属性节点访问私有数据。
新建»基于动态分配模板的VI-LabVIEW将生成一个新成员VI,该VI带有错误输入簇、错误输出簇、一个用于错误处理的条件结构,以及输入LabVIEW类和输出LabVIEW类。在VI连线板上,LabVIEW将输入和输出接线端都设置为动态。
新建»基于静态分配模板的VI-LabVIEW将生成一个新成员VI,该VI带有错误输入簇、错误输出簇、一个用于错误处理的条件结构,以及输入LabVIEW类和输出LabVIEW类。与创建动态分配VI相反,LabVIEW不将动态分配VI的连线板上的输入和输出接线端设置为动态。
新建»用于数据成员访问的VI-打开创建访问器对话框。通过该对话框快速创建用于访问LabVIEW类数据的成员VI。
注: 使用该选项之前必须先保存新建的LabVIEW类。如未保存新类,LabVIEW将用于数据成员访问的VI选项灰暗显示。
新建»用于重写的VI-创建一个重写祖先类成员VI的成员VI。LabVIEW使用父VI的图标对子类的图标进行覆盖,创建新VI的图标。
注: 若不存在可重写的有效成员VI,LabVIEW将禁用新建»用于重写的VI选项。更多关于“动态VI”和“重写”的信息见继承一节。
右键单击前面板或程序框图上的常量或控件,从快捷菜单中选择显示类库,在项目浏览器窗口高亮显示相关类。如当前类不属于某个LabVIEW项目,LabVIEW将打开一个类窗口显示该类。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。
楼主最近还看过