LabVIEW快速入门

参考:

  • 知乎labview快捷键 https://www.zhihu.com/question/287709225
  • github 上 LabVIEW教程 https://lv.qizhen.xyz/
  • LabVIEW 参考书籍 链接:https://pan.baidu.com/s/1irc0iftM0Gg3GCN2cBHCKw?pwd=y1mz 提取码:y1mz --来自百度网盘超级会员V7的分享
  • LabVIEW编程基础:条件结构编程 https://blog.csdn.net/ba_wang_mao/article/details/119211808
  • 细讲Labview事件结构用法(上)–入门篇——附用例讲解及用法拓展 https://blog.csdn.net/m0_52176775/article/details/134805242

x.1 LabVIEW简介

x.2 一些加快效率的快捷键

LabVIEW分为前面板和程序框图面板,快捷键都是在程序框图面板使用的。

ctrl+b:去除多余的线条

ctrl+u:快速整理所选区域的UI,并排列整齐

ctrl+h:调出帮助面板,help

ctrl+shift+n:调出导航面板,navigation

按住ctrl点选连线输入端:剪刀将交叉的线变不交叉

文件-属性:查看vi文件所在位置

x.3 基础知识

x.3.1 软件知识,开发流程

x.3.1.1 背景知识

LabVIEW 是美国国家仪器有限公司(National Instruments, NI)最核心的软件产品。LabVIEW 是一种编程语言,与其它常见的编程语言相比,最大的特点就在于它是一种图形化编程语言。G 语言是图形化编程语言(Graphical Programming Language)的缩写。

LabVIEW既是一种语言,又是一款IDE,使用NI LabVIEW 20xx进行开发,使用语言为G语言,他的最大用途在于:可以用LabVIEW的驱动程序或者工具包来与硬件设备建立通讯,快速控制硬件设备

LabVIEW兼容Windows、macOS、Linux,支持常见嵌入式设备如PDA、FPGA,以及运行 VxWorks 和 PharLap 系统的 RT 设备。

x.3.1.2 LabVIEW前后面板

LabVIEW分为前面板和程序框图面板,其中前面板用于搭建给用户看的前端的界面,通过数值控件+标签设置变量;

而重点是程序框图面板。该面板用于设置背后的逻辑,程序框图中所有的图形对象可以分为节点和连线

请添加图片描述

程序框图面板中连线的方向是很重要的,因为可以通过程序执行的顺序看出数据流流动的方向,一般我们默认数据流向从左到右,而一根数据线连在节点左侧默认为输入,右侧默认为输出。

请添加图片描述

是输入还是输出除了从数据流向来看,还可以通过控件类型来看。控件分为三类:常量控件(const),控制控件/输入控件(control),显示控件(indicator)。而控制控件为输入,显示控件为输出。

在这里插入图片描述

请添加图片描述

x.3.1.3 从LabVIEW属性中寻找文件存储路径

通过文件-vi属性就能查看vi的存储路径。

在这里插入图片描述

x.3.1.4 流程/创建子VI过程(包括VI图标,接线板和调用)

我们一般在书写一个新的VI程序程序的时候,遵循以下步骤:

  1. 创建新VI;在前面板书写与人交互的图;在后面板/程序框图面板书写程序逻辑;
  2. 在前面板右键编写子VI图标,画一个新的LabVIEW图标,或者导入图标,需要一个大小为32*32,每一通道位深为256的PNG图片;
  3. 在前面板设计子VI的接线板并保存;
  4. 在父VI中,直接拖入/或者导入子VI图标,按照节点板连线;
x.3.1.5 循环运行

为了让程序一直保存运行,可以使用工具条上的“连续运行”按钮。除此之外还可以使用循环结构,推荐使用循环结构。

请添加图片描述

x.3.1.6 分享(代码片段分享和论坛上讨论)

为了分享代码片段可以在程序框图面板选中代码片段,选中后选择“编辑-从所选项创建VI片段”,如此导出了png格式的代码片段。

如果想将PNG格式的代码片段导入,则新建VI,在程序框图面板拖入PNG便会将代码片段拖进。

