利用循环条件结构控制几个任务的执行顺序

循环条件结构不是一个基本结构,它是指在循环结构内套一个条件结构,这样的复合结构。这是LabVIEW中常见的程序结构之一。

假设需要编写这样一个测试程序,它有多个测试任务:任务A、任务B……,需要顺序执行每一个测试任务。这是一个典型的顺序结构的程序,可以采用上一章提到的顺序程序的编写方法。它的代码如下:

 
图1:顺序执行测试任务

如果程序要求更复杂一些,这个简短的顺序结构就不够灵活了。比如,有多中产品需要测试,但每种产品的测试流程不一样,有的产品需要测试任务ABC,有的需要测试任务CDB,等。针对不同产品编写不同的测试程序不是一种高效的方法。

高效的方法是把测试任务做为测试程序的输入,程序根据用户每次指定的测试任务顺序来调用测试任务。这个程序可以使用循环条件结构来完成。它的程序如图2所示。

 
图2:按照输入的顺序执行测试任务

这个程序中的“任务队列”应该是一个输入控件,这样用户不需要改动程序,就可以改变它的输入值。但是在这里为了便于观看,把它变成了一个常量。“任务队列”是一个数组,元素按照找任务执行的顺序排列。这样在程序运行时,循环每迭代一次,循环结构从“任务队列”中取出一个任务,然后由条件结构判断该任务并进入相应的分支,执行该任务。 《我和 LabVIEW》目录

4 thoughts on “利用循环条件结构控制几个任务的执行顺序

  1. Pingback引用通告: 博客版《我和LabVIEW》目录 « 凡人琐忆

  2. 你的术语和我的不太相同,所以可能没有完全理解你的问题。
        ActiveX 控件的事件不能直接被LabVIEW的事件结构所截获。ActiveX 事件需要用注册事件回调 VI
    节点(Register Event Callback)来为某一事件指定一个VI。当事件发生时,执行被注册的 VI。我们也可以利用注册事件回调
    VI 节点为某一 LabVIEW 自身的事件注册一个回调 VI,但是出于运行效率,和程序可读性等方面的考虑,最好不要这样使用。

  3. 您好想請問一下如何利用子VI去攔截ActiceX的元件EX.我這裡有自行設計的一套ActiveX元件,其中有幾個事件是會因為某個元件被啟動而自行觸發的,我要如何利用建立子VI的方式去攔截被觸發的動作,謝

  4. 嗯,像状态机。
    不过这个是预先定义好的状态,而状态机可以在内部根据条件决定下一个状态,更灵活一点。
    其实具体的测试代码都固定的,这个是程序结构的问题。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s