目录
1、簇简介
LabVIEW中的结构体(中文版翻译为“簇”)是常用的一种数据结构类型,一个结构体控件中可以包含任意多个任意类型的不同元素。与数组不同的地方在于,它包含的元素数据类型可以相同,也可以不同,而数组中只能包含相同类型的多个元素。另外,在结构体控件中,包含的元素必须同时都是输入控件或同时是显示控件。
警告:结构体控件中,包含的元素要么同时是输入控件;要么同时是显示控件;不允许有的是输入控件,有的是显示控件。
由于结构体控件把数据类型不同,但逻辑相关的多个控件封装在了一起,因此,在编程中使用结构体控件的好处是操作更方便,条理更清晰,特别是在编写子VI程序时,如果使用结构体控件作为输入输出参数的话,则可以在一个数据端口上传递多个不同的参数,可以大大减少连线及端口的数量。
下面给小伙伴们介绍下LabVIEW中结构体(簇)控件的编程及使用方法。
2、簇控件的创建
以在前面板上创建一个包含学生信息的结构体控件为例说明。
第一步:先从控件模板的“数据容器”子模板中选择“簇”控件,将其放在前面板中,这样就创建了一个结构体控件的空壳子用以存储结构体成员变量控件。
第二步:然后分别选择三个控件拖放到该空壳子中用来存储学生的姓名、性别及分数,其类型分别为字符串、枚举及数值型控件,并分别命名为姓名、性别及分数。
第三步:最后,分别对姓名、性别及分数赋初值就完成了一个结构体控件的创建。
创建完成后的样子及程序框图上对应的数据端口图标如下图所示:
3、按名称解除捆绑
“按名称解除捆绑”函数的功能是根据名称有选择地输出簇的内部元素,其中元素名称指元素的标签。
4、读簇控件值方法
在LabVIEW函数模板中,提供了结构体控件值的读写操作函数,程序框图单击右键,调出“簇、类与变体”,如下图所示:
如下图中所示,使用“按名称解除捆绑”函数读取了“簇x”的姓名、“簇x”的性别及“簇x”的分数信息,然后在三个显示控件(姓名显示控件、性别显示控件及分数显示控件)上分别进行显示。
“簇x”的姓名读到姓名的显示控件
“簇x”的性别读到性别的枚举显示控件
警告:“簇x”的性别的枚举值要和性别的枚举显示控件的枚举值一一对应。即:“簇x”的性别的枚举值分别为:男、女;性别的枚举显示控件的枚举值也应该分别为:男、女。
“簇x”的分数读到分数的显示控件
5、读簇控件值运行效果
“簇x”的姓名、“簇x”的性别及“簇x”的分数信息,然后被读到姓名显示控件、性别显示控件及分数显示控件进行显示。
6、按名称捆绑
“按名称捆绑”函数的功能是通过元素的名称给簇的内部元素赋值,形成一个新的簇并输出。“按名称捆绑”函数通过参考簇来获得元素的名称,其中参考簇是必不可少的。
“按名称捆绑”函数用于写数据到簇内部元素。
(1)、添加1个按名称捆绑
(2)、连线簇x的输出端到按名称捆绑的输入簇端
按名称捆绑的左边自动出现簇的成员“姓名”
(3)、把按名称捆绑控件向下拖拽,直到簇的成员全部出现(簇的成员有三项:姓名、性别和分数),因此只要向下拖拽直到姓名、性别和分数全部出现即可。
(4)、连线按名称捆绑的分数端:写分数显示控件+10.3送到簇Y的分数成员。
(5)、连线按名称捆绑的姓名端:
按名称解除捆绑的姓名的输出端和按名称捆绑的姓名的输入端连线
(6)、连线按名称捆绑的性别端:
按名称解除捆绑的性别的输出端和按名称捆绑的性别的输入端连线
(7)、连线按名称捆绑的输出簇端到簇Y的输入端
7、写簇方法运行效果
8、解除捆绑
该函数的功能是解开簇中各个元素的值。默认情况下,它会根据输入簇自动调整输入端子的数目和数据类型,并按照内部元素索引的顺序排列。在每一个输出接线端对应一个元素,并在接线端上显示出对应元素的数据类型。同时,接线端上数据类型出现的顺序与簇中元素的数据类型顺序一致,但是可以选择输出元素的个数。
前面板创建三个控件,分别为:解除捆绑姓名、解除捆绑性别、解除捆绑分数。
程序框图拖拽一个解除捆绑控件:
连线:簇X的输出端的解除捆绑控件输入端
9、解除捆绑运行效果
10、捆绑
该函数可用于为参考簇中各元素赋值。一般情况下只要输入的数据顺序和类型与簇的定义匹配,就不在需要参考簇,但是当簇内部元素较多,或者用户没有太大把握的时候,建议加上参考簇。参考簇必须与输出簇完全相同,可以直接使用鼠标右键单击需要赋值的簇,选择“创建”下的“常量”选项创建一个与输出簇完全相同的常量簇作为参考簇。
连线:簇常量和捆绑的簇端
11、捆绑运行效果
12、其它注意事项
在LabVIEW中使用结构体控件编程,以下几点需要注意:
在结构体控件右键菜单中选择“自动调整大小”---->“调整为匹配大小”,可使结构体控件的大小自动随着其包含的所有控件的大小自动适应显示;两个外观完全相同结构体控件未必等价,因为结构体内部的成员变量控件还有一个顺序的概念,默认每个控件的顺序是按在创建时放入到结构体空壳子中的顺序定义,在结构体控件右键菜单中选择“重新排序簇中控件……”,可以修改每个成员变量控件的顺序;结构体控件可以放到数组中,创建一个结构体类型的数组,从而进行更为复杂的操作,甚至反过来也可以在结构体控件中放置数组控件作为其中的一个成员变量。
致谢: