前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了。这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告诉我,移位寄存器是个好东西,用得好,代码量可以更加有效简洁。老曹目前的程序基本就没脱开过移位寄存器的使用。下面就简单的讲解一下移位寄存器的使用,各位不妨试一下用其他方式实现下面累加的功能,和移位寄存器对比一下就知道它好用在哪里了,不过要了解到好用的精髓,还是得在复杂一点的功能上,这个在后面的状态机中可以稍微体现出来。
1、新建一个for循环,点击循环边框,右键添加移位寄存器。
2、添加以下代码,实现从1加到10的功能,注意左上角填的是10,左下角的循环里面的i索引是从0开始的。写完后运行以下看效果。大家可以使用高亮显示,看一下移位寄存器是怎么操作的,移位寄存器其实就是将上一个值/变量/参数等移动到开头的地方再执行,因为存储了上一次的数据,并且移到了开头继续将变量带入执行,因此叫移位寄存器(自己编的)。就这个一个小功能,却解决了不少大麻烦,大家以后会发现它的好用之处。有兴趣的,可以不使用移位寄存器,通过其他方式实现以下逐渐累加功能,看寄存器是不是高效简洁了许多。
3、移位寄存器我还经常用来初始化一个数组,在C语言里面,数组要一开始就声明,不能根据实际情况进行改变数组大小,在面向对象的语言中(C#等)是有提供动态数组的类型的,那labview有没有呢?labview本身没提供这种类型,但是却可以通过移位寄存器实现。在编程->数组->数组常量 拖拉处一个未激活的数组常量,再编程->数值->数值常量,拖拉一个数值常量到数组常量中,它们会合并激活成一个可用的空数组,数组类型由我们拖拉进去的变量决定,可以放字符串,簇等,簇在编程->簇,类与变体 中可以找到,簇其实相当于C语言里面的结构体,类还是那个面向对象的类,变体相当于面向对象语言中的泛型,可以用一个变量表示所有变量,最后通过变量转换,转成目标变量。扯远了,这里就是讲一下语言之间的共通性,学好一个,确实可以举一反三,融会贯通(又扯远了)。
4、再拖拉一个 编程->数组->创建数组 ,用这个方法新建数组。
5、鼠标移到到它下方或者上方,进行拖拉。这里拖拉多一个就可以了。拉多少个,就能创建多大的数组,但是我们让它根据我们的需要自动创建,不需要手动一个一个地添加。
6、按如下接线连接,i索引就是循环中的执行次数,从0开始的。右键创建一个输出控件,运行后可以在前面板看到一个新建好的从1到9的数组。
当然还有其他方式,将创建数组函数去掉,用数组插入函数代替,可实现同样的效果。
默认数组是往后面逐渐添加的。
将for循环代替为while循环,效果一致。但是要让程序退出,需要执行完后给while循环中右下角的结束标记一个true,这样运行完后就退出程序了。
慢慢的,你会喜欢上移位寄存器的,特别是后面的状态机讲解,砸门不急,再讲一期进阶篇--队列的使用,就讲状态机了,到时候给大伙一个好用的状态机,当然也可以从网上下载JKI之类的状态机也可以,功能大同小异。