一种基于微内核插件的万用抄表机适配器及其实现方法

文档序号:8380781阅读:483来源:国知局
一种基于微内核插件的万用抄表机适配器及其实现方法
【技术领域】
[0001]本发明涉及仪表领域,具体为一种基于微内核插件的万用抄表机适配器及其实现方法。
【背景技术】
[0002]目前,在我国电力、燃气等行业,普遍使用抄表机设备,但是不同厂商提供的抄表机和抄表系统也各不相同。比如,各抄表机厂商拥有不同型号的抄表机、每个型号对应的驱动程序以及调用接口通常也各不相同,这样就造成在使用抄表机时,需要根据不同的抄表机接口调用不同的语法,并且也存在语义上的差别。在读取抄表机数据时,传统的做法一般是要做一定的封装,试图提供一个一致的标准接口。然而,由于语法、语义均有较大差异,调用时,不同厂商传输的参数也不相同,封装难度较大。传统的封装往往局限于单一的一点,顾此失彼,总是需要针对不同的厂商做特殊处理,简单的业务逻辑混杂了太多的判断语句,调用者并没有获得针对不同厂商的完全一致的接口。如果加上跨浏览器要求,那么情况会变得更加复杂。这种不彻底的封装,不仅使封装本身变得混乱,调用者的代码也混乱不堪,增加新的厂商,所有的代码均需要改动。因此,急需提出一种解决该问题的可行技术,来解决传统的单一的、扁平的封装所存在的封装不彻底的问题。

【发明内容】

