labview 选项卡控件(LabVIEW调用ActiveX控件实现系统状态栏功能例子)

背景

LabVIEW是虚拟仪器行业软件开发的首选工具,作为一种通用的、完善的、开放的高级编程语言,提供了强大的外部接口编程技术,如DLL技术、ActiveX技术等等,可以实现LabVIEW与C、Basic、Matlab等编程语言,甚至与外部应用软件(如Word、Excel等)之间的通信,合理使用这些接口技术,可以充分利用其它软件的优势,弥补LabVIEW自身的不足,编写出功能更加强大的应用软件。

ActiveX控件基于COM服务器进行操作,且与开发平台无关,因此,在一种编程语言上开发的ActiveX控件无需任何修改,就可在另一种编程语言中使用。由于其可重用性的特点,目前,除操作系统本身提供的ActiveX控件外,在网络资源上也能得到相当多的ActiveX控件,可以帮助软件开发者完成五花八门的任务。

下面通过一个例子说明在LabVIEW平台中使用ActiveX控件编程的方法。

前面板设计

本例VI程序运行前面板如图1所示,模拟了某个测试过程的进度状态。在前面板上的底部调用了操作系统提供的ActiveX控件——状态栏控件,在状态栏上分了三个区域,分别指示了当前的测试进度,键盘的大小写开关状态(键盘上的“Caps Lock”键未打开时,标识字符“CAPS”为禁用型的灰色,否则以正常的黑色字体显示)和当前的日期信息等。当按下前面板上的“Start”按钮时,启动测试,“Testing”指示灯亮起,并在状态栏上的第一个区域显示如“Testing...... 79%”样式的测试进度信息,当测试完成时,“Complete”指示灯亮起,“Testing”指示灯灭掉,并在状态栏上显示“Testing Complete”信息。

labview 选项卡控件(LabVIEW调用ActiveX控件实现系统状态栏功能例子)(1)

图1 调用状态栏控件示例前面板

前面板中插入状态栏控件的方法为,在前面板“ActiveX容器”控件的右键菜单中选择“插入ActiveX对象...”命令,弹出“选择ActiveX对象”对话框,选择“Microsoft StatusBar Control”控件。插入状态栏控件后,在“ActiveX容器”的右键菜单中会新增一项对于该ActiveX控件的属性设置项。如对于本例,右键菜单中选择“StatusBar”®“Properties”,弹出如图2所示的状态栏属性框。它是ActiveX控件本身提供的对话框,由ActiveX控件的开发者提供给用户使用的属性设置的工具,在这个工具中可以对所有的可写属性进行修改或查看。

labview 选项卡控件(LabVIEW调用ActiveX控件实现系统状态栏功能例子)(2)

图2 ActiveX对象本身提供的属性设置对话框

程序框图的代码实现

本例程序框图最外层使用了两帧顺序结构,第一帧为状态栏的初始化代码,定义其每个区域的风格、初始文本内容及宽度等信息。第二帧为状态栏的信息更新代码,主要为在事件结构中响应前面板的“Start”按钮的“值改变”事件,在该事件中模拟仿真某程序的测试过程,在状态栏的第一个区域中更新当前的测试进度信息。下面分别进行说明。

(1)状态栏的初始化代码

如图3所示,状态栏在外观上是由多个区域面板(Panels)组成的,每个区域面板(Panel)都提供了多个属性或方法对其进行单独控制。在图3第一帧的初始化代码中,首先通过属性节点获得“Panels”属性,然后调用“Panels”的方法“Clear”清除掉所有的区域面板,最后调用“Panels”的方法“Add”为状态栏增加三个区域面板并设置每个区域面板的宽度。在“Add”方法中,包含多个输入参数,本例仅对“Index”、“Text”、“Style”进行了设置,分别设置每个区域的索引值、初始文本和区域风格。其中,每个区域的索引值从左到右是从1开始的,初始文本除第一个区域设置为“Ready”外,其它两个都设置为空字符串,风格参数分别设置为0、1、6,分别代表了当前区域显示内容为文本、大小写状态和系统日期。调用方法“Add”函数后将返回一个当前添加的区域面板引用,利用该引用可以设置每个区域的宽度,本例分别设置为140、50、120。在第一帧中通过顺序结构的局部变量将“Panels”的引用传递到第二帧中供后续使用。

labview 选项卡控件(LabVIEW调用ActiveX控件实现系统状态栏功能例子)(3)

图3 状态栏的初始化代码

(2)状态栏的信息更新代码

如图4所示,在第二帧的“Start”按钮的“值改变”事件中,实现状态栏的第一个区域实时显示当前的测试进度信息。代码中首先通过“Panels”调用方法“Item”获取状态栏第一个区域的“Panel”引用,参数“Index”输入1,代表对第一个区域面板操作。然后在For循环中调用“Panel”的“Text”属性设置当前的测试进度信息。该例中,每隔50ms在前面板上更新一次当前的测试进度信息、两个状态指示灯的信息。

labview 选项卡控件(LabVIEW调用ActiveX控件实现系统状态栏功能例子)(4)

图4 状态栏的信息更新代码

结论

由上面的例子可以看出,ActiveX控件类似于LabVIEW本身的控件,具有独立的显示界面,以及独立的属性、方法甚至事件,在系统中安装注册一个ActiveX控件后,操作系统中所有应用程序都可以使用这个控件。

备注

大家如果有兴趣的话可以加关注并私信回复:LabVIEW003,可获得该文章对应的LabVIEW原程序下载链接。

欢迎加关注,共同交流。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页