LabVIEW专栏九、类的应用

一、类的应用

接上一章"类"

类在项目中,一般会在类的私有成员簇内,包含一个数据类型为参数类的队列。

例如网口类,里面实际会包含很多信息,有IP地址和端口等等参数。这些参数如果不放在队列引用中缓存下来,就无法在实际生产中修改参数。

因此,在实际应用中,需要新建一个网口参数类来包含IP地址等参数,而网口类需要一个元素最大长度为1的队列引用。

这个队列引用的作用就相当于一个全局变量,可以供网口类在初始化之后,别的地方可以读取或者修改其包含的网口参数类。

1.1、新建参数父类

由于参数类是每个仪器都有的,所以也是仪器类的共性,所以新建一个设备参数类"device para",充当仪器参数的父类。

类私有数据的簇,这个簇里面的元素也称为成员变量。

①新建"device para",默认继承LabVIEW对象

②LabVIEW类私有数据的簇,这个簇里面的元素也称为成员变量。双击类内的.ctl,可以打开,此处是双击"device para.ctl"。

仪器都应该有对应的名称,比如说是"某某工位的网口仪器类"等,所以在仪器参数类中可以包含一个name的成员变量。

添加一个类型为字符串,标签为name的控件。

③类需要新建一个用于访问类内数据成员的VI,有读和写的方法,通过这两个方法,可以读取和修改这个成员变量。

右键"device para"→点击"新建"→点击"用于数据成员访问的VI..."

④权限用"读写",其余全部默认,点击确定。就能生成两个vi,一个是读取name,一个是写入name,保存

  • 在程序框图里,其实就是簇的解绑和捆绑。
  • 类里面簇包含的变量,只能在成员方法中(静态方法和动态方法)解绑或捆绑,如果VI不是成员方法的,是无法解析类中的元素的。所以上面"读取name"和"写入name"能操作类的成员变量,是因为这两个方法都是类的成员方法。
    因此想要访问类中的成员变量,只能通过成员方法,最好就是通过上述步骤来生成"用于数据成员访问的VI..."

1.2、设备类包含参数类队列

需要在设备类中包含一个数据元素为设备参数类的队列控件

由于LabVIEW前面板没对应的队列控件,所以会有点复杂。

①在程序框图中放置一个"获取队列引用"→鼠标移动到"队列输出"输出接线端→右键后,选中"创建"→点击"输入控件"。

②这里的"队列输出"控件,就是队列控件。双击控件后,跳转到前面板,

③把"device para"类,拉出来放置到队列控件后,就可以得到一个数据元素为设备参数类的队列控件。

④把队列控件,放置到device类的成员变量中,并修改标签为"参数类队列",保存后,关闭"device.ctl"。此处如果不关闭,可能会导致类报错,接着正常关闭就行。

⑥"device"类新建一个"创建"的静态方法,程序框图如下:

  • 新建了一个队列最大长度为1,数据类型为"device para"的队列,并入了一个默认值进队列
  • 由于队列是引用,这样在程序的其他地方修改了这个队列里的元素是可以生效的。

⑦右键选中"device"类,新建一个静态方法,名字改为"获取参数",程序框图和前面板如下:

  • 输出节点要连上"元素"控件
  • 要用"预览队列元素"来读取,而非出队列。

⑧右键选中"device"类,新建一个静态方法,名字改为"写入参数",程序框图和前面板如下:

  • 输入节点要连上"元素"控件
  • 要用"有损耗元素入队列"来读取,而非入队列。

⑨创建一个VI来测试上述功能,程序框图和前面板如下

  • 上面的循环可以修改"device"成员变量队列中的"device para"的name,下面的循环把"device"成员变量队列中的"device para"的name读取出来, 两者值是一样的。
  • 这里的队列使得类成为了"引用"。

二、子类的创建

子类可以使用父类的成员变量和成员方法,也就是说,网口设备类可以使用设备类的成员变量"参数类队列"。也可以使用其成员方法"创建"。

2.1、新建网口参数类

网口参数包含IP地址和端口,在"簇"中,先加入这两个变量。

新建数据成员方位的VI

重写父类的"动态方法"的"创建",参数需要先插入新建好的"网口参数类",这样在后面转换的时候,不会报错。

转换的方式有两种:

  • 变体转换
  • 保留运行类
相关推荐
Gentle5861 天前
labview关于文件路径的问题
labview
柘木木4 天前
学习与理解LabVIEW中的格式化写入(Format into String)函数
学习·labview
Gentle5868 天前
labview实现导出excel表格
excel·labview
斯金8 天前
LabVIEW-TestExec SL
labview
Gentle5869 天前
labview连接sql server数据库
服务器·数据库·labview
工匠Sola10 天前
LabVIEW编程基础教学(一)--介绍
labview
LabVIEW开发10 天前
LabVIEW导入并显示CAD DXF文件图形 程序见附件
labview·labview知识
Gentle58610 天前
labview中连接sql server数据库查询语句
数据库·labview
Gentle58610 天前
labview用sql server数据库存取数据到一个单元格
数据库·labview
易召13 天前
练习LabVIEW第四十三题
labview