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

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

转换的方式有两种:

  • 变体转换
  • 保留运行类
相关推荐
LabVIEW开发9 小时前
LabVIEW软件项目设计方案如何制定
labview
LabVIEW开发2 天前
LabVIEW在电液比例控制与伺服控制中的应用
labview·labview知识
LabVIEW开发3 天前
什么样的LabVIEW控制算自动控制?
算法·labview
LabVIEW开发4 天前
LabVIEW中什么和C 语言指针类似?
c语言·开发语言·labview
乌恩大侠5 天前
使用 Ettus USRP X410 进行无线系统原型开发的 LabVIEW 参考架构软件
labview
自小吃多6 天前
LabVIEW 保存文件
labview
LabVIEW开发15 天前
LabVIEW调用Thorlabs的动态库进行开发
labview·labview知识
LabVIEW开发20 天前
LabVIEW氢同位素单质气体定量分装系统
labview·labview开发案例
LabVIEW开发22 天前
LabVIEW氢气纯化控制系统
labview·labview开发案例
葛小白123 天前
第四天 Labview交互也很轻松(4.2 串口通信)
labview