LabVIEW专栏九、类的应用

news2024/12/23 16:14:24

一、类的应用

接上一章"类"
类在项目中,一般会在类的私有成员簇内,包含一个数据类型为参数类的队列。
例如网口类,里面实际会包含很多信息,有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读取出来, 两者值是一样的。
  • 这里的队列使得类成为了"引用"。

二、子类的创建

三、工厂模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1625047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

👨‍💻个人主页:程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

FPM 快速报表开发

背景: 使用FPM开发报表时,如果报表字段过多,页面拖拽等操作不方便 报表数量过多时,新建应用操作步骤较为繁琐 更习惯通过少量代码而非页面操作去实现功能 处理: 将FPM报表开发简化为类似GUI端ALV的开发过程:&#xff…

大模型微调之 使用 LLaMA-Factory 微调 Llama3

大模型微调之 使用 LLaMA-Factory 微调 Llama3 使用 LLaMA Factory 微调 Llama-3 中文对话模型 安装 LLaMA Factory 依赖 %cd /content/ %rm -rf LLaMA-Factory !git clone https://github.com/hiyouga/LLaMA-Factory.git %cd LLaMA-Factory %ls !pip install "unsloth…

力扣数据库题库学习(4.25日)

1484. 按日期分组销售产品 问题链接 思路与分析 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。我来分析一下,这里的题目要求其实就是统计不同日期下的销售产品数&#xf…

excel文件导入dbeaver中文乱码

1.将excel文件进行另存为,保存类型选择【CSV】 2.选择【工具】–>【web选项】–> 【编码】–> 【简体中文(GB18030)】 3.在DBeaver进行数据导入 直接导入应该就可以,如果不行的话按下面处理。 选择【导入数据——选择cs…

【3GPP】【核心网】【4G】LTE中S1-MME流程字段分析(二)

1. 欢迎大家订阅和关注,精讲3GPP通信协议(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 承接上文 目录 6. PDN Connectivity 7. PDN Disconnection 8. EPS Bearer resource allocation 9. EPS Bearer r…

Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程

文章目录 仓库地址项目简介如何使用 仓库地址 Github:https://github.com/palp1tate/WebsocketDemo 欢迎star!😎 项目简介 利用 GinWebSocket 实现的在线聊天室Demo项目,支持加入/离开聊天室广播、给其他用户发送消息等。 如何…

sqlplus / as sysdba登陆失败,(ORA-01017)

周一上班检查alert log,看到某个库报出大量的错误 提示无法连接到ASM实例,这是某知名MES厂商DBA创建的11G RAC刚刚​转交到我手上的,这又是给我挖了什么坑? 报错为ORA-01017​用户名密码不对?​what? 登陆o…

【线性代数 C++】求逆矩阵

对于 n n n阶矩阵 A A A,如果有 n n n阶矩阵 B B B,使 A B B A E ABBAE ABBAE,则说 A A A是可逆的,并把 B B B称为 A A A的逆矩阵. A A A的逆矩阵记作 A − 1 A^{-1} A−1,则 B A − 1 BA^{-1} BA−1.若 ∣ A ∣ ≠…

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器,其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门,公司使用的商用产品,或多或少有些问题,这部分可能是历史选型导致的,这里撇开不不谈;项目里面也有很多C…

【白盒测试】单元测试的理论基础及用例设计技术(6种)详解

目录 🌞前言 🏞️1. 单元测试的理论基础 🌊1.1 单元测试是什么 🌊1.2 单元测试的好处 🌊1.3 单元测试的要求 🌊1.4 测试框架-Junit4的介绍 🌊1.5 单元测试为什么要mock 🏞️…

【自然语言处理】InstructGPT、GPT-4 概述

InstructGPT官方论文地址:https://arxiv.org/pdf/2203.02155.pdf GPT-4 Technical Report:https://arxiv.org/pdf/2303.08774.pdf GPT-4:GPT-4 目录 1 InstructGPT 2 GPT-4 1 InstructGPT 在了解ChatGPT之前,我们先看看Instr…

线性代数-行列式-p1 矩阵的秩

目录 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质

Apache Doris 2.x 版本【保姆级】安装+使用教程

Doris简介 Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于…

数据挖掘实验一

一、实验环境及背景 使用软件: Anaconda3 Jupyter Notebook 实验内容: 1.使用Tushare或者其他手段获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。2.使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典&…

Linux系统安全与应用【一】

目录 1.账号安全控制 1.1 系统账号清理 1.2 密码安全控制 1.3 命令历史限制 1.4 命令总结 2.系统引导和登录控制 2.1 使用su命令切换用户 2.2 限制使用su命令的用户 3.可插拔式认证模块PAM 3.1 linux中的PAM安全认证 3.2 PAM认证原理​编辑 3.3 PAM认证的构成 3.4 P…

UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动

UEFI安全启动模式下安装ubuntu的nvidia显卡驱动 实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) 一、NVIDIA官网下载驱动 1.1在浏览器地址栏输入https://www.nvidia.cn/drivers/lookup/进入网站,接着手动驱动搜索,并…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics (GPB)发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

Linux常用监控命令(笔试面试常考)

1.、free命令 [rootRocky8-node1 ~]# free -htotal used free shared buff/cache available Mem: 1.7Gi 1.1Gi 69Mi 31Mi 554Mi 436Mi Swap: 2.0Gi 258Mi 1.7Gi free命令是Linux系统中用…

paddle ocr v4 微调训练文字识别模型实践

识别步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据准备…