Shift Register 与 Function Global
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来解决这个问题.
ShiftRegisterFunctionGloba 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)