在组态运行时捕获ActiveX控件异常的系统和方法

文档序号:9235372阅读:872来源:国知局
在组态运行时捕获ActiveX控件异常的系统和方法
【技术领域】
[0001] 本发明涉及综合监控领域,具体地,涉及在组态运行时捕获ActiveX控件异常的 系统和方法。
【背景技术】
[0002] 随着硬件、通信、计算机技术的迅速发展,桥梁隧道、轨道交通等基础设施的建设 也随之向前推动,建设一个高效、先进、智能化和信息化的监控网络,成为综合监控系统面 临的一大挑战。在实施该样的综合监控网络项目时,组态是综合监控系统人机界面展示的 核也。
[0003]"组态(configuration)"的概念是伴随着分布式控制系统(distributed control system,DC巧的出现才开始被广大的生产过程自动化技术人员所熟知的。每一套DCS都是 比较通用的控制系统,可W应用到很多领域,为了使用户在不需要编写程序的情况下便可 生成适合自己需求的应用系统,每个DCS厂商在DCS中都预装了系统软件和应用软件,其中 的应用软件实际上就是组态软件,但一直没有人给出明确的定义,只是将使用该种应用软 件设计生成(定制)目标应用系统的过程称为"组态(configure)"或"做组态"。相应地,该 种应用软件和生成的目标应用系统一道被称为"组态软件",有时也称为"监控组态软件"。 监控组态软件是面向过程监控与数据采集(SupervisoiT Control And Data Acquisition, SCADA)的软件平台,具有丰富的设置项目。监控组态软件最早出现时,人机图形界面(Human Machine Inte计ace,歷I)是其主要内涵。随着它的快速发展,实时数据库、实时控制、通信 及联网、开放数据接口和对1/0设备的广泛支持己经成为它的主要内容。
[0004] ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中 主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM (DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可W自主的在ActiveX网 络(现在的网络主要包括Windows和Mac)中任意运行的程序。该个组件就是ActiveX控件。 ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和 JAVA applet功能类似。
[0005] OCX代表"对象链接与嵌入控件"(0LE),该个技术是Microsoft提出的程序技术, 用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使 用ActiveX控件代表组件对象。
[0006] 组件的一大优点就是可W被大多数应用程序再使用(该些应用程序称为组件容 器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic 或化we巧uilder,甚至一些技术性语言如VBScript。
[0007] ActiveX控件是一种可重用的软件组件,通过使用ActiveX控件,可W很快地在 网址、台式应用程序、W及开发工具中加入特殊的功能。如,动画控件可用来向网页中加 入动画特性。开发控件可W使用各种编程语言,如C,C++,下一代的Microsoft Visual Basic&reg,W及微软公司的 Visual Java 开发环境 MicrosoftVisual J++。ActiveX 控件 一旦被开发出来,设计和开发人员就可w把它当作预装配组件,用于开发客户程序。w此种 方式使用ActiveX控件,使用者无需知道该些组件是如何开发的,在很多情况下,甚至不需 要自己编程,就可W完成网页或应用程序的设计。
[0008] 在组态系统中,为满足复杂的客户端展示需求,需要在组态系统提供嵌入ActiveX 控件的功能,可W嵌入自己开发或第H方的各类ActiveX控件。
[0009] 在工程使用中,会出现在组态运行中的任何一个ActiveX控件异常,就会导致整 个组态崩溃。本发明的目的是能够捕获到该些异常,给用户一些提示或记录日志,而不使整 个组态崩溃,提局广品稳定性。
[0010] 经检索,发现相关文献(申请号;EP0965923,专利名称;System and method for secure software component containment),该相关文献提供了 一种 ActiveX 控件异常 的捕获及处理方法,但与本发明相比,有2点本发明能够实现,但该发明无法实现;(1) ActiveX第一层界面异常捕获;(2) OCX控件在派生线程中抛出的异常的捕获。

【发明内容】

[0011] 针对现有技术中的缺陷,本发明的目的是提供一种在组态运行时捕获ActiveX控 件异常的系统和方法。
[0012] 根据本发明提供的一种在组态运行时捕获ActiveX控件异常的系统,包括如下装 置:
[0013] 组态系统,用于组态页面的展示,ActiveX控件作为一个画面元素嵌入到组态页面 中;
[0014] 组态系统异常管理模块,用于将所有的系统可能抛出的异常映射成组态系统自定 义的一个异常类型,当系统抛出异常时,转换成该自定义的异常类型进行处理;
[0015] 组态异常处理模块,用于在组态系统进程的消息链中嵌入异常捕获机制,负责捕 获并处理ActiveX控件中进行消息处理时引发的异常;
[0016] 进一步地,所述组态系统,在加载每个ActiveX控件时,在组态页面中自动创建一 个ActiveX容器,在ActiveX容器中创建ActiveX控件,由该ActiveX容器负责捕获并处理 ActiveX控件加载和卸载时引发的异常;
[0017] 所述组态异常处理模块,在组态系统进程调用ActiveX控件方法的触发机制中嵌 入异常捕获机制,负责捕获并处理ActiveX控件方法被组态系统调用时引发的异常。
[0018] 优选地,所述ActiveX容器在卸载AcitveX控件时,首先ActiveX容器去卸载其加 载的ActiveX控件,如果在ActiveX卸载时发生异常,ActiveX容器会捕获到异常并进行处 理。
[0019] 优选地,所述在组态系统进程的消息链中嵌入异常捕获机制,具体为:先截获消 息,并传递给后续处理环节,在后续处理环节中发生的系统异常,被映射成组态系统自定义 异常类型,被异常捕获机制捕获并处理。
[0020] 优选地,所述在组态系统进程调用ActiveX控件方法的触发机制中嵌入异常捕获 机制,具体为;先截获ActiveX控件方法调用的消息,并传递给实际被调用的ActiveX控件, 在ActiveX空间方法调用中发生的异常,被映射成组态系统自定义异常类型,被异常捕获 机制捕获并处理。
[0021] 优选地,打开画面异常的处理流程具体如下:
[0022] a)接收用户打开画面文件的指令;
[0023] b)开始逐个读取画面对象,逐个创建;
[0024] C)若对象是普通对象,则按照普通对象处理,直接创建到组态画面中;
[002引 d)若对象是ActiveX控件,则为该ActiveX控件自动创建一个ActiveX容器,并启 动ActiveX创建异常处理;
[0026] e)在ActiveX容器中创建真正的ActiveX控件;
[0027] f)若创建ActiveX控件时发生异常,ActiveX容器捕获到该异常,弹出提示信息给 用户,结束画面创建,关闭该画面;
[0028] g)若控件创建无异常,继续读取、创建其它对象,直到所有对象创建完毕;然后开 始画面运行。
[0029] 优选地,关闭画面的异常处理流程具体如下:
[0030] a)接收用户关闭某一画面的指令;
[003。b)开始卸载画面对象,若是普通对象,则按照普通对象的卸载机制卸载;
[0032] C)若是ActiveX控件,则启动ActiveX控件卸载异常处理;
[0033] d)开始卸载ActiveX控件,若发生异常,则记录日志,然后卸载ActiveX容器;若 无异常,则直接卸载ActiveX容器;
[0034] e)继续其它对象的卸载,直到所有对象卸载完毕,关闭组态画面。
[00巧]优选地,定时的异常处理流程具体如下:
[0036]a)组态应用启动组态画面运行;
[0037]b)检测是否包含了ActiveX控件,所包含的ActiveX控件是否启动了定时任务;
[0038] C)若无ActiveX控件的定时任务,则按照正常逻辑运行画面;
[0039]d)若包含了ActiveX控件的定时任务,贝Ij启动ActiveX定时异常处理;
[0040]e)检测ActiveX定时异常处理,是否发生异常;
[0041]f)若发生了异常,首先记录日志,然后弹出提示框给用户,征求用户的意见,是否 要关闭定时器;若用户选择了关闭定时器,则关闭该ActiveX控件的定时任务,若用户选择 继续运行,则不关闭定时器,继续对定时任务进行异常捕获;
[0042]g)关闭页面时卸载ActiveX定时异常处理。
[0043] 优选地,方法调用的异常处理流程具体如下:
[0044] a)组态应用启动组态画面运行;
[0045]b)检测是否包含了ActiveX控件,检测组态画面是否通过脚本调用了ActiveX控 件的方法或设置了ActiveX控件的某些属性;
[0046] C)若没有调用ActiveX控件的方法或设置ActiveX控件的属性,则按照正常逻辑 运行画面
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1