最近研究Lab view的时候发现移位寄存器和隧道的功能非常相似但是又有区别 外部数据进入循环体是通过隧道进入的?有几种方式?
图1?For 循环结构上的隧道 图 1 所示的 For 循环结构演示了三种隧道结构?就是在 For 循环结构左右边框上用于数据输入输出的节点。这三种隧道从上至下分别是?索引隧道、移位寄存器?shift register?、一般隧道。
一般隧道就是把数据传入传出循环结构。数据的类型和值在传入传出循环结构前后不发生变化。 索引隧道是 Lab VIEW 的一种独特功能。一个循环外的数组通过索引隧道连接到循环结构上?隧道在循环内一侧会自动取出数组的元素?依顺序每次循环取出一个元素。用索引隧道传出数据?可以自动把循环内的数据组织成数组。 通过移位寄存器传入传出数据?也是数据的类型和值都不会发生变化。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。因此?上一次迭代执行产生的某一值?传给移位寄存。当隧道里面有个小括弧时,自动索引就被打开了,For循环中默认连线隧道就是启动自动索引的。当你把一个数组输入终端连线到For循环中并且开启自动索引功能,LabVIEW会自动设定For循环的次数和数组长度一致而无需手工设定。默认状态下LabVIEW在For循环中开启自动索引功能,程序便可以在循环中每次处理一个数组中对应的元素。如果循环中不需要每次处理一个元素可以关闭自动索引功能。同样的,如果在数组输出隧道中开启自动索引功能,输出数组每次会接受到一个循环中输出的数组元素。因此自动索引的输出数组的长度和循环次数总是一致的。要开启或者关闭自动索引,右击隧道进行选择。
当数据连线到While循环中,自动索引功能默认被关闭,隧道标志是实心的。如果在While循环中开启自动索引,和For循环一样While循环每次索引数组中的一个元素,不同的是While循环的总次数却和数组的长度不一致,因为While循环需要一个循环停止条件来控制循环。同样的当你把一个输出数组进行自动索引时,输出数组每次接收到循环迭代中的一个对应数组元素。