利用UI Message实现LV对于TestStand中Step运行状态的实时显示



主要软件: TestStand
主要软件版本: 2010
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Full Development System

问题:

   我利用TestStand编写了一个测试序列,然后通过LV编写自定义的界面并调用TestStand的运行引擎,那么如何能实现将测试序列中的每一个Step的测试结果、测试条件等信息实时的显示到LV的自定义的表格控件上来呢?



解答:

    要实现这个功能的核心实际就是利用UI Message的相关API来实现。下面我们首先来介绍一下UI Message的基本作用。

    UI MessageTestStand与用户界面进行交互的一个很重要的方式。TestStand即通过UI Message向用户界面发送其当前的执行状态。比如,当一个Step运行结束后,TestStand即发布一个UI Message告知用户界面,这时用户界面接收到这个UI Message即可将对应的测试结果在表格控件上进行刷新。这也是在LV调用TestStand引擎实现自定义测试界面设计时一个很常用的应用需求。下面我们就根据实际的程序来介绍应该如何实现这个功能。

    首先我们要在TestStand中创建一个ActiveX Step,通过创建“PostUIMessageEx”方法来实现一个测试序列中UIMessage的发布。而在LV中,我正是要利用TestStand所提供的API函数来实现对于测试序列中每一个Step状态的检测。建立ActiveX Step的方式如图1所示

图1 建立ActiveX Step
         这里需要强调的一点就是对于”PostUIMessageEx”参数的设置,其中”EventCode”实际就是UI Message ID,而在TestStand中,UI Message分为默认和自定义两种类型。默认的UI Message可由TestStand engine自动发送给UI,比如停止测试,开启测试,退出等等。所以默认UI Message的Message ID在0~10000这个范围。然而,类似于要获取测试Step的运行状态的这种UI Message就需要用户去自定义,同时获取这个UI Message后要怎么操作,这就需要我们在LV中去编程。所以对于这样自定义的UI Message的Message ID我们必须设置在10000以上,也就是图1里面的”UIMsg_UserMessgaeBase+1”,从而防止消息ID重复。此外,我们需要设置”stringDataParam”和”activeXDataParam”两个参数来约束获取什么样信息,比如我们这个例子中获取的是Step的测试结果,当然这里的设置就很灵活,我们也可以获取其他的状态。
        建立完ActiveX Step之后,我们接着就在TestStand中建立自己的测试序列,这里我们不详述,如图2所示。

图2 建立一个测试序列

图3 LV调用TestStand引擎的程序框架
        介绍到这里,我们TestStand这边的工作已经完成了。下面我们着重介绍LV这边如何调用API来实现对于Step状态的获取和显示。关于LV调用TestStand引擎的范例我们可以在TestStand的安装目录下”\TestStand 2010\UserInterfaces\Simple\LabVIEW”找到。在该文档中我们就基于这个范例来进行修改。
       从图3我们可以看到,LV与TestStand交互的程序框架简而言之就是LV通过TestStand提供的API,获取TestStand运行引擎,并通过注册事件和添加回调函数的方式来实现二者之间的交互。所谓回调函数要实现的功能正是我们对于捕捉到的事件如何来进行处理。前面我们已经介绍了在TestStand中自定义了一个UI Message用于捕捉测试序列中每一个Step的执行,那么TestStand Engine会将这个消息发送给LV,那么如何接收到这个消息并对这个消息进行处理,我们就需要在如图3所标识的VI中添加代码,以回调函数的方式接收TestStand发送过来的消息,并对结果进行处理。
         如图4所示,将“事件回调注册”的属性节点下拉,就会有三个参数,分别为“UIMessageEvent”,将其与“Application Manager”相连;接着就是“VI引用”,这个就是我们自己编写的回调函数VI,当接收到TestStand发送的UI Message以后,应该做何处理,比如获取Step的运行结果在表格控件上进行显示,就在这个VI中完成;最后“用户参数”传递的就是想要操作的控件引用,比如该例子中的要进行结果显示的表格控件。

图4 注册回调函数
        回调函数的代码的如图5所示,当TestStand中一个Step运行结束,即会产生一个UI Message,LV通过注册回调函数捕捉到这个UI Message后,即跳入到这个回调函数的VI执行该代码。从图5可以看到,我们实际通过获得UI Message的引用,调用对应的属性节点分别来获取Step的名称、测试结论,同时判断测试类型并获取对应的测试结果。同时我们可以把相关的测试信息显示到表格上。

图5 回调函数的处理代码
    运行的测试结果如图6所示,我们即可通过上述方式来实现对于TestStandStep运行结果的实时显示。

exampleUI Message Test.7z




报告日期: 01/06/2013
最近更新: 01/07/2013
文档编号: 655JMGL9