LabVIEW专栏八、类

该章目的是可以开发仪器类。

一、类的概述

一般来说类有三大特性,封装继承多态

  • 在实际项目中,最主要是继承多态,要搞清楚这两者的概念和在LabVIEW中是怎样应用的。
  • 在LabVIEW中,面向对象编程用到的就是LabVIEW的类,后缀是.lvclass。

以下以设备类的层级来说明,假设现在有三个类,分别是
①device:设备类
②serial_device:串口设备类
③network_device:网口设备类
串口设备类和网口设备类继承设备类,那么设备类是它们两个的父类,相对来说,它们两个是设备类的子类。

二、类的创建

①在创建了项目之后,就可以在项目中创建类:右键"我的电脑"→新建"类"在这里插入图片描述
②此处新建一个device类,默认指定LabVIEW对象为父类
在这里插入图片描述
③点击确定后,完成创建
在这里插入图片描述

三、继承

类的继承表现为子类继承父类相关的数据成员成员方法
父类比较抽象,用于给子类提供成员方法,供子类实现。
子类在父类的基础下,进行扩展,添加新的属性和方法,子类的功能必定比父类更丰富,更具有特殊性。
比如说一个通用的设备,作为设备的父类(以下称为设备类),一般会有四个方法,分别是连接,读,写,断开,在LabVIEW中称之为"动态方法"
网口设备类继承这个设备类,可以具体实现网口的连接,读,写,断开,LabVIEW中称之为"重写"
测试仪器类继承网口设备类,需要实现读取测试仪数据这个VI,这个就是子类独有的方法,这个方法不需要这个类重写的,在LabVIEW中称之为"静态方法"。
子类可以重写父类的"动态方法"和使用父类的"静态方法",也可以使用父类的"数据成员"。

1.1、静态方法

静态方法可供子类直接调用
创建静态方法的步骤是:
右键对应的类,此处是device.class→新建→点击"基于静态分配模板的VI"
在这里插入图片描述
此处新建一个静态方法为"报警.vi"
程序框图如下:
在这里插入图片描述

1.2、动态方法

动态方法可以供子类重写,设备一般会有运行,这个每个子类的实现都不同。
创建动态方法的步骤是:
①右键对应的类,此处是device.class→新建→点击"基于动态分配模板的VI"在这里插入图片描述
②名称改为"运行"
在这里插入图片描述

1.4、新建子类

1.4.1、新建时继承

新建一个串口设备类,名称为"serial_device.vi",指定继承父类"device"
在这里插入图片描述

1.4.2、设置继承

如果在新建一个类后,想重新设置继承关系,可以通过以下步骤:
①新建一个网口设备类"network_device",默认继承父类LabVIEW对象。
在这里插入图片描述
②右键"network_device"→点击"属性",弹窗
在这里插入图片描述
③选中"继承"→点击"修改父类"
在这里插入图片描述
④选中"device"→点击"继承所选类",则重新制定"device"为"network_device"的父类
在这里插入图片描述

1.4.3、子类调用父类的静态方法

新建"test.vi"
在这里插入图片描述
程序框图如下:
在这里插入图片描述
这里体现了子类可以直接使用父类的方法。
这里虽然调用的是"静态方法",但是实际无论是父类的"静态方法"还是"动态方法"都可以供子类调用

四、多态

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
重写的VI体现了类的多态。

4.1、子类重写父类动态方法

子类可以使用父类的静态VI和动态VI。
不可以再新建一个与父类静态VI同名的VI,意思就是不能重写父类的静态VI。
可以重写父类的动态VI。
这里重写"运行.vi",以"serial_device"为例。
①右键"serial_device"→点击"新建"→点击"用于重写的VI"
在这里插入图片描述
②弹窗,就会显示所有能重写的VI,也就是所有父类的动态方法
在这里插入图片描述
③新建"运行.vi"后,程序框图修改为:
在这里插入图片描述
④同样步骤,“network_device"重写"运行.vi”,程序框图如下:
在这里插入图片描述
至此,“serial_device"和"network_device"类都有了"运行.vi”

⑤新建一个"test1.vi"
在这里插入图片描述
程序框图如下:
在这里插入图片描述
运行后,两次弹窗,第一次是"串口运行",第二次是"网口运行":

在这里插入图片描述
在这里插入图片描述
多态体现在:

  • "serial_device"和"network_device"可以组成数组,这个数组是"device"数组
  • “device"数组进入for循环后,第一次执行的是"serial_device"的"运行.vi”,第二次执行的是"network_device"的"运行.vi"

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

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

相关文章

Mac 上可以使用 ping 端口

在 Mac 上可以使用 ping 命令来检查与另一台计算机或网络设备的连通性。要 ping 一个端口,你需要使用另一个命令 nc(也称为 netcat)。 例如,假设你想要 ping 端口 8080(通常用于 HTTP 代理服务器)&#xf…

SAM在低阶自适应航空土地覆盖分类中的应用2024.01

GEOSCIENCE AND REMOTE SENSING LETTERS 2024.01 提出了一种新的语义分割模型,该模型结合了SAM的图像编码器和低秩自适应方法(LoRA),用于航空图像的特征提取和微调。我们还使用了一个辅助CNN编码器来促进下游适应,并补充ViT编码器在密集视觉…

机器学习模型效果不好及其解决办法

当训练出来的机器学习模型效果不佳时,可能涉及多个方面的原因。为了改善模型的效果,需要系统地检查和分析问题的根源,并采取相应的措施进行优化。 一、数据问题 数据质量 检查数据是否干净、完整,是否存在噪声、异常值或缺失值。…

