上周五实验课的时候,有个同学问我说,他觉得他设计的程序没有问题,但是运行不了。其设计的程序对应的题目为:设计如图1所示界面的程序,并实现功能:①通过“设置”按钮设置电压报警上限值;②当电压测量值大于报警上限值时点亮高压报警警示灯,否则点亮正常运行指示灯。
其设计的框图程序如下:

图2 框图程序
我看了一下框图程序,确认他的设计是正确的,然后我就跟他说,运行一下程序给我看看。当他运行时,我发现了问题所在,原来他运行程序使用的是“运行”按钮,以至程序没有展示出我上课时演示的效果,于是觉得程序设计有问题。我就跟他说,程序设计没有问题,但此道程序应该使用“连续运行”来运行。那么,问题来了,LabVIEW程序“运行”和“连续运行”有什么区别?什么时候使用“运行”?什么时候又要使用“连续运行”呢?我下面就对这几个问题进行讲解。
首先来了解LabVIEW程序“运行”和“连续运行”的区别。图3是“运行”和“连续运行”按钮的位置和外观。LabVIEW程序“运行”的意思就是程序从开始到末尾顺序执行1次,等效于其他文本式编程语言(如C语言)从第1条语句按顺序执行到最后1条语句。如图2所示程序,按“运行”按钮后,程序会瞬间执行完,以至于用户看不到效果,这就是上面提到的那个同学觉得自己的程序设计有问题的原因。而“连续运行”的意思就是程序从开始到结束顺序执行完后,又会回到开始再次执行,如此重复,直至用户点击“停止”按钮才会结束。这等效于人为强制给程序添加了一个条件为真的循环,使程序连续地重复执行。在“连续运行”模式下,图2所示程序可以实现检测界面中“设置”按钮的状态,并做出响应,因此图2所示程序应该选择“连续运行”查看程序运行效果。
那么,对LabVIEW程序,什么时候使用“运行”?什么时候又要使用“连续运行”呢?大部分情况下,对LabVIEW程序应该选择“运行”,因为LabVIEW程序在实际中就是这样使用的。而“连续运行”一般用于需要观察参数改变时运行效果变化的情况,也可以认为“连续运行”为一种调试模式。如图2所示的程序只有使用“连续运行”才能观察到程序运行效果。还一个典型的需要使用“连续运行”的程序如图4所示。该程序实现的功能为:无论是单击了OK按钮还是定时5s时间到,都弹出一个对话框提示“超时或单击了OK按钮”。如果采取“运行”模式,则每一次运行只能看到一个效果,就是单击OK按钮或者定时时间到的效果。如果采取“连续运行”,则可以持续观察到单击OK按钮和定时时间到的效果。

图4 事件结构示例程序
到这里,大家应该是了解了LabVIEW程序“运行”和“连续运行”的区别。但是有些同学可能会突发奇想:反正“连续运行”就是多次运行,这个没什么影响,那么就干脆只要需要运行LabVIEW程序,就采取“连续运行”。很明显,这个想法是错误的,在某些情况下还会给你带来麻烦,比如图5所示的程序。该程序实现的功能为:弹出一个对话框,用于用户建立1个文本文件,然后使用For循环将产生的5个随机数写进该文件。这个程序如果采用“连续运行”模式,将会持续不断跳出对话框让你选择文件,让你什么都干不了。最后你将不得不采取通过Ctrl+Alt+Del调出任务管理器结束LabVIEW软件运行的方式来解决这个麻烦。
最后,我再举一个跟LabVIEW程序“运行”和“连续运行”有关的问题。一次,有个同学跟我说,他设计的程序“Stop”按钮使用不了,按下“Stop”按钮后程序不会结束,并且他已经跟我给出的答案核对过了,完全一模一样。该程序的前面板如图6所示,框图程序如图7所示。我看了一下,他设计的程序确实没有问题,那么,为什么会出现上面他说的情况呢?有没有同学可以说出是怎么回事吗?通过课程QQ群发出这个问题的正确答案的前10个同学我将记录并给予平时分1分的加分。

图6 前面板

图7 框图程序