一种驱动层消息处理方法、交互模块及驱动装置与流程

文档序号:12127022阅读:264来源:国知局
一种驱动层消息处理方法、交互模块及驱动装置与流程

本发明涉及计算机技术领域,特别涉及一种驱动层消息处理方法、交互模块及驱动装置。



背景技术:

如今,科技水平不断提高,电子化产品越来越多,尤其是银行业的一系列票据自助设备,如,ATM机等越来越受到用户青睐。目前,越来越多的票据办理已由人工办理转为票据自助设备办理。

目前,在进行票据办理时,主要是通过上层应用对驱动层采用标准接口调用,以此实现票据办理。但是,采用标准接口调用的票据办理形式,驱动层的流程和架构非常复杂,而且由于近年来银行需求不断增多,票据硬件设备动作的复杂性增加,那如果还是通过采用标准接口调用的形式实现票据办理,那就会因为流程和架构的复杂性,而导致大量底层动态库发来的消息堆积,无法及时的发输出给上层应用,因此,造成驱动层的执行效率较低。



技术实现要素:

本发明实施例提供了一种驱动层消息处理方法、交互模块及驱动装置,能够提高驱动层的执行效率。

第一方面,本发明实施例提供了一种驱动层消息处理方法,应用于驱动层的与上层应用交互的交互模块中,预先在所述交互模块中创建目标窗口类,还包括:

通过所述目标窗口类接收底层动态库发来的至少一个目标消息;

通过所述目标窗口类生成每个所述目标消息对应的目标事件;

通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用。

优选地,在所述通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用之前,进一步包括:

将所述目标窗口类设置为所述交互模块的自身类的Friend类,以使所述目标窗口类能够调用所述交互模块的自身类。

优选地,

进一步包括:在所述目标窗口类中创建目标接口;

通过所述目标窗口类中的所述目标接口接收所述交互模块的自身类传入的所述交互模块的自身类的指针;

在所述通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用之前,进一步包括:

通过所述目标窗口类的所述目标接口接收到的所述指针,确定所述交互模块的自身类。

优选地,

所述交互模块包括:OCX(Object Linking and Embedding(OLE)Control Extension,对象类别扩充组件)控件;

所述交互模块的自身类包括:所述OCX控件的自身类。

第二方面,本发明实施例提供了一种交互模块,包括:第一创建单元及窗口单元,其中,

所述第一创建单元,用于在所述交互模块中创建目标窗口类;

所述窗口单元,用于通过所述第一创建单元创建的所述目标窗口类,接收底层动态库发来的至少一个目标消息;通过所述目标窗口类生成每个所述目标消息对应的目标事件;通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用。

优选地,进一步包括:设置单元,用于将所述第一创建单元创建的所述目标窗口类设置为所述交互模块的自身类的Friend类,以使所述目标窗口类能够调用所述交互模块的自身类。

优选地,

进一步包括:第二创建单元和交互模块的自身类,其中,

所述第二创建单元,用于在所述第一创建单元创建的所述目标窗口类中创建目标接口;

所述处理单元,用于将所述交互模块的自身类的指针传给所述窗口单元;

所述窗口单元,用于通过所述第二创建单元在所述目标窗口类中创建的所述目标接口,接收通过所述处理单元传入的所述交互模块的自身类的指针;并通过所述目标窗口类的所述目标接口接收到的所述指针,确定所述交互模块的自身类。

优选地,

所述交互模块包括:对象类别扩充组件OCX控件;

所述交互模块的自身类包括:所述OCX控件的自身类。

优选地,

进一步包括:初始化单元,用于利用所述交互模块的自身类对所述第一创建单元创建的所述目标窗口类进行初始化。

第三方面,本发明实施例提供了一种驱动装置,包括:上述任一所述的交互模块和底层动态库,其中,

所述底层动态库,用于根据外部的设备运行状态,向所述交互模块发送至少一个目标消息。

本发明实施例提供了一种驱动层消息处理方法、交互模块及驱动装置,通过预先在驱动层的与上层应用交互的交互模块中创建目标窗口类,那在接收到底层动态库发来的至少一个目标消息后,就可以通过所述目标窗口类调用交互模块的自身类,将针对每个目标消息生成的目标事件发送给上层应用。由于上层应用通过采用非标准接口调用,即以目标窗口类直接调用交互模块的自身类向上层应用发送事件的实现方式,这样,实现方式简单,且能够有效解决事件堆积的情况,因此,提高了驱动层的执行效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种驱动层消息处理的方法流程图;

图2是本发明另一个实施例提供的一种驱动层消息处理的方法流程图;

图3是本发明实施例提供的交互模块所在设备的硬件架构图;

图4是本发明一个实施例提供的一种交互模块的结构示意图;

图5是本发明另一个实施例提供的一种交互模块的结构示意图;

