Labview实现vi间数据传递的方法汇总 ---子VI、队列、全局变量及UDP/TCP协议传输

本文汇总一下不同VI之间数据传递的方式,使大家明确数据传递的几种类型并灵活使用。
本文程序均上传至云端,读者可自行下载学习。

基于目前大家所学到的基础知识,在Labview中简单来说数据类型基本包括数值、字符串、数组、簇、布尔量、引用、路径、枚举量、波形图表等,实际上最常用的数据类型可以简单说就只有四种,数值、字符串、数组、布尔。那么这些数据如果是跨VI的时候是如何传输的呢?传输方式有什么不同呢?数据流方向如何?本文针对这一问题做出归纳整理。

本文目录

  • 一、跨VI数据传输的方式
    • 1.1 直接调用子VI传输
    • 1.2 队列数据传输
    • 1.3 全局变量
  • 二、使用通讯协议实现数据传输
    • 2.1 UDP数据传输
    • 2.2 TCP/IP协议数据传输方式

一、跨VI数据传输的方式

当我们使用数据采集卡或者其他硬件采集外部数据时,常出现一个问题,就是我们编写的采集模块程序不能实时的将数据传输到主VI中,如果出现多个采集模块程序同时调用或者对采集速度要求极高的情况下,跨VI传输数据的速度效率等就会受到影响。因为传输时可能并不能将当前数据完整从子VI传到主VI中。

1.1 直接调用子VI传输

这种方式传递数据是最便捷用的最广泛的,那么如何建立并调用子VI呢?请看下面步骤:
创建VI,首先新建一个子VI程序并保存在电脑的某个路径里。
创建子VI接口。在前面板的右上角处由两个方形选项,左侧是接线端,可以定义子VI被调用时的接口,右侧是子VI的图像,被调用时的图标。左侧接线端和控件绑定时的操作步骤为:先鼠标单击某个方块,在单击前面板的控件,当这个方块的颜色不再是白色时,就说明绑定好了。
在这里插入图片描述
如上图所示,绑定好的控件在方格图中,如错误簇为淡黄色,字符串为粉色。
设置好子VI后,在需要调用该VI的程序中后面板,右键 — 选择VI — 在保存路径中选中子VI — 右键创建所有输入输出控件。如下图所示
在这里插入图片描述
此时,可以在本函数中将数据从这几个控件接口中将数据传入到子VI中,再将经子VI处理过后的数据传递回来。当然这种方式的数据传递是存串行传递的,所以需按照数据流从左到右的方式来整理程序。

1.2 队列数据传输

本章讲解队列之前呢,如果大家想更加详细的了解队列操作的理论,深入理解队列是如何使用的,大家可以去看我之前一篇关于队列介绍的文章,链接我放到下面了,大家可以直接点击跳转:
Labview数据采集–基于AMC和队列的生产者和消费者编程模式: https://blog.csdn.net/m0_52176775/article/details/133681332
队列的数据传输方式呢,题主一共提出两种,一种是软件自带的队列函数,一种就是VIPM中带的AMC队列包,当然题主比较推荐后者,AMC比较稳定高效,且对错误的处理比较灵活。
下面一个图就完好的介绍了队列是如何传输数据的。
在这里插入图片描述
第一个VI将想传入第二个VI的数据通过队列暂存在电脑内存中,第二个队列向电脑拿取这部分数据。
那么是如何拿取的呢,我们可以拿取这部分数据的标志是什么呢?
① 队列名称。 入队列的名称和出队列的名称只要一致,就可以告诉出队列函数,我要拿取该名称对应的队列数据。
②同时运行。 保持入队列函数和出队列函数同时运行,这样才能保证数据进入队列时,出队列的VI有数据可以拿,完全做到边生产边消费
③传输速率。 保证采集的速率比传输的速度高,才能将实时产生的数据采集出来,因为队列的性质,传入队列的数据不会消失,拿取数据时按照传入的顺序拿取。 这就造成了,如果传入的数据太快太多,传出队列来不及拿取,拿取道德数据可能是很多秒之前传入的数据,这就使队列失去了其传输的时效性。
看下方VI举例:
在这里插入图片描述
这两个VI满足以上三条件的情况下,题主在第一个VI中加入了50ms的延时,以保证采集速度大于传输速度。左侧的VI是将元素中的数值传入队列中,每50ms传一次,右侧是拿取这个数值,实时拿取。并且两个队列满足名称一致的条件,均为 “hello” ,此时我们将左侧数值中输入一个随机数值6,观察右侧的变化,此时右侧数值随着左侧发生变化,数值实现了从一个VI到另一个VI的传递。
不仅仅是数值,还可以通过队列传递字符串、数组等的数据。
本文中的程序在文章结尾上传云端,同学可自行下载学习。

