先看一段C代码,该函数的意图是记载它本身被调用的次数,最好的办法当然是在该函数内部记载,这就要求在两次调用之间坚持前次的记载,用static 变量最为合理,一是该变量的效果区域仅在函数内,外部无法直接修正,二是能够主动在初次调用时对变量进行初始化.
int Record(void)
{
static int counter=0; //初次调用初始化
counter++;
return(counter);
}
相似的功用在labview里是怎么完成的那,咱们当然能够用一个全局变量,在SUBVI中对全局变量履行+1的操作,可是这样做副效果是十分显着的.
一是由于没有封装数据,该全局变量能够在程序任何方位被修正.二是当几个当地一起操作该全局变量,由于没有维护机制,当时成果无法意料.
最好的办法是运用Function Global,也称做LV2型全局变量,可能是LABVIEW2曾经没有内置的全局变量,这是仅有的办法.
Function Global中心是Shift Register (未初始化的),大多数书本都着重Shift Register 初始化的重要性,实际上未初始化的Shift Register 更为重要.
Shift Register的一般用法就不解说了,比如在FOR循环中求平均值的问题.咱们要考虑的是Shift Register实质到底是什麽?实际上应该是拓荒的一段同享内存空间,这段内存空间是可读写的,已然这样实质上和全局变量就没有差异,一个最基本的Function Global如下图所示:
更正:上图中操控循环的布尔常量应为TRUE,意图使循环只运转一次,意图是运用SHIFT REGISTER
下面演示一下它的运用办法:
这就完成了全局变量的数据交换功用.运用组件编程是LABVIEW的重要编程办法,Funtion Global是它的中心部分.
这段程序存在一个问题,当程序发动,未进行写操作时,那Shift Register的值是什麽那?做为组件编程,应该在它的内部完成自我初始化. 这儿引进一个重要的VI,FIRST CALL来处理这个问题.