图6是本发明再一个实施例提供的一种交互模块的结构示意图;

图7是本发明又一个实施例提供的一种交互模块的结构示意图;

图8是本发明一个实施例提供的一种驱动装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种驱动层消息处理方法,应用于驱动层的与上层应用交互的交互模块中,该方法可以包括以下步骤:

步骤101:预先在所述交互模块中创建目标窗口类。

步骤102:通过所述目标窗口类接收底层动态库发来的至少一个目标消息。

步骤103:通过所述目标窗口类生成每个所述目标消息对应的目标事件。

步骤104:通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用。

在本发明一个实施例中,通过预先在驱动层的与上层应用交互的交互模块中创建目标窗口类,那在接收到底层动态库发来的至少一个目标消息后,就可以通过所述目标窗口类调用交互模块的自身类,将针对每个目标消息生成的目标事件发送给上层应用。由于上层应用通过采用非标准接口调用,即以目标窗口类直接调用交互模块的自身类向上层应用发送事件的实现方式,这样,实现方式简单,且能够有效解决事件堆积的情况,因此,提高了驱动层的执行效率。

在本发明一个实施例中,为了使预先创建的目标窗口类能够使用交互模块的自身类及减少冗余,以利用交互模块的自身类将每个事件发送给上层应用,在所述步骤104之前,可进一步包括:将所述目标窗口类设置为所述交互模块的自身类的Friend类,以使所述目标窗口类能够调用所述交互模块的自身类。

其中,目标窗口类设置交互模块的自身类的Friend类的过程可在所述步骤101之前进行设置。下面为方便对Friend类进行说明,将预先创建的目标窗口类记为B类,交互模块的自身类记为A类。一般情况下,如果不想A类公开,那就会用关键字private进行修饰,但是在本发明实施例中,为了能够较少冗余,并且使B类能够对A类进行使用,所以在可在交互模块中将B类声明为A类的友元类,即Friend类,这样,即使B类不属于A类,但是却能够正常使用A类。

通过将目标窗口类设置为所述交互模块的自身类的Friend类,也即在目标窗口类和交互模块的自身类之间建立了Friend关系,这样,在减少冗余的同时,还能够使目标窗口类使用交互模块的自身类,为之后通过交互模块的自身类发送事件给上层应用奠定了基础。

在本发明一个实施例中,为了使创建的目标窗口类能够通过交互模块的自身类将每个事件发送给上层应用,可进一步包括:在所述目标窗口类中创建目标接口;通过所述目标窗口类中的所述目标接口接收所述交互模块的自身类传入的所述交互模块的自身类的指针;在所述步骤104之前,可进一步包括:通过所述目标窗口类的所述目标接口接收到的所述指针,确定所述交互模块的自身类。

其中,该目标接口可在所述步骤101之前进行创建,可以是在预先创建目标窗口类时,与该目标窗口类同时创建,且该目标接口应该对应一个接口函数,那该接口函数的主要功能就是把交互模块的自身类的指针传入到目标窗口类中。例如,该接口函数可以为SendMessage(...);也即交互模块的自身类的指针通过该函数传入到目标窗口类中。

为方便进行说明,以创建的目标接口用c表示,那在交互模块的自身类在向目标窗口类传指针之前,可首先调用已创建的目标接口c,然后再通过接口函数,如,SendMessage(...)实现指针的传入。其中,交互模块的自身类的指针的功能主要是便于在目标窗口类中实现事件发送给上层应用。且交互模块的自身类的指针传入到目标窗口类的过程可建立在已设置Friend类的基础上实现,以此,通过指针使目标窗口类能够很方便的确定交互模块的自身类,从而就可以很高效的通过交互模块的自身类将每个事件发送给上层应用。

通过在目标窗口类中创建目标接口,这样交互模块的自身类的指针就可以通过该目标接口传入到预先创建的目标窗口类中,那目标窗口类在接收到该指针后,就可以根据该指针确定交互模块的自身类,以在目标窗口类中通过调用定交互模块的自身类实现将每个事件发送给上层应用,这样,一方面,通过简单的实现方式减少了冗余,提高了驱动层的执行效率;另一方面,针对目标窗口类每次接收到的至少一个消息,并生成每个消息对应的事件后,就可以在目标窗口类中根据指针,及时将每个事件发送给上层应用,无需堆积等待,以便上层能够准确的显示设备的实际情况,从而也提高了驱动层的执行效率,除此之外,对于上层应用的响应也更加及时。

在本发明一个实施例中,所述交互模块包括:对象类别扩充组件OCX控件;所述交互模块的自身类包括:所述OCX控件的自身类。

其中,该交互模块可根据用户需求进行设定,那在本发明实施例中,实现驱动层的与上层应用的交互模块可以通过OCX控件实现。通过在OCX控件内部创建一个窗口类,实现接收底层动态库的消息,并在窗口类中完成OCX控件的自身类发送事件给上层应用的功能。

