首页 昆仑通态(M. 正文

回复

最新版MCGS高级开发指南(二)

昆仑通态(MCGS) 浏览:4535 回复:5 收藏

tzzabc  2002-03-27 18:00

第二章 开发MCGS功能构件 MCGS提供了一套运行策略机制,使用户能根据实际应用的需要,对工作流程进行精确的控制。运行策略由不同的策略块组成,而策略块又由多个策略行组成,每个策略行分为条件和功能两个部分,以实现“在什么条件下执行什么功能”的机制。MCGS提供了大多数应用所必须的功能构件,同时也提供了一套开放的可扩充接口,允许用户能根据自己的需要,定制特定的功能构件,达到扩充MCGS功能的要求。 本章下面各节将详细介绍开发MCGS功能构件的方法和步骤,请在开始之前,先安装Visual Basic6.0(中文专业版或企业版),然后安装MCGS高级开发工具包,建议你按下面各节介绍的方法和步骤来一步一步地学习开发MCGS功能构件。 2.1 功能构件的实现方法 MCGS用Active DLL构件的方式来实现功能构件,通过规范的OLE接口挂接到MCGS中,使其构成一个整体。由于功能构件和MCGS运行在同一个进程内,故功能构件的运行速度快,可靠性高,即使构件本身有问题,也不会影响到MCGS的可靠运行。同时,OLE是一个可扩充的开放标准,用于实现不同软件之间的相互操作,而不管软件本身是使用什么编程语言。因此,只要遵守MCGS的接口规范,可以使用VB、VC、Delphi等语言来编制MCGS的功能构件。鉴于Visual Basic通用性和简单性,建议使用VB来开发MCGS的设备驱动程序,本书也只讲解使用VB进行开发的技术问题。由于VB6.0以上版本是以二进制码来编译执行程序,其运行速度已接近或超过VC,完全能满足功能构件所需的速度要求。MCGS提供的大多数功能构件就是使用VB来编程的,开发工具包中提供了部分功能构件的源代码,可在其基础上修改,实现比MCGS功能更完善的功能构件。 2.2 功能构件接口规范 MCGS设备构件的实现方法和原理与标准VB的ActiveDLL完全一致,但MCGS规定了一套接口规范,只有遵守这些接口规范的ActiveDLL才能用作MCGS的功能构件。MCGS功能构件必须具有如下4个接口: 接口:SvrMenuCommand 组态时调用,执行菜单命令 接口:SvrStgySetOperator 组态时调用,设置构件的属性 接口:SvrStgyRunOperator 运行时调用,执行构件的功能 接口:SvrCheck 组态中,编译查错时时调用 开发MCGS功能构件的过程,实际上就是根据功能构件的特性和含义来完成4个接口功能的编程过程。下面详细讲述各个接口的含义和用法: 接口:SvrMenuCommand 接口作用:本接口用于在MCGS组态环境中增加一个用户自定义的菜单项。本接口在组态环境装载时被MCGS组态环境调用,检查是否有有对应的菜单要求,如有,在MCGS的“工具“菜单中增加一菜单项。组态环境运行时,当用户选取增加的菜单项时,也调用本接口。 语法形式:SvrMenuCommand(strName As String, bQuery As Long, DatObj As Object) As Long 返 回 值:=0,调用成功;=1调用失败。 参数说明:strName,返回用于显示在“工具“菜单中的菜单项的名称;如为空,表示本功能构件不增加菜单。 bQuery,MCGS初试化时调用本接口时,把本参数的值设置为1,在菜单中调用本接口时,把本参数的值设置为0; DatObj,MCGS实时数据库数据对象。 接口:SvrStgySetOperator 接口作用:本接口的作用是读取功能构件的类型名称、注释和所对应的图标资源的ID号以及组态时设置构件的属性时调用。 语法形式:SvrStgySetOperator(strName As String, strNotes As String, iIcon As Long, DatObj As Object, SaveObj As Object, bQuery As Long) As Long 返 回 值:=0,调用成功;=1调用失败。 参数说明:strName,返回功能构件的类型名,显示在功能构件列表框中; strNotes ,返回功能构件的注释,显示在策略行的右边; iIcon ,返回功能构件所对应的图标资源的ID号,该图标显示在策略行的功能构件块上。如ID=0,表示没有对应的图标,MCGS显示缺省图标; bQuery,MCGS初试化时调用本接口时,把本参数的值设置为1,在设置构件属性调用本接口时,把本参数的值设置为0; DatObj,MCGS实时数据库数据对象。 SavObj ,存盘服务对象,接口程序中通过该对象来保存和读取数据。 接口:SvrStgyRunOperator 接口作用:本接口在运行环境中,当需要执行本构件的功能时调用。 语法形式:SvrStgyRunOperator(DatObj As Object, SaveObj As Object) As Long 返 回 值:=0,调用成功;=1调用失败。 参数说明:DatObj,MCGS实时数据库数据对象; SavObj ,存盘服务对象,接口程序中通过该对象来保存和读取数据。 接口:SvrCheck 接口作用:本接口在组态环境中,当MCGS进行查错和编译调用。 语法形式:SvrCheck(DatObj As Object, CheckFlag As Long) As Long 返 回 值:=0,调用成功;=1调用失败。 参数说明:DatObj,MCGS实时数据库数据对象; CheckFlag,标志位。 2.3 利用开发向导生成框架 MCGS提供了一个高级开发工具包,能快速为用户生成功能构件的源程序框架,在此基础上编程既快速,可减少出错的可能性。请按如下步骤来生成功能构件的框架: 确保MCGS的高级开发工具包已安装正确; 启动Visual Basic6.0(中文专业版或企业版); 选择“外接程序”菜单,单击该菜单下的MCGS开发向导菜单项;弹出开发向导窗口后,按“下一步”按钮,弹出如下图所示窗口: 选择扩展构件的类型为运行策略功能构件,按“下一步”按钮,弹出如下图所示的窗口: 设置构件工程名为“MyDLL”,构件类型名为“我的构件”。构件工程名为功能构件在VB下源程序的工程名,编译生成的Active DLL构件的名称为MyDLL.DLL。构件类型名用于标识对应的构件,最后可显示在MCGS的设备工具箱中。 按“下一步”按钮,出现如下图所示的窗口,设置生成目录和输出目录都为“D:\AddIn”,使开发向导自动生成的源程序和编译生成的构件都位于同一目录下。在一此按“下一步”按钮,然后按“完成”按钮,MCGS即开始自动生成功能构件的源程序框架。 开发向导完成工作后,自动生成一个名位“MyDLL”的工程组,如下图所示,在VB的工程组窗口中可以看到该工程组包含如下二个VB工程: MyDLL工程对应于设备驱动构件,该工程包含一个类模块和一个程序模块。类模块AddInObj完成了功能构件所需的所有接口。 TestDLL工程只用于在VB环境下对功能构件进行调试,该工程包含两个窗体和两个程序模块,在实际编程时,无需对该工程进行任何修改工作。 MCGS开发向导生成的所有源程序代码和编译生成的输出文件都放在D:\AddIn目录下。 注意:MCGS开发向导只是生成构件的源程序框架,没有任何具体的功能,要完成特定的功能,还需要在此基础上,针对具体要求进行进一步的编程和调试工作。 2.4 利用样例程序移植 MCGS把部分功能驱动构件的源程序代码都随系统一起提供,在实际应用中,开发定制自己的功能构件的最好方法就是在MCGS提供的源程序代码的基础上进行。由于OLE技术本身的复杂性,建议按照本节给定的方法和步骤来进行你的开发工作,避免产生不可预料的错误。如果你能严格按照本节的步骤进行开发工作,则可省去对Active DLL编程技术及有关概念的学习和了解,直接集中精力实现功能构件的功能。 从MCGS高级开发工具包中找到你所需的样例源程序代码,假定安装开发工具包时所选的安装目录为D:\Mcgssdk,则源程序位于D:\Mcgssdk\samples\AddIn目录下,而且按功能构件的名称来命名对应的目录,如:报警数据处理构件源代码的目录为AlmAddIn。为方便说明,下面各步骤中假定选取报警数据处理构件为样例程序。 建立一个新目录:D:\MyDLL,把ALmAddIn目录内的所有内容拷贝到D:\MyDLL目录下。新功能构件的源程序将位于本目录下。 每个功能构件源代码中都一个后缀为“.vbg”的工程组文件,本例中为TestDLL.vbg。启动Visual Basic6.0,打开该文件。如下图所示,在VB工程组窗口中,包含有二个工程:AlmAddIn、 TestDLL。 先在工程组窗口中选中工程AlmAddIn(被选中的工程下面显示为蓝条),用鼠标右键弹出下拉菜单或从“工程”菜单中,单击“AlmAddIn属性”,打开该工程的属性设置窗口。如下图所示,把“通用”和“生成”两个属性页中的AlmAddIn改为MyDLL(修改工程名称)。 在“部件”属性页中,把“版本兼容”中的选项设置成“不兼容”。修改完成后,按“确认”按钮返回。注意:对工程属性页中的其它属性不要做任何修改。 在VB的“文件”菜单中,单击“AlmAddIn.vbp另存为”菜单,把工程另存为MyLL.vbp。在VB的“文件”菜单
我知道了