• 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读取出来, 两者值是一样的。
    • 这里的队列使得类成为了"引用"。

    二、子类的创建

    三、工厂模式

  • 相关阅读:
    C++移动语义 详细讲解【Cherno C++教程】
    Zookeeper - 本地安装与参数配置
    数据安全系列(1):开篇
    容器的通俗讲解
    Go基础3
    记一次栈溢出异常问题的排查
    弘扬企业家精神!闪马智能创始人兼CEO彭垚再获殊荣
    Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了
    APS车间排产软件实现企业生产数据可视化
    LeetCode //MySQL - 176. Second Highest Salary
  • 原文地址:https://blog.csdn.net/weixin_41303851/article/details/138189106