通过OCX控件,可实现与底层动态库以及与上层应用的交互过程,从而能够将从底层动态库接收到的至少一个消息转变为对应的事件后,发送给上层应用。

除此之外,本发明实施例也具有很好的兼容性,那如果之后会有接口的变动和调整,则只需针对交互模块(可为OCX控件)做调整即可。而且对于上层应用而言,由于在本发明实施例中并未采用标准接口调用,从而使得整个调用方式更加灵活、方便,便于逻辑流程的控制,增加了票据处理的灵活性。

下面为方便进行描述,以交互模块的自身类记为A类、预先在交互模块中创建的目标窗口类记为B类、预先在目标窗口类B类中创建的目标接口为为B.c接口为例,对本发明实施例提供的一种驱动层消息处理方法进行详细说明,如图2所示,该方法可以包括以下步骤:

步骤201:预先在交互模块中创建目标窗口类B类。

在底层动态库与交互模块(如,OCX控件)之间,为了实现消息的交互或传递,可通过一个窗口完成两层驱动程序的通信,且在本发明实施例中上层应用是采用非标准接口调用驱动层的交互模块,所以就可在与上层应用交互的驱动层的交互模块中创建一个目标窗口类B类,用来接收底层发送的消息并将消息对应的事件发送给上层应用。

本发明实施例中的交互模块可以包括多种,其中一种为为OCX控件,那么相应的交互模块的自身类A类为OCX控件的自身类。

步骤202:预先在B类中创建目标接口B.c。

在本发明实施例中,通过在B类中创建B.c接口,主要是用于将交互模块的自身类A类的指针传入到B类中,之后B类在接收到底层动态库发来的消息后,就可以根据B.c接口接收到的A类的指针,将消息对应的事件发送给上层应用,以使上层应用能够准确地显示设备的实际运行情况。

另外,为不影响其它功能的实现,在A类中也会创建其它相应的接口,从而上层应用可以通过直接调用A类中的这些接口实现相应的其它功能。

步骤203:预先将B类设置为交互模块的自身类A类的Friend类。

为了能够使B类根据B.c接口接收到的A类的指针,将消息对应的事件发送给上层应用,还应预先将B类设置为A类的Friend类,这个过程可通过在交互模块中将B类定义为Friend类实现,从而无论A类对应的关键字是公开的public、受保护的protected或是私有的privated,B类都能够正常使用A类。

步骤204:预先在A类中初始化B类。

对预先创建的B类的初始化是在A类中进行的。在本发明实施例中,A类对应的是交互模块的主进程,而B类对应的是交互模块的非主进程,从而,需要在A类中对B类进行初始化。

步骤205:A类预先调用B类中的B.c接口。

其中,通过A类调用B类的接口实现A类的指针传入B类中为一种常用方法,实现方法不固定,也可通过其它方式实现,那在本发明实施例中,是通过A类调用B类接口的形式实现。

步骤206:A类预先通过B.c接口将A类的指针传入到B类中。

可在A类和B类之间建立友好关系后的基础上,进行传参的过程,也即本发明实施例中A类的指针传入B类的实现过程。

其中,指针可以包括:指针的类型、指针所指向的类型、指针的值(指针所指向的内存区)等,通过该指针B类就可以确定A类,进而在B类中通过A类实现事件发送给上层应用的过程。

步骤207:B类预先通过B.c接口接收A类传入的A类的指针。

步骤208:底层动态库根据外部的设备运行状态,向B类发送N(N≥1)个消息。

底层动态库是整个操作系统的底层,直接与硬件设备打交道,因此,当外部设备的运行状态有相应的改变时,底层动态库都会捕捉到,从而就会以消息的形式发送给本发明实施例中的驱动层中的交互模块中预先创建的目标窗口类B类。

步骤209:B类接收底层动态库发来的N个消息。

该过程的实现,可以通过预先在B类中设置一个消息接收函数来实现,通过该函数接收底层动态库发来的1至N个消息。

步骤210:通过B类生成N个消息分别对应的事件。

在本发明实施例中,当底层动态库向驱动层的交互模块发送消息后,会由交互模块转发给上层应用,但是由于上层应用对于消息无法识别,而可识别事件,因此,还需要交互模块中的B类将接收到的消息转换成上层应用可识别的事件。

在本发明实施例中,当B类的消息接收函数接收到N个消息后,可根据消息号,生成每个消息分别对应的事件。

步骤211:B类通过B.c接口接收到的A类的指针,确定A类。

一般情况下,由于B类是窗口类,对应的是非主线程,所以无法将事件发送给上层应用,因此,可通过在B类中使用A类,进行事件的发送。那在本发明实施例中,就可根据上述步骤206中提到的指针包括的内存区、类型等可以很容易的确定到A类。