【MySQL】A01、性能优化-语句分析

1、数据库优化方向 A、SQL及索引优化 根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以多种写法,这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式,设计表结构&…

MAC 安装miniconda

Conda Conda是一个开源跨平台语言无关的包管理与环境管理系统。由“连续统分析”基于BSD许可证发布。 Conda允许用户方便地安装不同版本的二进制软件包与该计算平台需要的所有库。还允许用户在不同版本的包之间切换、从一个软件仓库下载包并安装。 Conda是用Python语言开发&am…

从C向C++14——STL初识及函数对象

一.STL初识 1.STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西C的面向对象和泛型编程思想,目的就是复用性的提升多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了ST…

详解汽车充电桩主板的硬件设计与软件系统

随着电动汽车时代的到来,充电桩逐渐成为城市新地标。而在每一个充电桩的核心,隐藏着一颗强大的“心脏”——充电桩主板。 充电桩主板是充电桩的核心部件,决定着充电桩的充电效率、安全和用户体验。今天,我们将深入探索汽车充电桩主…

数学分析复习:三角函数的周期性

文章目录 三角函数的周期性 本篇文章适合个人复习翻阅,不建议新手入门使用 三角函数的周期性 本节的主题是研究三角函数的周期性,我们之前已经解析地定义三角函数为 cos ⁡ x ∑ k 0 ∞ ( − 1 ) k x 2 k ( 2 k ) ! , sin ⁡ x ∑ k 0 ∞ ( − 1 )…

Java并发编程之锁的艺术:面试与实战指南(二)

1. Java中线程和进程的区别是什么? 进程是系统分配资源的基本单位,它包含了一个或多个线程以及相关的系统资源(如内存、文件句柄等)。进程间相互独立,通过进程间通信(IPC)进行信息交换。线程是…

分布式版本控制工具 Git 的使用方式

文章目录 Git简介下载安装基本使用起始配置Git 的三个区域基本操作流程查看仓库状态删除(撤销暂存区)差异对比查看版本日志版本回退修改提交日志分支概念:创建分支与切换分支合并分支(快速合并)合并分支(提…

jQuery中的api操作

1、认识jQuery jQuery函数 , jQuery的别 "$" , $也是一个函数. // $(function(){})// $ 是什么? $ 是一个函数// console.log(typeof $);// function// $ 是jQuery的别名?// window.jQuery window.$ jQuery;// console.log(jQuery $);// true 2、文档遍历和操…

北京筑龙当选中招协第二届招标采购数字化专业委员会执行主任单位

4月18-19日,中国招标投标协会(以下简称中招协)2024年年会在宁波召开,北京筑龙作为中招协理事会员单位受邀出席会议。会议期间举行了“电子招标采购专业委员会换届会议暨第二届第一次工作会议”,北京筑龙当选第二届招标…

用代码给孩子造“钱”

起因 作为家里有两个娃的奶爸,时长为了孩子乱花钱而焦虑不已。然后最近看到一段短视频说了这么段话。 父母不要被动给孩子买东西,而是定期给孩子钱。让孩子自己管钱培养她对于钱的认知和理财的观念。 突然感觉大师我悟了。感觉值得一试。于是就打算给他…

如何在官网查看Qt5的所有模块?

2024年4月23日,周二上午 如果你不想一步步来的话,可以直接去这个Qt官方链接 https://doc.qt.io/qt-5/qtmodules.html 第一步:去到Qt官网 https://www.qt.io/ 第二步:点击文档链接 第三步:选择文档中的“Qt5” 第四步…

Python项目开发实战:如何自动化读取Excel数据文件并用可视化分析

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python项目开发实战_自动化读取Excel数据文件并用可视化分析_编程案例实例课程教程.pdf 1、可视化分析的特点 在Python项目开发实战中,可视化分析扮…

Python中的tkinter工具包帮助文档查询以及Python其他GUI工具包分类

Python中的tkinter工具包帮助文档查询以及Python其他GUI工具包分类 虽然Python支持许多GUI工具包,然而Tkinter是Python的实际标准GUI(图形用户界面)包,也是最常用的一种。本文简要介绍tkinter工具包帮助文档查询以及Python其他GU…

SpanBert学习

SpanBERT: Improving Pre-training by Representing and Predicting Spans 核心点 提出了更好的 Span Mask 方案,也再次展示了随机遮盖连续一段字要比随机遮盖掉分散字好;通过加入 Span Boundary Objective (SBO) 训练目标,增强了 BERT 的性…

flask_apscheduler 定时任务框架

简介 Flask_apscheduler是一个在Flask框架中使用的APScheduler库的扩展。APScheduler是一个用于调度任务的Python库,可以在指定的时间间隔调度函数、方法或任意可调用对象的执行。 Flask_apscheduler对APScheduler进行了集成,使得在Flask应用中可以简便…

FFmpeg 源码分析:av_seek_frame()

[TOC](FFmpeg 源码分析:av_seek_frame()) FFmpeg 源码分析:av_seek_frame() 函数原型 av_seek_frame() 是 FFmpeg 中的一个函数,位于 libavformat/avformat.h,用于定位媒体文件中的某一帧。 下面是 av_seek_frame() 的函数定义…

Python小功能实现(链接下载图品并存储到EXCEL中)

import os import requests from openpyxl import Workbook from openpyxl.drawing.image import Image from concurrent.futures import ThreadPoolExecutor# 图片链接列表 image_urls ["https://uploads/file/20230205/f85Lpcv8PXrLAdmNUDE1Hh6xqkp0NHi2gSXeqyOb.png&q…