在工业组态软件中二次开发的方法技术

技术编号:9170798 阅读:644 留言:0更新日期:2013-09-19 19:18
本发明专利技术提供了一种在工业组态软件中二次开发的方法,所述工业组态软件采用MFC语言编写,所述方法包括:所述工业组态软件通过调用用户控制动态库来加载Csharp编辑器,所述用户控制动态库采用C++/CLR语言编写;对所述工业组态软件接收到的用户操作进行截取,并通过所述用户控制动态库将所述用户操作转发至所述Csharp编辑器;在所述Csharp编辑器中采用Csharp语言编写二次开发代码;对所述二次开发代码进行编译,生成对应的动态库文件;所述工业组态软件调用.Net运行库执行所述动态库文件。本发明专利技术提高了工业组态软件的可扩展性。

【技术实现步骤摘要】
在工业组态软件中二次开发的方法
本专利技术涉及一种在工业组态软件中二次开发的方法。
技术介绍
VCMS、EZSCADA等工业组态软件具有强大的图形开发工具,能够开发出适合反映各种工业自动化控制工况的人机交互图形界面(HMI)。例如,在岸桥、轨道吊、轮胎吊等码头集装箱装卸设备上大多都安装有此类工业组态软件。但是,VCMS、EZSCADA等工业组态软件主要是采用微软基础类库(MFC)语言编写的,其提供的可扩展能力较差,不便于用户进行二次开发。
技术实现思路
本专利技术要解决的技术问题是提供一种工业组态软件中二次开发的方法,能够在采用MFC语言编写的工业组态软件中使用Csharp(即C#)语言进行二次开发,提高了工业组态软件的可扩展性。为解决上述技术问题,本专利技术提供了一种在工业组态软件中二次开发的方法,所述工业组态软件采用MFC语言编写,所述方法包括:所述工业组态软件通过调用用户控制动态库来加载Csharp编辑器,所述用户控制动态库采用C++/CLR(CommonLanguageRuntime,公共语言运行时)语言编写;对所述工业组态软件接收到的用户操作进行截取,并通过所述用户控制动态库将所述用户操作转发至所述Csharp编辑器;在所述Csharp编辑器中采用Csharp语言编写二次开发代码;对所述二次开发代码进行编译,生成对应的动态库文件;所述工业组态软件调用.Net运行库执行所述动态库文件。可选地,所述方法还包括:加载本地计算机上已经安装的.Net动态库列表、COM(ComponentObjectModel,组件对象模型)组件列表以及所述工业组态软件提供的动态库列表,以供在编写所述二次开发代码时引用。可选地,所述方法还包括:采用Csharp语言的平台调用技术将所述工业组态软件中的API(ApplicationProgrammingInterface,应用程序编程接口)函数分别封装为对应的动态库,以供在所述Csharp编辑器中进行引用。可选地,所述API函数包括画面、服务和工程API函数。可选地,对所述二次开发代码进行编译时,还生成对应于所述动态库文件的配置文件,所述配置文件中具有指定的子目录,在执行所述动态库文件前自动将所需的动态库复制到所述子目录中。可选地,在执行所述动态库文件时还保存运行时的对应关系表,在运行类的实例时首先在所述对应关系表中进行查找,如果存在则直接运行该实例,否则生成该实例并将其保存至所述对应关系表中。可选地,所述用户操作包括剪切、复制、粘帖、注释、取消注释、撤消、重复、查找、键盘操作。与现有技术相比,本专利技术具有以下优点:本专利技术实施例的工业组态软件中二次开发的方法中,采用C++/CLR语言编写用户控制动态库来连接工业组态软件和Csharp编辑器,工业组态软件调用该用户控制动态库,在执行到打开Csharp编辑器时加载Csharp编辑器,之后截取工业组态软件接收到的用户操作并转发至Csharp编辑器,使得用户能够在Csharp编辑器中编写二次开发代码,以此来实现工业组态软件本身很难实现的各种功能,增强了工业组态软件的外延性和扩展性。附图说明图1是本专利技术实施例在工业组态软件中二次开发的方法的流程示意图。具体实施方式下面结合具体实施例和附图对本专利技术作进一步说明,但不应以此限制本专利技术的保护范围。图1示出了本实施例中在工业组态软件中二次开发的方法的流程示意图,包括:步骤S11,所述工业组态软件通过调用用户控制动态库来加载Csharp编辑器,所述用户控制动态库采用C++/CLR语言编写;步骤S12,对所述工业组态软件接收到的用户操作进行截取,并通过所述用户控制动态库将所述用户操作转发至所述Csharp编辑器;步骤S13,在所述Csharp编辑器中采用Csharp语言编写二次开发代码;步骤S14,对所述二次开发代码进行编译,生成对应的动态库文件;步骤S15,所述工业组态软件调用.Net运行库执行所述动态库文件。其中,工业组态软件是采用MFC语言编写的,例如可以是VCMS工业组态软件、EZSCADA工业组态软件等。由于工业组态软件是用MFC语言编写的,而Csharp语言需要.Net环境支持,因而在步骤S11中,用户可以利用C++/CLR语言编写用户控制动态库UserControlBase.dll,以此来连接工业组态软件和Csharp编辑器。工业组态软件通过C++方式调用用户控制动态库UserControlBase.dll,在执行到打开二次开发所采用的Csharp编辑器时,用户控制动态库UserControlBase.dll通过CLR技术和.Net相互支持的方式对Csharp编辑器进行加载。在加载Csharp编辑器的同时,还可以将工业组态软件所需打开的文件路径等信息一并传递到Csharp编辑器中。由于进行代码编辑的剪切、复制、粘帖、全选等键盘和菜单事件都是在工业组态软件中实现的,而Csharp编辑器接收不到此类事件,因而在步骤S12中,对工业组态软件接收到的用户操作进行截取,并通过用户控制动态库UserControlBase.dll转发给Csharp编辑器,使得Csharp编辑器在接收到事件后能够根据不同的事件信息分别进行处理,从而解决了工业组态软件和Csharp编辑器之间的信息交互问题。本实施例中,相关的用户操作包括剪切、复制、粘帖、注释、取消注释、撤消、重复、查找、键盘操作等,但并不限于此。通过截取和转发,Csharp编辑器的最外层继承了用户控制动态库UserControlBase.dll并实现了打开、保存、关闭等接口,工业组态软件通过加载用户控制动态库UserControlBase.dll并调用其中相应的打开接口即可调用Csharp编辑器打开对应的二次开发文件进行编辑。本实施例中,Csharp编辑器主要由三方面内容组成,第一部分是工具栏,实现包括剪切、复制、粘帖、注释、取消注释、撤消、重复、查找等功能,帮助用户快速、方便地编写所需要的代码,同时还支持键盘操作;第二部分是文本编辑界面,用户在上面可以编写二次开发代码,在文本编辑界面上具有编写的类和方法的索引列表,选择其中某一项可以自动跳转到对应的代码位置,在编写代码过程中,Csharp编辑器可以根据已经编写的代码来分析出是否是关键词,并采用不同的颜色来进行区分显示;第三部分是动态库的引用,采用树形结构显示当前已经添加的动态库的名称,并允许用户进行添加,这一部分将在下文中进行详细说明。具体地,本实施例还可以在Csharp编辑器的编辑界面上加载本地计算机上已经安装的.Net动态库列表、COM组件列表、工业组态软件提供的动态库列表供用户在编写二次开发代码时进行选择引用。当用户引用COM组件、工业组态软件提供的动态库以及其他动态库时,Csharp编辑器还可以自动判断所选的文件是否符合引用要求并根据文件信息来确定是否需要转换成.Net动态库。另外,本实施例中还采用Csharp语言的平台调用技术将工业组态软件中的API函数分别封装为对应的动态库。例如,采用平台调用技术编写Rcw.ScreenAPI.dll、Rcw.ServerAPI.dll和Rcw.ProjectAPI.dll三个动态库将工业组态软件中的画面服务和工程三方面中的API函数重新封装,使得本文档来自技高网...
在工业组态软件中二次开发的方法

【技术保护点】
一种在工业组态软件中二次开发的方法,所述工业组态软件采用MFC语言编写,其特征在于,所述方法包括:所述工业组态软件通过调用用户控制动态库来加载Csharp编辑器,所述用户控制动态库采用C++/CLR语言编写;对所述工业组态软件接收到的用户操作进行截取,并通过所述用户控制动态库将所述用户操作转发至所述Csharp编辑器;在所述Csharp编辑器中采用Csharp语言编写二次开发代码;对所述二次开发代码进行编译,生成对应的动态库文件;所述工业组态软件调用.Net运行库执行所述动态库文件。

【技术特征摘要】
1.一种在工业组态软件中二次开发的方法,所述工业组态软件采用MFC语言编写,其特征在于,所述方法包括:所述工业组态软件通过调用用户控制动态库来加载Csharp编辑器,所述用户控制动态库采用C++/CLR语言编写;对所述工业组态软件接收到的用户操作进行截取,并通过所述用户控制动态库将所述用户操作转发至所述Csharp编辑器;在所述Csharp编辑器中采用Csharp语言编写二次开发代码;对所述二次开发代码进行编译,生成对应的动态库文件;所述工业组态软件调用.Net运行库执行所述动态库文件;其中对所述二次开发代码进行编译时,还生成对应于所述动态库文件的配置文件,所述配置文件中具有指定的子目录,在执行所述动态库文件前自动将所需的动态库复制到所述子目录中。2.根据权利要求1所述的在工业组态软件中二次开发的方法,其特征在于,还包括:加载本地计算机上已经安装的.Net动态库列表、CO...

【专利技术属性】
技术研发人员:徐健
申请(专利权)人:上海振华重工集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1