[0003]本发明的目的在于提供一种基于微内核插件的万用抄表机适配器,用以解决现有抄表机中无统一标准接口、不能满足跨浏览器需求、封装不彻底等技术问题。
[0004]为达到上述目的,本发明采用如下技术方案实现的:
一种基于微内核插件的万用抄表机适配器,其特殊之处在于:微内核的程序应用是基于插件来实现即插即用的,根据各个厂商的不同种类抄表机提供的驱动程序进行标准化适配器接口封装,设置三层标准化接口对外提供统一的抄表机调用接口,供应用层调用;
所述微内核包括第一层、第二层,所述第一层用于从各个厂商的不同种类抄表机的专有接口中抽象出微内核中的标准适配器接口,第二层用于对微内核中的标准适配器接口提供对外的标准接口;
第三层为高级应用接口,是基于微内核提供的对外标准接口而设定的调用接口,用来进一步屏蔽各厂商抄表机语义和缓冲参数的差异,为应用层调用提供语义一致的调用接
□ O
[0005]进一步地,所述第一层还用于对抄表机厂商提供的驱动程序进行封装形成动态链接库。
[0006]再进一步地,所述第二层还用于对动态链接库采用Activex封装实现各抄表机接口在IE浏览器下的调用支持或采用QtBrowerPlugin封装实现各抄表机接口非IE浏览器下的调用支持。
[0007]更进一步地,所述高级应用接口层,用于采用javascript技术屏蔽各厂商抄表机语义和缓冲参数的差异。
[0008]本发明还提供一种基于微内核插件的万用抄表机适配器的实现方法,在所述实现方法中微内核的程序应用是基于插件来实现即插即用的,根据各个厂商的不同种类抄表机提供的驱动程序进行标准化适配器接口封装,设置三层标准化接口对外提供统一的抄表机调用接口,供应用层调用,所述三层标准化接口的实现步骤如下;在微内核分两层进行接口封装,
步骤一、在第一层内从各个厂商的不同种类抄表机的专有接口中抽象出微内核中的标准适配器接口;
步骤二、在第二层内对第一层抽象出的标准适配器接口提供对外的标准接口 ;
步骤三、在第三层,即高级应用接口,基于第二层提供的对外标准接口,进一步屏蔽各厂商抄表机语义和缓冲参数的差异,为应用层调用提供语义一致的调用接口。
[0009]进一步地,步骤一中,在所述第一层内对抄表机厂商提供的驱动程序进行封装形成动态链接库。
[0010]再进一步地,步骤二中,在所述第二层对动态链接库采用ActiveX封装实现各抄表机接口在IE浏览器下的调用支持或采用QtBrowerPlugin封装实现各抄表机接口非IE浏览器下的调用支持。
[0011]更进一步地,在步骤三中,所述高级应用接口层采用javascript技术屏蔽各厂商抄表机接口调用的语义和缓冲参数的差异,为应用层业务调用提供语义一致的调用接口。
[0012]本发明提供的基于微内核插件的万用抄表机适配器及其实现方法解决了如下技术问题:
1、为抄表机驱动开发提供标准化的语法一致的接口;
2、为抄表机应用软件提供针对不同抄表机厂商的统一的、标准的、语法和语义完全一致的调用方式;
3、解决抄表机跨浏览器调用问题;
4、新增抄表机类型无需修改已有程序。
【附图说明】
[0013]图1为本发明的基于微内核插件的万用抄表机适配器系统图;
图2为本发明的基于微内核插件的万用抄表机适配器封装流程图;
图3为本发明的基于微内核插件的万用抄表机适配器内部调用的流程图。
【具体实施方式】
[0014]以下结合图1至图3,对本发明的技术方案做进一步的说明。
[0015]本发明是基于组件技术实现即插即用的微内核抄表机适配器,提供标准化的接口和调用方式。提供了三层的标准接口设计,第一层和第二层解决了语法不一致问题,第三层解决了语义和具体输入参数不一致问题。第一层和第二层属于微内核,核心思想是从各个厂商的不同种类抄表机的专有接口中抽象出一个微内核中的标准的适配器接口,该接口跟设备紧密相关,仅仅提供设备最基本的原始操作,可针对不同的设备编写接口一致的适配器,这是第一层。第二层提供微内核驱动适配器对外提供一个对外的标准接口,该接口可以采用不同的技术,如ActiveX或QtBrowserPlugin等技术,第二层提供了跨浏览器的扩展能力。在编写业务时,对不同厂商的抄表机需要在计算机上配置不同的目录作为数据的缓冲区,不同抄表机厂商的抄表机接口语义存在细微差别,且一项具体功能需要多次调用抄表机接口的原原始方法组合实现,因此,编写业务时,如果直接利用内核层的接口编写,仍然会陷入针对不同抄表设备区别对待的泥潭。为了解决这个问题,本发明提供了基于内核层标准接口的第三层高级应用接口,组合原始方法,屏蔽了语义和缓冲参数的不同,为业务层提供了一个真正意义上的一致的简洁的接口。
[0016]实施例1:
图1、图2详细地说明了本发明的基于微内核插件的万用抄表机适配器内部示意图,微内核的程序应用是基于插件来实现即插即用的,根据各个厂商的不同种类抄表机提供的驱动程序进行标准化适配器接口封装,设置三层标准化接口对外提供统一的抄表机调用接口,供应用层调用,具体如下:
所述微内核包括第一层、第二层,所述第一层用于从各个厂商的不同种类抄表机的专有接口中抽象出微内核中的标准适配器接口,第二层用于对微内核中的标准适配器接口提供对外的标准接口;
第三层为高级应用接口,是基于微内核提供的对外标准接口而设定的调用接口,用来进一步屏蔽各厂商抄表机语义和缓冲参数的差异,为应用层调用提供语义一致的调用接
□ O
[0017]第一层和第二层解决了语法不一致问题,第一层用于对抄表机厂商提供的驱动程序进行封装形成动态链接库,接口定制的原则为,将各种抄表机通用的操作抽取出来,参数返回值统一约定,比如上传文件或者下载文件可以分别作为一个接口函数,参数为文件名,返回值为调用抄表机的错误代码。第一层的实现方式为:从各个厂商的不同种类抄表机的专有接口中抽象出一个内核中的标准的适配器接口(类HCD_Driver),该接口跟设备紧密相关,提供设备最基本的原始操作:抄表机发送文件(方法send File To PC),向抄表机发送文件(方法send File To HC),向抄表机发送程序(方法send Program To HC),向抄表机发送系统时间(方法send Date Time To HC)等。
[0018]第二层提供微内核驱动适配器对外提供一个对外的标准接口(类CMeterReaderCtrl ),该接口采用了两种技术实现:ActiveX 和 QtBrowserPlugin,这一层提供了跨浏览器的扩展能力。
[0019]类CMeterReaderCtrl 的定义如下, class ATL_N0_VTABLE CMeterReaderCtrl:
public CComObjectRootEx〈CComSingleThreadModeI>,
public IDispatchImpKIMeterReaderCtrl, &IID_IMeterReaderCtrl, &LIBID_ NWMeterReaderLib, /*wMajor =*/ I, /*wMinor =*/ 0>, public 101eControlImpl<CMeterReaderCtrl>, public 1leObjectImpl〈CMeterReaderCtrI>, public 1lelnPlaceActiveObjectImpI〈CMeterReaderCtrI>, public IViewObjectExImpI〈CMeterReaderCtrI>, public 101eInPlaceObjectWindowlessImpI〈CMeterReaderCtrI>, public ISupportErrorInfo,
public IQuickActivateImpKCMeterReaderCtrI>,
#ifndef —WIN32—WCE
public IDataObjectImpI〈CMeterReaderCtrI>,
#endif
public IProvideClassInfo2Imp1〈&CLSID—MeterReaderCtrI, NULL, &LIBID
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1