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://xiahunao.cn/news/2981095.html

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

相关文章

基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2013B 3.部分核心程序 .............................................................................. %我们这里…

利用大模型与AI Agent,实现企业数据智能分析

导语:大模型爆火之后,很多企业也用大模型做了相关探索和实践,我们发现大模型解决单点问题时效果更好。但同时会产生安全、幻想等相关问题。今天从传统数据分析的痛点,到大模型智能分析的建设方式,并结合相关实践案例&a…

OpenHarmony实战开发-合理运行后台任务

简介 设备返回主界面、锁屏、应用切换等操作会使应用退至后台。为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控,包括进程挂起和进程终止。为了保障后台音乐播放、日历提醒等功能的正常使用,系统提供了受规范约束…

安全AI未来 | C3安全大会 · 2024,数据驱动 AI原生

数字为时代变革注入动力,AI为重塑社会文明带来原力。数智浪潮中,我们见证着时代跃迁的巨变,面临着适变、应变、驭变的挑战。 数字驱动、AI原生。数字的流动不仅承载着信息,更将激活未来的无限价值;AI,不…

unity cinemachine相机 (案例 跟随角色移动)

安装相机包 打开包管理工具 在 unity registry 搜索cinemachine 会在maincamera中生成一个组件cinemachineBrain 只能通过虚拟相机操控 主相机 虚拟相机的参数 案例 1.固定相机效果 位置 在固定的地方 默认的模式 2.相机跟随人物效果 焦距设置 20 跟随设置 把playere…

【Android】 四大组件详解之广播接收器、内容提供器

目录 前言广播机制简介系统广播动态注册实现监听网络变化静态注册实现开机自启动 自定义广播发送标准广播发送有序广播 本地广播 内容提供器简介运行时权限访问其他程序中的数据ContentResolver的基本用法读取系统联系人 创建自己的内容提供器创建内容提供器的步骤 跨程序数据共…

STM32的GPIO输入和输出函数详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. GPIO模式 2. GPIO输出 2.1 RCC 2.2 GPIO 3. 代码示例 3.1 RCC时钟 3.2 GPIO初始化 3.3 GPIO输出函数 3.4 推挽输出和开漏输出 4. GPIO输入 4.1 输入模式 4.2 数据读取函数 5. C语言语法 1…

【书生浦语第二期实战营学习笔记作业(四)】

课程文档:https://github.com/InternLM/Tutorial/blob/camp2/xtuner/readme.md 作业文档:https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md 书生浦语第二期实战营学习笔记&作业(四) 1.1、微调理论讲解及 XTuner 介绍 两种Fin…

8.4.3 使用3:配置单臂路由实现VLAN间路由

1、实验目的 通过本实验可以掌握: 路由器以太网接口上的子接口配置和调试方法。单臂路由实现 VLAN间路由的配置和调试方法。 2、实验拓扑 实验拓扑如下图所示。 3、实验步骤 (1)配置交换机S1 S1(config)#vlan 2 S1(config-vlan)#exit S…

Vue基于高德地图API封装一个地图组件

一、参考资料 高德开放平台 | 高德地图API (amap.com) 二、安装及配置 pnpm i vuemap/vue-amap --save man.ts 密钥及安全密钥需要自己到高德地图开放平台控制台获取. import { createApp } from vue import App from ./App.vue import router from ./router i…

蓝桥杯管道

一开始拿到这道题没有什么头绪。综合各路大佬题解,一下子豁然开朗。 题眼:每一段感受器都感受到水的最早时间。由于整个管道,分为多个段,每个段都有一个感受器。所以题眼翻译为:覆盖满整条管道,所需要的最短…

系统设计 --- E2E Test System

系统设计 --- E2E Test System 什么是E2EE2E Architecture Example 什么是E2E E2E(端到端)测试是一种软件测试方法,旨在模拟真实的用户场景,测试整个应用程序或系统的端到端功能和交互流程。E2E 测试涵盖了从用户界面到后端系统的…

用于车载T-BOX汽车级的RA8900CE

用于车载T-BOX等高精度计时的汽车级时钟模块RTC:RA8900CE.车载实时时钟芯片RA8900CE内置32.768Khz的晶体,实现年、月、日、星期、小时、分钟和秒精准计时。RA8900CE满足AEC-Q200认证,内置温补功能,保证实时时钟的稳定可靠,功耗低至…

计算机网络3——数据链路层3以太网的MAC层

文章目录 一、MAC 层的硬件地址1、介绍2、注意点3、定制标准 二、MAC 帧的格式1、结构2、工作原理3、其他 一、MAC 层的硬件地址 1、介绍 在局域网中,硬件地址又称为物理地址或 MAC地址(因为这种地址用在MAC帧中)。 大家知道,在所有计算机系统的设计中…

[C++][算法基础]能被整除的数(容斥原理)

给定一个整数 𝑛 和 𝑚 个不同的质数 𝑝1,𝑝2,…,𝑝𝑚。 请你求出 1∼𝑛 中能被 𝑝1,𝑝2,…,𝑝𝑚 中的至少一个数整除的整数有多少个。 输入格式…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错,后来查阅资料发现是因为ssh登录时间很久,登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口,用于在Linux系统中处理和报告程序崩溃。 如果abr…

【Java--数据结构】“从扑克到程序:深入探讨洗牌算法的原理与魅力“

前言 以下是学习Java顺序表的一个实例应用———简单的洗牌算法。 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 定义每张扑克牌的属性 生成一副扑克牌(不包含大小王) 洗牌方法 发牌方…

软件测试之【软件测试概论二】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言软件测试模型瀑布模型V模型W(双V)模型测试活动 软…

ElasticSearch总结二

正向索引和倒排索引: 正向索引: 比方说我这里有一张数据库表,那我们知道对于数据库它一般情况下都会基于i d去创建一个索引,然后形成一个b树。 那么你根据i d进行检索的速度,就会非常的快,那么这种方式的…

(N-151)基于微信小程序校园学生活动管理平台

开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springbootmybatisplus 本系统分微信小程序和管理后台两部分&am…