1.3 全局变量

题主之前在讲解局部变量和全局变量的文章中介绍过一次通过全局变量传输数据的用法,文章链接放在这里,大家如果有想理解的可以直接点击链接查看。
Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲:
https://blog.csdn.net/m0_52176775/article/details/135567798
全局变量建立步骤:后面板右键------结构------全局变量-------双击进入-------在全局中放入控件------回到原VI点击全局变量-----选择我刚刚建立的控件,此时就可以将数据传输到全局变量了,此时将全局变量以vi的形式保存在电脑中,可以在其他vi中调用该变量。使用该变量传递数据需要注意以下几点:
① 调用该全局变量的VI必须同时都在运行。
② 全局变量中可以同时放入多个数量、多种类型的控件。
③ 可以在多个VI中拿取全局变量的值,但对于同一个控件,只能有一个输入。
数据流的方向如下图所示:
在这里插入图片描述
除传递数值之外,全局变量也可以用同样的方式传递字符串、数组等所有数据。并且该方式的优点在于:传输速度高、可以多线并行、满足多个控件同时传输的特点。

二、使用通讯协议实现数据传输

Labview佩戴了多种传输接口,如它自带的UDP协议接口,TCP/IP协议接口等,本章以范例为基础,讲解通过协议方式传输数据的方法,首先以UDP协议为例讲解一下协议传输的大致原理,如下图所示:
在这里插入图片描述

2.1 UDP数据传输

那么UDP的程序如何去写呢,labview配备了强大的范例功能,大家可以在Labview中点击:帮助 — 查找范例 — 输入关键词:UDP — 搜索 — 打开:Simple UDP 项目
在这里插入图片描述
发送方从端口处将数据发送到本地端口,UDP向电脑申请了用于发送数据的端口,最终两程序同时运行时,数据由发送方发送,由接收方获取,完成数据传输。

2.2 TCP/IP协议数据传输方式

TCP/IP数据传输的方式时类似于UDP的,该传输方式相对于UDP传输方式来讲目标明确、传输数据稳定,更适合于不丢包数据的传输条件下。同样的,我们打开范例搜索:帮助 — 查找范例 — 输入关键词:TCP — 搜索 — 打开:Simple TCP 项目
在这里插入图片描述
在该程序中,服务器同样开启一个电脑端口向电脑内部发送数据,客户端通过寻找端口的方式向该端口接收来自于上一个服务器VI的数据,完成数据的传输,后期大家可以根据需要自行选择这两个项目程序做项目传输的二次开发工作。这里提一嘴UDP/TCP这两个协议传输数据的区别:
UDP: 适用于 传输速度快,要求时效性 的程序,丢包率比TCP要多。比如,开视频电话或者打游戏首先需要的是时效性而非流畅性,因此采用UDP的传输方式。
TCP: 适用于 数据稳定传输,要求稳定性 的程序,丢包率低,传输稳定。比如,实验室数据监测,要求的是数据的稳定性和不丢包,因此采用TCP的方式传输。

本文仅讲解了UDP/TCP通讯协议的传输方式,TCP等其他方式除本程序自带之外,还可以在VIPM(lanbiew安装时自带的软件),中自行搜索相关协议,在范例基础上并完成项目的开发工作。