LabVIEW的论坛可以在NI官网(需要挂梯子forums.ni.com)和LAVA(https://lavag.org/)上讨论。而代码分享则可以和origin上的分享一样直接点开,使用代码片段实现:

x.3.2 数据类型

x.3.2.1 数据基本类型

数据类型由在前面板创建与在程序框图面板创建,分为两种,分别是在程序框图面板创建的常量类型以及在前面板创建的变量类型。在前面板创建的变量类型可以通过右键-属性-标签来设置变量名,该变量可以在程序框图面板使用局部变量调用变量名来进行调用。

数据类型根据是输入还是输出可以分为输入控件(control)和显示控件(indicator),由于labVIEW特性(数据流从左往右流动),所以输入控件的入口在控件左侧,而显示控件的出口在右侧,书写代码时遵循数据流向从左至右。下图中从上至下分别是常量,输出,输入。

在这里插入图片描述

LabVIEW的数据类型一共有十五种,其中主要记忆数据类型有字符串类型U8(每个字符是U8, ASCII,结尾处不用\0,而是用字符串的长度表示字符串结尾),浮点型DBL(双浮点类型,64bit/8Byte),整型I32(4Byte),布尔类型U8(1Byte)。

其中字符串是粉色线,浮点型是橘色线,整型是蓝色线。

请添加图片描述

可以实现数据的强制类型转换,通过在函数选板 “编程 -> 数值 -> 转换” 来实现。

请添加图片描述

x.3.2.2 使用C语言+公式节点进行数据的计算

数值运算的方式有常见运算(用LabVIEW实现),表达式节点,公式Express VI,公式节点(用C实现计算)。这里推荐常见运算和公式节点:常见运算只能单一输入输出,公式节点适合多输入和多输出且C语言较好的人使用。二者区别如下,

请添加图片描述

x.3.2.3 簇

簇类似结构体,我们往往用簇来生成错误簇并连接。

在簇的前面板中,我们通过右键边缘调出功能面板,我们使用的主要功能有“重新排序簇中控件”和“自动选择大小 -> 垂直排列”。

  1. 往簇中存储数据

在程序框图面板,我们需要将数据捆绑后传入簇或者将簇中数据解绑后传入变量中。簇的创建,需要使用按名称捆绑,而按名称捆绑这个控件首先要有一个输入簇,这个簇提供的是簇里面各个控件的名称,之后就可以在“按名称捆绑”这个控件输入端左键点击选择各个名称了,生成的簇和你的输入簇格式一样。

创建簇,首先我们在前面板创建一个簇,并命名好变量名,如value1和value2,

在这里插入图片描述

在程序框图面板,拉入“按名称捆绑”,我们需要给它外接一个簇,这个簇的作用只是告诉簇中的变量名是什么。接着把你需要给这些变量赋予的值转入,如此便构造了一个簇。你还可以选择后接一个输出簇2来显示簇里的变量和元素,

在这里插入图片描述

  1. 从簇中读取数据

而我们也可以使用簇来存储数据并读取,当我们需要从簇中读取数据时,我们需要使用按名称解绑,我们这两步都需要给簇中的变量名赋予标题(即变量名)。我们在前面板创建显示簇/输出簇,在后面按名称解绑,便可以获取到变量名和值,

在这里插入图片描述

x.3.2.4 数组
  1. 数组的创建

在前面板中创建数组。数组也是一种非常常见的复合数据类型,与簇的不同点在于数组中所有元素的数据类型都必须是同一种,同C的链表/顺序表。数组可以是多维的,可以在前面板的显示中添加滚动条。如下创建的是一个二维数组,

在这里插入图片描述

除了在前面创建数组,我们也可以在程序框图面板创建数组。我们需要使用初始化数组控件来创建数组,我们1指定用1填充所有元素,这里的2,3指定的是第一个维度大小是2,第二个维度大小是3,

在这里插入图片描述

前面板的显示如下图所示,

在这里插入图片描述

  1. 数组的加减操作

在这里插入图片描述

  1. 数组元素的添加

数组元素的添加,同append,使用build array实现。可以往数组的尾部添加元素,类似python的append。需要注意的是左侧两个矩形表示数组,而一个矩形表示元素。

在这里插入图片描述

  1. 数组的索引

数组的索引,在程序框图面板使用索引数组控件,有几个维度就给添加几个索引值。

  1. 数组的长度

使用数组大小控件,传入数组便可。

x.3.2.5 局部变量和全局变量

我们往往需要使用局部变量和全局变量,局部变量是指的在同一个vi文件中可以调用的变量。而全局变量是跨vi仍然可以调用的变量。

在程序框图面板,右键-结构-局部变量,鼠标悬浮于局部变量上右键-选择项-选择你需要映射的变量,注意簇中的变量是没办法直接映射的,

在这里插入图片描述

我们还可以右键,转换为读取,以此将局部变量变为读取控件,

x.3.2.6 代码注释与禁用

我们在程序框图面板直接双击便可以加入注释。我们还可以在代码框图面板右键,找到禁用面板来将整段代码给禁用,

在这里插入图片描述

x.3.3 逻辑结构

x.3.3.1 条件结构(即 if-else/switch 选择判断)

case structure根据输入数据类型的不同具有四种常见形式,有布尔型条件输入,数值型条件输入,枚举型条件输入,字符串型条件输入。

当我们选择连接处的数据类型不同,case中的条件类型也会不同,当我们创建条件结构,默认是布尔类型,连接输入也为布尔类型,他就只会有真假两种输出,

在这里插入图片描述

当我们的连接处为数值的时候,他的条件类型也会默认为数值,

在这里插入图片描述

当我们输入为字符串类型的时候,他的默认条件也会是字符串类型,

在这里插入图片描述

当我们输入为枚举的时候,他的默认条件也会是枚举类型。我们首先在前面板新建枚举变量,

在这里插入图片描述

接着我们右键-属性-编辑项,添加key和value,key即项,value即值。如此便创建了枚举变量。

在这里插入图片描述

在程序框图面板,我们将枚举变量和条件结构连接,在条件结构中不停添加项便完成了结构的创建。

当然,我们右键也可以设置默认分支,但是不推荐设置默认分支,会使得bug难以复现

在这里插入图片描述

x.3.3.2 顺序结构

顺序结构很好的解决了同步异步问题,下一帧会在上一帧运行完后再执行。在程序框图面板进行创建。

在这里插入图片描述

x.3.3.3 循环结构

循环结构常见有两种结构,for循环结构和while循环结构。for循环的运行效率比while循环效率高

在这里插入图片描述

请添加图片描述

在for循环结构中通过添加条件接线端来增加条件终止,

在这里插入图片描述

在循环结构中难的是隧道和数组相结合,以及移位寄存器和局部变量相结合,

  1. 输入隧道

输入隧道有两种模式。

在输入隧道中,如果隧道是一个小实心,则循环每次迭代都会读入同一个输入数据;如果输入的数据一个数组,且隧道是一个空心的小矩形,则在隧道的右键菜单中可以选择启用索引/禁用索引,这样的话每次迭代将依次从数组中取出一个元素。

注意,使用了索引隧道的 for 循环结构,可以不用提供循环次数,即不必输入 N 值,循环迭代次数由输入数组的长度决定,迭代次数即数组长度。但我们并不建议这样使用,指定N值会增加程序可阅读性

注意,如果与索引输入隧道相连的是一个多维数组,每通过一次索引输入隧道,数组会降低一维。对于二维数组,使用两层嵌套的循环结构,即可得到它的每一个元素。

  1. 输出隧道

输出隧道有三种模式。分别是实心方块,空心方块和带横条方块。

实心方块只会将最后一次循环迭代传递给隧道,推荐实心。

空心方块,把每一次循环迭代传递给隧道的数据作为数组元素,合并成一个数组传递出去。注意使用空心方块会升高维度。

带横条纹方块基本不用。

  1. 移位寄存器

移位寄存器往往是一对一对实现的,上一次循环的值会存储下来,在下一次循环中调用。通过在程序框图面板右键添加移位寄存器来增加移位寄存器。

一对移位寄存器由两部分组成,分别位于循环结构的左右两侧。一次迭代结束时,数据流入循环结构右侧的移位寄存器;在下一迭代开始时,该数据会从同一移位寄存器的左侧端流出。

请添加图片描述

x.3.3.4 事件结构

事件结构类似于JavaScript中的循环event监听,在LabVIEW中他也往往需要和循环结构搭配使用,类似setonclicklistener,也可以搭配队列使用。

在程序框图面板,我们右键,在结构中添加事件结构。我们右键事件结构边框-编辑事件来添加监听事件,我们往往使用值改变来添加事件,

在这里插入图片描述

如此,我们便添加了事件结构,

在这里插入图片描述

x.3.4 同步
x.3.4.1 队列操作

同步中的队列操作是一个常使用的操作,我们使用队列来控制程序的顺序执行,我们使用obtain queue来生成队列;使用enqueue来入队;使用dequeue来出队;下图的-1是无限的意思,即队列长度无限。

在这里插入图片描述

我们常用事件+队列+选择+循环来进行事件监听与运行,

连线端具有默认值。当你在进入需要切换的结构,例如case结构时候,你切换之后可能有的线会断掉,这个时候你需要在断点处右键-未连线时使用默认。

在这里插入图片描述

案例如下(可运行),

在这里插入图片描述

x.3.5 图形化显示数据

在这里插入图片描述

波形图表和波形图是最常见的画一维图的控件,XY图用于绘制二维图。

x.3.6 DEBUG

Debug时使用小灯泡便可以逐步执行,

在这里插入图片描述

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

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

相关文章

华为ipv6配置之ospf案例

R1 ipv6 ospfv3 1 router-id 1.1.1.1 //必须要手动配置ospf id,它不会自动生成 interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2000::2/96 ospfv3 1 area 0.0.0.0 interface LoopBack0 ipv6 enable ipv6 address 2001::1/96 ospfv3 1 area 0.0.0.0 R2…

java进阶学习笔记

学习java深度学习,提升编程思维,适合掌握基础知识的工作者学习 1.反射和代理1.1 概念介绍1.2应用场景1.3 反射-reflect1.3.1 获得类-Class1.3.2 获得类的字段-Field1.3.3 动态访问和修改对象实例的字段1.3.4 获得类方法-Method1.3.5 调用方法.invoke1.3.…

Playbook 角色的使用

本章主要介绍ansible 中角色的使用。 了解什么是角色 独立地写一个角色 使用角色 系统自带角色的使用 ansible Galaxy的使用 目录 1. 了解角色 2. 手把手创建角色 3. 使用角色 4.系统自带的角色 5. 修改端口上下文 6. 使用Ansible Galaxy 1. 了解角色 正常情况下,配…

关于增强监控以检测针对Outlook Online APT活动的动态情报

一、基本内容 2023年6月,联邦民事行政部门(FCEB)在其Microsoft 365(M365)云环境中发现了可疑活动。该机构迅速向Microsoft和网络安全和基础设施安全局(CISA)报告了此情况。经过深入调查&#x…

WPS中如何根据身份证号生成出生日期并排序

1. wps中如何根据身份证号导出出生日期并排序 1.1 wps中建一张表 1.2 使用转日期格式导出出生日期 DATE(VALUE(MID(C2,7,4)),VALUE(MID(C2,11,2)),VALUE(MID(C2,13,2)))MID(C2, 7, 4):这部分从单元格 C2 中提取文本字符串,从第7个字符开始提取长度为4的…

Seem环境安装

创建虚拟环境 conda create -n seem python3.8 conda activate seem 安装相关依赖:(不按照的话会报错) sudo apt-get install openmpi-bin libopenmpi-devconda install gcc_linux-64pip install mpi4py 导入环境 export PYTHONPATH$(pwd…

使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)

1. 整理项目结构,项目目录结构大致划分如下: 2. 安装sass 安装sass开发环境, 注意:使用的文件后缀名要用.scssnpm i sass -D3. 安装Ant Design npm i antd --save 4. 配置基础路由Router(具体可参考ReactRouter使用详解&#x…

[PyTorch][chapter 8][李宏毅深度学习][DNN 训练技巧]

前言: DNN 是神经网络的里面基础核心模型之一.这里面结合DNN 介绍一下如何解决 深度学习里面过拟合,欠拟合问题 目录: DNN 训练常见问题 过拟合处理 欠拟合处理 keras 项目 一 DNN 训练常见问题 我们在深度学习网络训练的时候经常会遇到下面…

Visual Studio2022配置ReSharper C++ 常用设置

如需安装免费的可以在下面留言,看到即回复 文章目录 Visual Studio2022配置ReSharper C 常用设置配置Visual Studio2022,使其能够按回车进行补全配置ReSharper C 设置自动弹出配置ReSharper C 的快捷键ReSharper C 去掉注释拼写使用中文注释 如何关闭新版…

ansible 备忘清单(一)

笔者: 把以前的手写笔记电子化吧,顺便当作复习。 基础命令 命令 参数 备注 ansible --version 查看版本号 ansible-doc --help 查看帮助信息 -l |--list 查看所有模块 -s 查看模块摘要 Ansible servers -I |-…

test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比

拓展阅读 test-01-java 单元测试框架 junit 入门介绍 test-02-java 单元测试框架 junit5 入门介绍 test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比 test assert-01-Google Truth 断言 test 系统学习-03-TestNG Spock testng 入门使用教程 开源…

【Vue篇】基础篇—Vue指令,Vue生命周期

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔Vue概述🎄快速入门🌺Vue指令⭐v-…

Android studio 连接夜神模拟器

前言: 在夜神模拟器安装目录,直接打开powerShell,然后输入:nox_adb.exe connect 127.0.0.1:62001,命令无法执行出现以下错误: 按照上面的提示,键入:.\nox_adb.exe 依然无法执行 如…

layui表格中预览视频和图片

全代码 <!DOCTYPE html> <html><head><title>Layui&#xff1a;数据表格table中预览图片、视频</title><meta charset"utf-8"/><link rel"stylesheet" href"../dist/css/layui.css"><style>&l…

模式识别与机器学习-判别式分类器

模式识别与机器学习-判别式分类器 生成式模型和判别式模型的区别线性判别函数多分类情况多分类情况1多分类情况2多分类情况3 例题 广义线性判别函数实例 分段线性判别函数Fisher线性判别感知机算法例&#xff1a;感知机多类别分类 谨以此博客作为学习期间的记录 生成式模型和判…

D9741 PWM控制器电路,定时闩锁、短路保护电路,输出基准电压(2.5V) 采用SOP16封装

D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。 主要特点&#xff1a;● 高精度基准电路 ● 定时闩锁、短路保护电路 ● 低电压输入时误操作保护电路 ● 输出基准电…

智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.骑手优化算法4.实验参数设定5.算法结果6.…

【WPF】使用Behavior以及ValidationRule实现表单校验

文章目录 使用ValidationRule实现检测用户输入EmptyValidationRule 非空校验TextBox设置非空校验TextBox设置非空校验并显示校验提示 结语 使用ValidationRule实现检测用户输入 EmptyValidationRule是TextBox内容是否为空校验&#xff0c;TextBox的Binding属性设置ValidationRu…

使用 Elasticsearch 检测抄袭 (二)

我在在之前的文章 “使用 Elasticsearch 检测抄袭 &#xff08;一&#xff09;” 介绍了如何检文章抄袭。这个在许多的实际使用中非常有意义。我在 CSDN 上的文章也经常被人引用或者抄袭。有的人甚至也不用指明出处。这对文章的作者来说是很不公平的。文章介绍的内容针对很多的…

解决Pycharm pip安装模块太慢问题,pycharm2022没有manage repositories配置镜像源

解决方案 方法清华阿里云中国科技大学华中理工大学 或者直接-i 加镜像 方法 URL写下面任意一个 清华 https://pypi.tuna.tsinghua.edu.cn/simple阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学 http:/…