每天1小时,龙哥教你学LabVIEW视觉,参与送福利:

1、低至两折!全套课程众筹价:588元(原价2980元)

2、《LabVIEW视觉算子手册》配套电子书

3、价值58元《LabVIEW机器视觉实用教程基础篇》

知识

学习过LabVIEW的朋友都知道:LabVIEW是一个图形化软件开发环境,它所使用的编程语言是G语言,也称为图形化编程语言。由于LabVIEW是G语言中开发的比较早、且开发的最成功的,所以人们还是习惯上用LabVIEW来指代G语言。当然,还有其它的G语言,比如像Agilent 的VEE等。

传统文本编程语言根据指令的先后顺序决定应用程序执行顺序,也称为:“控制流”;而LabVIEW则按照“数据流”的模式运行VI。所谓数据流也就是说:当所有的输入端都具备了必要的输入数据时,程序框图节点将运行。节点在运行时产生输出数据并将该数据传送给数据流路径中的下一个节点。数据流经节点的动作决定了程序框图上VI和函数的执行顺序。

使用LabVIEW进行编程则必须按数据流的方式进行程序设计。所以,养成良好的数据流编程习惯是非常必要的。那么根据数据流的特点,编程时要注意哪些问题呢?

01

根据自然的数据的依赖关系,从左向右进行程序设计

图1数据依赖关系

图1 可以清晰的表明数据流是依据数据依赖关系从左向右流动的。“差”只有在“和”完成后才能得到;以此类推,“积”必须在“差”完成后获得;而“商”也必须在得到“积”后获得。所以,这里是利用数据依赖关系实现数据流的。图1中的下图比较好的呈现出数据流的关系,所以我们称之为“好的习惯”,建议大家习惯用这种方式来进行程序设计。

图2 是一个数据采集任务设计的实例(良好的数据流概念)

图2 数据采集任务设计

我们上面谈到利用数据依赖关系很容易满足数据流的要求(自然的数据依赖关系)那么,当数据依赖关系不存在或不明显时,怎么办?

02

利用强制数据依赖关系之一:顺序结构

如果我们想要知道一个vi的运行时间可以通过下面的实例程序进行测试,程序如图3所示。这 里我们利用强制数据依赖关系“顺序结构”来满足数据流的要求。这里待测vi我们用一个“等 待”函数来代替。

图3强制人工数据依赖关系“顺序结构”

顺序结构确保:第一帧:开始计时,第二帧:运行“等待”函数或待测vi,第三帧:停止计时并显示结果。

这里要注意两点:

第一:Windows操作系统的定时精度为:1mS。所以,测量结果会出现100±1mS。

第二:如果vi的运行时间很短小于1mS,可在第二帧内的vi外面加个N次的for循环增加运行时间。然后,在结果中再除个N。

现在,我们用“等待下一个整数倍毫秒”(定时选板)函数来替代“等待”函数,运行后会发生什么情况?这应该对理解这两个函数的不同会有所帮助。

03

利用人工数据依赖关系之二:引用句柄

对于引用句柄LabVIEW的帮助文档是这样介绍的:引用句柄可作为对象(例如,文件、设备或网络连接)的唯一标识。可使用不同类型的引用句柄控件将引用句柄输入或输出VI。

由于引用句柄是一个打开对象的临时指针,因此它仅在对象打开期间有效。如关闭对象,LabVIEW会将引用句柄与对象分开,引用句柄随即失效。如再次打开对象,LabVIEW将创建一个与第一个引用句柄不同的新引用句柄。LabVIEW将为引用句柄指向的对象分配内存空间。关闭引用句柄,该对象就会从内存中释放。

由于LabVIEW可以记住每个引用句柄所指的信息,如读取或写入的对象的当前地址和用户访问情况,因此可以对单一对象执行并行但相互独立的操作。如一个VI多次打开同一个对象,那么每次的打开操作都将返回一个不同的引用句柄。VI结束运行时LabVIEW会自动关闭引用句柄,如果用户在结束使用引用句柄时就立即将其关闭,可最有效地利用内存空间和其它资源,这是一个良好的编程习惯。关闭引用句柄的顺序与打开时相反。例如,如果获得了对象A的一个引用句柄,然后对对象A调用方法使获得对象B的引用句柄,请先关闭对象B的引用句柄然后再关闭对象A的引用句柄。

图4引用句柄的几个示例

关于引用句柄我们要注意的是:“引用句柄”是有“生命周期“的。从我们打开引用句柄开始,它就进入新的“生命周期”,直道关闭“引用句柄”后它的“生命周期”结束。如果一个引用句柄的生命周期无限长,那么就意味着发生了“内存泄露”。所以使用时必须注意“打开”与“关闭”必须是成双成对出现的。

对于本地变量和全局变量来讲,因无法保证数据按数据流的方式工作,所以要尽量避免大量使用。由于顺序结构是强制数据流也尽量甚用。

上面我们分别介绍了实现或确保数据流编程的几个方法,供大家参考,希望对大家能有一定的帮助。

