原帖由玉非璞于2007-07-31 18:27发表:
最近研究LV的时候发现移位寄存器和隧道的功能非常相似但是又有区别,大家都说说自己的看法。我先开个头,我发现读取二维数组的时候(假设3行4列),用FOR循环先以移位寄存器的方式读,循环执行了12次。再用隧道读的时候发现,循环只执行了三次。难道这就是它们的差别吗?
外部数据进入循环体是通过隧道进入的,有几种方式:

图1:For 循环结构上的隧道
图 1 所示的 For 循环结构演示了三种隧道结构,就是在 For
循环结构左右边框上用于数据输入输出的节点。这三种隧道从上至下分别是:索引隧道、移位寄存器(shift register)、一般隧道。
一般隧道,就是把数据传入传出循环结构。数据的类型和值在传入传出循环结构前后不发生变化。
索引隧道是 LabVIEW
的一种独特功能。一个循环外的数组通过索引隧道连接到循环结构上,隧道在循环内一侧会自动取出数组的元素,依顺序每次循环取出一个元素。用索引隧道传出数据,可以自动把循环内的数据组织成数组。
通过移位寄存器传入传出数据,也是数据的类型和值都不会发生变化。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。因此,上一次迭代执行产生的某一值,传给移位寄存器右侧的接线端,如果下一次迭代运行需要用到这个数据,从移位寄存器左侧的接线端引出就可以了。
注:这段话的作者是NI的一位工程师,这是我在他的博客上节选的。