提供一个开发经验: 大家可以在软件开发时,建议多借鉴相关程序或范例安装包等完成程序的二次开发,由于目前程序相对成熟,各类安装包及二次开发文件盛行,避免了大家直接从头开始浪费时间。直接调用子程序的方式可以节省更多的开发时间。

本文提供文章中的范例程序,下载地址:
链接: https://pan.baidu.com/s/1bGuJs-yLcwpPZqW70tIUFQ
提取码:6666

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

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

相关文章

【数据结构和算法】删除链表的中间节点

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的 2095 题,难度为中等,解题方案有很多种…

基于 InternLM 和 LangChain 搭建你的知识库

1 环境配置 见:轻松玩转书生浦语大模型internlm-demo 配置验证过程-CSDN博客文章浏览阅读366次,点赞7次,收藏9次。InternLM-chat-7B InternLM 模型https://blog.csdn.net/cq99312254/article/details/135625924?spm1001.2014.3001.5501 1.…

借势营销怎么做才能有效宣传?媒介盒子揭秘

借势营销之所以受到品牌欢迎,原因就在于通过借势营销能够达到“润物细无声和四两拨千斤的效果,用小投入获得大回报,但有许多企业稍有不慎就会翻车,今天媒介盒子就从多个角度和大家聊聊:借势营销怎么做才能有效宣传。 一…

AWS CI/CD之二:配置CodeDeploy

问题 前面一篇文章介绍了CodeBuild中构建一个Java的Maven项目。在这个基础上面,我们继续AWS CI/CD工作流构建之路。 1.配置CodePipeline简配版 这里主要是利用CodePipeline配置之前的CodeBuild项目,以便生产出需要部署的jar文件和CodeDeploy需要用到相…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测,可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状,并获取其位置坐标等信息,从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 : 1.为了分辨流水线上…

UI设计中的插画运用优势(上)

1. 插画是设计的原创性和艺术性的基础 无论是印刷品、品牌设计还是UI界面,更加风格化的插画能够将不同的风格和创意加入其中,在激烈的竞争中更容易因此脱颖而出。留下用户才有转化。 2. 插画是视觉触发器,瞬间传达大量信息 我们常说「一图胜千…

时光之美,摩登π:复古韵味,智能生活,感受独特时代氛围

在这个充满时光之美的时代,格力大胆地借助复古外观产品,为年轻人创造出一种摩登π的空调体验。时光流转,摩登主义的复古风潮如期而至。摩登π挂机以仿时光表盘和金属感齿轮等特色呈现时光之美,将岁月的磨砺融入产品设计中&#xf…

基于ssm+vue的宠物医院系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

浪潮信息与英特尔联合发布全球首个全液冷冷板服务器参考设计

1月18日,浪潮信息与英特尔联合发布全球首个全液冷冷板服务器参考设计,并面向业界开放,为全球液冷产业链上下游提供极具价值的参考样板,推动先进全液冷冷板解决方案在全球数据中心的大规模部署应用,实现数据中心更加绿色…

深入浅出关于go web的请求路由

文章目录 前言一、是否一定要用框架来使用路由?二、httprouter2.1 httprouter介绍2.2 httprouter原理2.3 路由冲突情况 三、gin中的路由四、hertz中的路由总结 前言 最近重新接触Go语言以及对应框架,想借此机会深入下对应部分。 并分享一下最近学的过程…

北斗卫星赋能南海渔业,助力渔船科学防灾避险

北斗卫星赋能南海渔业,助力渔船科学防灾避险 面向建设海洋强国战略、确保渔民生产生活安全等需求,海南气象部门运用北斗卫星技术创新打造海洋气象服务。 北斗船载系统创新应用是远海安全作业的坚实保障。聚焦远洋渔船获取天气信息难的问题,…

2024 前端高频面试题之 JS 篇

JS 篇(持续更新中) 1、什么是原型、原型链?2、什么是继承?说一说有哪些?继承组合的原理及优点?3、new 操作符具体干了什么?4、js 有哪些方法改变 this 指向?5、bind 有哪些实现的注意…