扫码进入LabVIEW专属技术交流群

获取更多学习资料

相关课程推荐:

《龙哥手把手教你学LabVIEW视觉设计》

https://mp.weixin.qq.com/s/IVvrzHu9rwoEfBA7IKXbAg

https://mp.weixin.qq.com/s/WANlR2ph-6hNJ-TICXOptw

大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流相关推荐

  1. wps应用程序实例_有一个WPS Office应用程序实例wps.exe在运行,请关闭后重试 。如何解决?...

    点击查看有一个WPS Office应用程序实例wps.exe在运行,请关闭后重试 .如何解决?具体信息 答:请按照下面步骤试试:右击任务栏-启动任务管理器-进程-结束进程树 1.右击系统下方的任务栏, ...

  2. attiny13a程序实例_世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建...

    本帖最后由 幻生幻灭 于 2017-2-15 10:41 编辑 系列教程传送门 世界最小的Arduino--ATTiny13上手全攻略1A简介 世界最小的Arduino--ATTiny13上手全攻略1 ...

  3. matlab简单程序实例_【简单实例】如何使用C++加速python程序

    C++党最鄙视Python的两个原因: 1,计算速度太慢: 2,动态语言特性. 对于第2个原因,这需要python程序员好好规范自己的编写习惯,加深对语言和系统的理解.其实作为动态语言的python依 ...

  4. 单片机中断程序实例_单片机定时器中断实现长时间定时程序

    单片机定时器中断实现长时间定时程序 #include // 包含51单片机寄存器定义的头文件 sbit D1=P2^0; //将D1位定义为P2.0引脚 unsigned char Countor; ...

  5. attiny13a程序实例_关于ATtiny13A的一段程序

    关于ATtiny13A的一段程序 [复制链接] 可调光手电筒电路及程序如下: ourdev_427556[1].jpg (36.4 KB, 下载次数: 0) 2011-12-16 11:01 上传 # ...

  6. attiny13a程序实例_关于ATtiny13A的程序

    关于ATtiny13A的程序 [复制链接] 可调光手电筒电路及程序如下: ATTINY13_cn.pdf (1.56 MB, 下载次数: 635) 2011-12-16 11:05 上传 点击文件名下 ...

  7. attiny13a程序实例_如何使用Arduino IDE编程ATTINY13/ATTINY13A单片机

    尽管ATtiny系列被认为是非常便宜和有用的,但是仍然缺少有关它的项目和教程.在本篇文章中,您将学习如何使用通过Arduino IDE编程的ATtiny13微控制器开始构建应用程序. attiny-8 ...

  8. attiny13a程序实例_基于ATtiny13的手电筒(头灯)控制电路和程序

    基于 ATtiny13 的手电筒(头灯)控制电路和程序 本人有一个用一节 18650 电池.带变焦的头灯,该头灯有强光.弱光和闪烁三个档, 用 Q5 LED ,一个按钮来控制开 / 关和换档,顺序是: ...

  9. python画散点图程序实例_【112】用python画散点图和直线图的小例子

    import numpy as np import matplotlib.pyplot as plt import random # 数据量. SIZE = 13 # 纵轴数据.np.linspace ...

最新文章

  1. [转][小结][三种方法]实现WPF不规则窗体
  2. 【leetcode】Balanced Binary Tree(middle)
  3. [转] spdk 块设备
  4. xmppframework for iOS client (一) XMPPFramework环境配置
  5. salesforce学习框架图
  6. cPanel下安装GodaddySSL教程
  7. ref 参数与 out 参数
  8. 【转】登录后自动显示未读快件
  9. 程序员的数学笔记2--余数
  10. 再获绿色等级5A称号!揭开腾讯数据中心节能环保黑科技
  11. wpf esc key 检测不到_自己动手丰衣足食!想让你的车能检测和识别物体?试试这个实验...
  12. Thymeleaf模板如何获取springMVC返回的model值
  13. Spark入门实战系列--4.Spark运行架构
  14. 手机停机时,考虑允许低速上网以充值
  15. 哪些业务场景不适合部署在虚拟机上?
  16. echarts-map的使用
  17. 光纤交换机巡检配置常用命令
  18. CUDA 下载不了(只有 42B)的应急解决办法(暂时可用)
  19. Difference between Triplets POJ - 3244
  20. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本

热门文章

  1. 数学建模公选课第二节常微分方程2020.4.10-.12补(钉钉)
  2. Spring Boot快速搭建入门程序
  3. Python-面向对象的编程语言
  4. 【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
  5. android 同步执行方法吗,Android异步方法以同步方式实现
  6. python小波变换尺度函数_Python图像处理(17):pyWavelet
  7. python docx 设置表格字体和格式_python-docx修改已存在的Word文档的表格的字体格式方法...
  8. java oci_java oracle oci方式连接
  9. stream流【java8 二】
  10. CTF Geek Challenge——第十一届极客大挑战Web Write Up