LabVIEW编程语法学习笔记之全局变量

简介: LabVIEW编程语法学习笔记之全局变量

最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。


下面是我最近写程序的一些知识,进行了部分的整理,发出来和大家一起分享,也方便我以后查找自己的编程过程。


编程知识点–编程语法–做题思路


全局变量与局部变量不同,其作用范围不仅限于当前VI,而是在整个项目中都有效。一个或多个全局变量可按一种特殊形式存放在单独的VI中,该种VI没有框图,只有前面板,仍以.vi为后缀存储,其地位相当于一个特殊的VI,因此可用于在不同VI之间传递数据。


创建一个全局变量的步骤如下: 在函数选板中选择“编程→结构→全局变量”,创建一个空的全局变量,此时中间为问号。


双击该全局变量,打开对应的前面板,放入需要的任意类型变量,也可以从别的VI前面板上复制需要的类型变量。 保存该全局变量为一个VI文件。


如果需要为一个已有的全局变量VI文件中添加新的其他全局变量,只需直接双击打开该文件前面板并放入或者复制需要的类型变量,并保存即可。


如果要在框图中添加已有的全局变量,直接从函数选板中选择“选择VI…”添加存储了该全局变量的VI文件即可。如果要将一个全局变量改为在同一文件中存储的其他全局变量,可单击全局变量的中心,从弹出的菜单中进行选择。


与局部变量类似,一个全局变量也只能严格地属于“读取”或“写入”状态中的一种,同样可以通过鼠标右键菜单选择相应项来切换。


在实际项目中,如果全局变量的个数不多,可以放在同一个VI文件中以便管理,如果全局变量数量种类繁多,建议可以按照功能相似性分为几大类,分别存储在几个VI文件中,这些VI文件建议以“global_”或“g_”作为前缀命名,以便与普通VI文件区分使用。


全局变量常用于在两个或多个VI之间传递信息和数据。与局部变量类似,同样也不可滥用全局变量,否则会影响数据流编程方式或者降低程序性能。条件许可的情况下,应该尽可能使用输入输出参数在各个子VI之间传递数据,即使使用全局变量,也应当考虑尽量使用对内存占用量小的变量。


注:利用局部变量,会使VI的编写更加灵活。但是,在实际VI的编写过程中,应该慎用局部变量。这是因为:①每一个局部变量都是一份数据复制,使用过多,就会占用更多内存;②过多使用局部变量和全局变量,会使VI的可读性变差,有可能致使编程错误不易被发现;③在多线程并行运行的VI中,局部变量可能引起竞态条件。


1119b38982fc4443b47df8b7f0fa0fd9.png


在实际中,经常要实现这样的功能,即VI中有两个While循环,需要用同一个控制开关让它们同时停下来。这个功能该如何实现呢?同样,也可以利用局部变量来完成。为此编写的VI如下图所示,其中,有两个While循环,在第一个While循环中,将循环计数端子中的值赋给显示控件“循环1里的值”;在第二个While循环中,将循环计数端子中的值乘以2,并赋给显示控件“循环2里的值”;每个While循环内都调用了一个定时函数,且均延时1s的时间。


8715eef565604187aedb042c3a0ffb2a.png

目录
相关文章
|
存储
LabVIEW谨慎使用局部变量和全局变量
LabVIEW谨慎使用局部变量和全局变量
242 1
LabVIEW异步调用VI的多个实例实现并行执行
LabVIEW异步调用VI的多个实例实现并行执行
505 1
LabVIEW 在运行时初始化数组并允许用户编辑值
LabVIEW 在运行时初始化数组并允许用户编辑值
453 0
|
网络协议 安全 网络安全
LabVIEW程序的常见加密方式
LabVIEW程序的常见加密方式
702 1
|
数据采集 安全 测试技术
LabVIEW调用DLL时需注意的问题
LabVIEW调用DLL时需注意的问题
684 0
LabVIEW使用一个停止按钮来停止所有循环
LabVIEW使用一个停止按钮来停止所有循环
413 0
LabVIEW将 VI 升级到较新的版本和恢复为先前版本
LabVIEW将 VI 升级到较新的版本和恢复为先前版本
494 1
|
存储 数据采集 Windows
LabVIEW重入:允许同时调用同一子VI
LabVIEW重入:允许同时调用同一子VI
500 1
|
存储 算法 Serverless
LabVIEWCompactRIO 开发指南31 在LabVIEW FPGA中使用DMA FIFO
LabVIEWCompactRIO 开发指南31 在LabVIEW FPGA中使用DMA FIFO
238 0
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
531 0