步骤212:在B类中,通过确定的A类将生成的N个事件分别发送给上层应用。

针对本发明实施例中的N个事件中的每个事件,都可以在B类中通过确定的A类及时的发送给上层应用,以使上层应用能够准确地显示外部设备的实际运行情况,从而实现票据的处理。

如图3、图4所示,本发明实施例提供了一种交互模块。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的交互模块所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种交互模块,包括:

第一创建单元401及窗口单元402,其中,

所述第一创建单元401,用于在所述交互模块中创建目标窗口类;

所述窗口单元402,用于通过所述第一创建单元401创建的所述目标窗口类,接收底层动态库发来的至少一个目标消息;通过所述目标窗口类生成每个所述目标消息对应的目标事件;通过所述目标窗口类调用所述交互模块的自身类,将每个所述目标事件发送给所述上层应用。

如图5所示,在本发明一个实施例中,为了使预先创建的目标窗口类能够使用交互模块的自身类及减少冗余,以利用交互模块的自身类将每个事件发送给上层应用,进一步包括:设置单元501,用于将所述第一创建单元401创建的所述目标窗口类设置为所述交互模块的自身类的Friend类,以使所述目标窗口类能够调用所述交互模块的自身类。

如图6所示,在本发明一个实施例中,为了使创建的目标窗口类能够通过交互模块的自身类将每个事件发送给上层应用,那在图5的基础上,可进一步包括:第二创建单元601和交互模块的自身类602,其中,

所述第二创建单元601,用于在所述第一创建单元401创建的所述目标窗口类中创建目标接口;

所述处理单元602,用于将所述交互模块的自身类的指针传给所述窗口单元;

所述窗口单元402,用于通过所述第二创建单元601在所述目标窗口类中创建的所述目标接口,接收通过所述处理单元602传入的所述交互模块的自身类的指针;并通过所述目标窗口类的所述目标接口接收到的所述指针,确定所述交互模块的自身类。

在本发明一个实施例中,所述交互模块包括:对象类别扩充组件OCX控件;所述交互模块的自身类包括:所述OCX控件的自身类。

如图7所示,在本发明一个实施例中,进一步包括:初始化单元701,用于利用所述交互模块的自身类对所述第一创建单元401创建的所述目标窗口类进行初始化。

如图8所示,本发明实施例提供了一种驱动装置,包括:上述任一所述的交互模块801和底层动态库802,其中,

所述底层动态库802,用于根据外部的设备运行状态,向所述交互模块801发送至少一个目标消息。

综上,本发明各个实施例至少具有如下有益效果:

1、在本发明实施例中,通过预先在驱动层的与上层应用交互的交互模块中创建目标窗口类,那在接收到底层动态库发来的至少一个目标消息后,就可以通过所述目标窗口类调用交互模块的自身类,将针对每个目标消息生成的目标事件发送给上层应用。由于上层应用通过采用非标准接口调用,即以目标窗口类直接调用交互模块的自身类向上层应用发送事件的实现方式,这样,实现方式简单,且能够有效解决事件堆积的情况,因此,提高了驱动层的执行效率

2、在本发明实施例中,通过将目标窗口类设置为所述交互模块的自身类的Friend类,也即在目标窗口类和交互模块的自身类之间建立了Friend关系,这样,在减少冗余的同时,还能够使目标窗口类使用交互模块的自身类,为之后通过交互模块的自身类发送事件给上层应用奠定了基础。

3、在本发明实施例中,通过在目标窗口类中创建目标接口,这样交互模块的自身类的指针就可以通过该目标接口传入到预先创建的目标窗口类中,那目标窗口类在接收到该指针后,就可以根据该指针确定交互模块的自身类,以在目标窗口类中通过调用定交互模块的自身类实现将每个事件发送给上层应用,这样,一方面,通过简单的实现方式减少了冗余,提高了驱动层的执行效率;另一方面,针对目标窗口类每次接收到的至少一个消息,并生成每个消息对应的事件后,就可以在目标窗口类中根据指针,及时将每个事件发送给上层应用,无需堆积等待,以便上层能够准确的显示设备的实际情况,从而也提高了驱动层的执行效率,除此之外,对于上层应用的响应也更加及时。

4、在本发明实施例中,通过OCX控件,可实现与底层动态库以及与上层应用的交互过程,从而能够将从底层动态库接收到的至少一个消息转变为对应的事件后,发送给上层应用。

5、在本发明实施例中,本发明实施例也具有很好的兼容性,那如果之后会有接口的变动和调整,则只需针对交互模块(可为OCX控件)做调整即可。而且对于上层应用而言,由于在本发明实施例中并未采用标准接口调用,从而使得整个调用方式更加灵活、方便,便于逻辑流程的控制,增加了票据处理的灵活性。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1