CN102866925B - 一种中间件与用户界面的通信方法和系统 - Google Patents
一种中间件与用户界面的通信方法和系统 Download PDFInfo
- Publication number
- CN102866925B CN102866925B CN201210327574.0A CN201210327574A CN102866925B CN 102866925 B CN102866925 B CN 102866925B CN 201210327574 A CN201210327574 A CN 201210327574A CN 102866925 B CN102866925 B CN 102866925B
- Authority
- CN
- China
- Prior art keywords
- module
- function
- user
- subscriber interface
- middleware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明涉及一种中间件与用户界面的通信方法和系统。该系统包括中间件的多个中间件模块、用户界面的多个用户界面模块、以及与多个中间件模块一一对应的多个用户功能模块,每一个用户功能模块设立有全局回调函数、公有函数和信号,每一个用户界面模块设立有各自的槽。该方法包括步骤:S1、每一个中间件模块在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;S2、被调用的全局回调函数调用其所属的用户功能模块中的公有函数,被调用的公有函数将其所属的用户功能模块中的信号发射到关联的用户界面模块;S3、关联的用户界面模块通过其槽接收信号并作出相应的响应处理。实施本发明,可以达成中间件与用户界面的高效通信。
Description
技术领域
本发明涉及机顶盒的通信技术,尤其涉及一种机顶盒中的中间件与用户界面的通信方法和系统。
背景技术
随着数字电视的普及,机顶盒进入了千家万户,不仅成为了人们日常生活中必不可少的数字电视接收终端,更是被定义成家庭娱乐中心的载体。因为功能越来越多,所需的用户界面也越来越复杂。不少公司倾向于采用跨平台的图形用户界面开发框架QT来实现其用户界面,而在业务功能的实现上则采用基于C语言开发的中间件软件。
中间件是基础软件的一大类,属于可复用软件的范畴,它处于操作系统软件和应用软件的中间,能够屏蔽操作系统的复杂性为应用程序提供一个相对稳定的高层应用环境。中间件能够为应用程序提供多种通信机制,为了使通信接口尽可能地通用,在现有技术中,中间件与用户界面的通信是通过采用较庞大的TCP/IP协议来实现的。
TCP/IP协议即传输控制协议/因特网互联协议,协议采用4层结构:网络接口层、网络层、传输层、应用层,每一层都呼叫它的一下层所提供的服务来完成自己的需求。IP协议本身是不可靠的,需要TCP协议来保证其通信的可靠性,TCP连接的建立需要经过“三次握手”的过程,而数据的发送和接收需要经过多层的打包和解包的过程。
因此,受机顶盒主芯片性能的限制,采用TCP/IP协议来实现基于C语言开发的中间件与基于QT开发的用户界面的通信的效率往往比较低下,导致用户界面更新的速度较慢或不够实时。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述因采用TCP/IP协议导致的基于C语言开发的中间件与基于QT开发的用户界面之间通信效率不高的缺陷,提供一种中间件与用户界面的通信方法和系统,可以实现中间件与用户界面的高效通信。
本发明解决其技术问题所采用的技术方案是:提供一种中间件与用户界面的通信方法,其中,中间件包括多个中间件模块,用户界面包括多个用户界面模块,预先创建与多个中间件模块一一对应的多个用户功能模块,为每一个用户功能模块设立各自的全局回调函数、公有函数和信号,为每一个用户界面模块设立各自的槽,该通信方法包括步骤::
S1、每一个中间件模块在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;
S2、被调用的全局回调函数调用其所属的用户功能模块中的公有函数;而被调用的公有函数将其所属的用户功能模块中的信号发射到关联的用户界面模块;
S3、关联的用户界面模块通过其槽接收该信号并作出相应的响应处理;
其中,所述多个用户功能模块与所述多个用户界面模块之间是基于QT的信号与槽机制来建立连接的,所述连接是通过设立用户界面模块管理类和用户功能模块管理类来实现的;
所述用户界面模块管理类维护一个用户界面模块管理列表,所述用户界面模块管理列表包括多个用户界面模块ID和多个用户界面模块指针,所述多个用户界面模块ID与所述多个用户界面模块指针一一对应,所述多个用户界面模块指针与所述多个用户界面模块一一对应;所述用户功能模块管理类维护一个用户功能模块管理列表,所述用户功能模块管理列表包括多个用户功能模块ID和多个用户功能模块指针,所述多个用户功能模块ID与所述多个用户功能模块指针一一对应,所述多个用户功能模块指针与所述多个用户功能模块一一对应;所述用户功能模块管理类提供连接函数和断开函数,所述连接函数是根据相应的用户功能模块ID和用户界面模块ID来建立相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的,所述断开函数是根据相应的用户功能模块ID和用户界面ID模块来断开相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的。
在本发明所述的中间件与用户界面的通信方法中,全局回调函数预先注册到中间件模块,注册方法包括:
为每一个中间件模块设立一个注册回调函数;
为每一个用户功能模块设立一个注册函数;
每一个用户功能模块通过其注册函数调用对应的中间件模块中的注册回调函数以将其全局回调函数注册到对应的中间件模块中。
在本发明所述的中间件与用户界面的通信方法中,用户功能模块管理列表还包括与多个用户功能模块一一对应的多个连接信息,每一个连接信息均包括关联的信号与槽之间的连接计数和连接状态。
本发明还提供一种中间件与用户界面的通信系统,该通信系统包括:
中间件的多个中间件模块、用户界面的多个用户界面模块、以及与多个中间件模块一一对应的多个用户功能模块,每一个用户功能模块均设立有各自的全局回调函数、公有函数和信号,每一个用户界面模块均设立有各自的槽,其中:
每一个中间件模块均用于在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;
每一个用户功能模块均用于在其全局回调函数被调用时通过其全局回调函数调用其公有函数,以及在其公有函数被调用时通过其公有函数将其信号发射到关联的用户界面模块;
每一个用户界面模块用于通过其槽接收关联的用户功能模块所发射的信号并作出相应的响应处理;
其中,多个用户功能模块与所多个用户界面模块之间是基于QT的信号与槽机制来建立连接的,该连接是通过用户界面模块管理类和用户功能模块管理类来实现的;
用户界面模块管理类维护一个用户界面模块管理列表,用户界面模块管理列表包括多个用户界面模块ID和多个用户界面模块指针,多个用户界面模块ID与多个用户界面模块指针一一对应,多个用户界面模块指针与多个用户界面模块一一对应;用户功能模块管理类维护一个用户功能模块管理列表,用户功能模块管理列表包括多个用户功能模块ID和多个用户功能模块指针,多个用户功能模块ID与多个用户功能模块指针一一对应,多个用户功能模块指针与多个用户功能模块一一对应;用户功能模块管理类提供连接函数和断开函数,连接函数是根据相应的用户功能模块ID和用户界面模块ID来建立相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的,断开函数是根据相应的用户功能模块ID和用户界面ID模块来断开相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的。
在本发明所述的中间件与用户界面的通信系统中,每一个中间件模块均设立有各自的注册回调函数,每一个用户功能模块还均设立有各自的注册函数,每一个用户功能模块是通过其注册函数调用对应的中间件模块中的注册回调函数以将其全局回调函数注册到对应的中间件模块的。
在本发明所述的中间件与用户界面的通信系统中,用户功能模块管理列表还包括与多个用户功能模块一一对应的多个连接信息,每一个连接信息均包括关联的信号与槽之间的连接计数和连接状态。
实施本发明的技术方案,具有以下技术效果:通过预先创建多个用户功能模块以作为中间件的多个中间件模块与用户界面的多个用户界面模块之间通信的桥梁,利用函数调用及回调,以及采用QT的信号与槽机制,实现了中间件与用户界面的通信,由于函数调用及回调的时间开销和QT的信号槽机制的时候开销很小,不必通过多层的协议解析,从而实现中间件与用户界面的高效通信。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是根据本发明一个实施例的中间件与用户界面的通信系统的结构示意图;
图2是根据本发明一个实施例的建立用户功能模块与用户界面模块的连接的流程图;
图3是根据本发明一个实施例的中间件与用户界面的通信方法的流程图。
具体实施方式
本发明是一种由计算机程序来实现的技术方案。在机顶盒中,其中间件包括多个中间件模块,用户界面包括多个用户界面模块,通过预先创建与多个中间件模块一一对应的多个用户功能模块以作为多个中间件模块与多个用户界面模块之间通信的桥梁,并为每一个用户功能模块设立各自的全局回调函数、公有函数和信号,为每一个用户界面模块设立各自的槽,来实现机顶盒中的基于C语言开发的中间件与基于QT开发的用户界面的通信。
图1是根据本发明一个实施例的中间件与用户界面的通信系统的结构示意图。本发明的通信系统包括中间件的多个中间件模块、用户界面的多个用户界面模块、以及与多个中间件模块一一对应的多个用户功能模块。其中,每一个中间件模块与对应的用户功能模块之间是利用函数调用及回调来实现通信的,而多个用户功能模块与多个用户界面模块之间是基于QT的信号与槽机制来建立连接的,此连接是通过自定义的用户功能管理类以及用户界面管理类来实现的。在实现中间件与用户界面之间的通信之前,需要预先创建多个中间件模块、多个用户功能模块和多个用户界面模块,并自定义用户功能管理类和用户界面管理类,具体如下:
一、基于C语言创建对应于中间件的业务功能的中间件模块,该中间件模块实质上是一个类。例如,对应于中间件的第一业务功能,创建第一中间件模块;对应于中间件的第二业务功能,创建第二中间件模块;以此类推,对应于中间件的第m业务功能(m为自然数),创建第m中间件模块。这样,所创建的m个中间件模块与中间件的m个业务功能一一对应。这里的中间件的业务功能可以是USB业务功能、CI卡业务功能等。在本发明的实施例中,为每一个中间件模块设立各自的注册回调函数和业务函数等接口函数,该注册回调函数用于实现回调函数的注册,该业务函数用于得到相应的业务信息,例如,通过业务函数BLL_USB_GetFileList()可以得到U盘的文件信息。
二、基于QT开发平台的QObject类创建对应于中间件模块的用户功能模块,该用户功能模块实质上是一个类。例如,对应于第一中间件模块,创建第一用户功能模块;对应于第二中间件模块,创建第二用户功能模块;以此类推,对应于第m中间件模块,创建第m用户功能模块。这样,所创建的m个用户功能模块与m个中间件模块一一对应。为每一个用户功能模块均设立各自的注册函数、全局回调函数、公有函数和信号等。每一个用户功能模块通过其注册函数调用对应的中间件模块中的注册回调函数以将其全局回调函数注册到对应的中间件模块,例如,第一用户功能模块通过第一用户功能模块中的注册函数调用第一中间件模块中的注册回调函数以将第一用户功能模块中的全局回调函数注册到第一中间件模块。这样,当中间件的第一业务功能的业务事件发生时(例如,当U盘插入时),系统消息触发第一中间件模块去调用第一用户功能模块中的全局回调函数。为每一个用户功能模块还均设立功能函数,该功能函数可以调用对应的中间件模块中的业务函数以得到相应的业务信息,即该功能函数封装对应的中间件模块中的业务函数以得到相应的业务信息。
三、基于QT开发平台的QObject类创建对应于用户界面(窗口)的用户界面模块,该用户功能模块实质上是一个类。例如,对应于第一用户界面,创建第一用户界面模块;对应于第二用户界面,创建第二用户界面模块;以此类推,对应于第n用户界面,创建第n用户界面模块。这样,所创建的n个用户界面模块与n个用户界面一一对应。在本发明的实施例中,为每一个用户界面模块均设立各自的槽。
四、自定义用户界面管理类。用户界面管理类不继承于任何QT类。在用户界面管理类中为每一个用户界面模块分配一个用户界面模块ID,用户界面管理类维护一个用户界面管理列表,该用户界面管理列表包括多个用户界面模块ID和多个用户界面模块指针,其中,多个用户界面模块ID与多个用户界面模块指针一一对应,多个用户界面模块指针与多个用户界面模块一一对应,这里的用户界面模块指针是指用户界面模块创建时得到的指针。这样,可以通过一个用户界面模块ID找到相应的用户界面模块指针所指向的用户界面模块。如图1所示,用户界面管理列表包括ID_1、ID_2、…、ID_n,还包括指针_1、指针_2、…、指针_3,其中,ID_1表示第一用户界面模块的用户界面模块ID,ID_2表示第二用户界面模块的用户界面模块ID,以此类推,ID_n表示第n用户界面模块的用户界面模块ID;指针_1表示第一用户界面模块的指针,指针_2表示第二用户界面模块的指针,以此类推,指针_n表示第n用户界面模块的指针。其中,ID_1与指针_1对应,指针_1指向第一用户界面模块,通过ID_1可以找到第一用户界面模块;ID_2与指针_2对应,指针_2指向第二用户界面模块,通过ID_2可以找到第二用户界面模块;以此类推,ID_n与指针_n对应,指针_n指向第n用户界面模块,通过ID_n可以找到第n用户界面模块。
五、自定义用户功能管理类。用户功能管理类不继承于任何QT类。在用户功能管理类中为每一个用户功能模块分配一个用户功能模块ID,用户功能管理类维护一个用户功能管理列表,该用户功能管理列表包括多个用户功能模块ID和多个用户功能模块指针,其中,多个用户功能模块ID与多个用户功能模块指针一一对应,多个用户功能模块指针与多个用户功能模块一一对应,这里的用户功能模块指针是指用户功能模块创建时得到的指针。
这样,可以通过一个用户功能模块ID找到相应的用户功能模块指针所指向的用户功能模块。如图1所示,用户功能管理列表包括ID1、ID2、…、IDm,还包括指针1、指针2、…、指针3,其中,ID1表示第一用户功能模块的用户功能模块ID,ID2表示第二用户功能模块的用户功能模块ID,以此类推,IDm表示第m用户功能模块的用户功能模块ID;指针1表示第一用户功能模块的指针,指针2表示第二用户功能模块的指针,以此类推,指针m表示第m用户功能模块的指针。其中,ID1与指针1对应,指针1指向第一用户功能模块,通过ID1可以找到第一用户功能模块;ID2与指针2对应,指针2指向第二用户功能模块,通过ID2可以找到第二用户功能模块;以此类推,IDm与指针m对应,指针m指向第m用户功能模块,通过IDm可以找到第m用户功能模块。
用户功能管理列表还包括与多个用户功能模块一一对应的多个连接信息,每一个连接信息均包括关联的信号与槽之间的连接计数和连接状态。如图1所示,用户功能管理列表包括m个连接信息:第一连接信息、第二连接信息、…、第m连接信息。例如,若第一用户功能模块的信号与第一用户界面模块中的槽已建立连接,则在第一连接信息中,第一用户功能模块的信号与第一用户界面模块中的槽之间的连接计数设置为1,连接状态设置为已连接;若第一用户功能模块的信号与第一用户界面模块中的槽未建立连接,则在第一连接信息中,第一用户功能模块的信号与第一用户界面模块中的槽之间的连接计数设置为0,连接状态设置为未连接。同理,若第一用户功能模块与第二用户界面模块已建立连接,则在第一连接信息中,第一用户功能模块的信号与第二用户界面模块中的槽之间的连接计数设置为1,连接状态设置为已连接;若第一用户功能模块的信号与第二用户界面模块中的槽未建立连接,则在第一连接信息中,第一用户功能模块的信号与第二用户界面模块中的槽之间的连接计数设置为0,连接状态设置为未连接。在本发明的实施例中,用户功能模块与用户界面模块之间的连接是基于QT的信号与槽机制实现的,一个用户功能模块能够和一个用户界面模块连接或断开,一个用户功能模块也能够和多个用户界面模块连接或断开,多个用户功能模块也能够和一个用户界面模块连接或断开。
此外,用户功能模块管理类还提供连接函数connectBllApp()和断开函数disconnectBllApp(),其中,传入连接函数connectBllApp()或断开函数disconnectBllApp()的参数包括用户功能模块ID和用户界面模块ID。连接函数connectBllApp()是根据相应的用户功能模块ID和用户界面模块ID来建立相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的;断开函数disconnectBllApp()是根据相应的用户功能模块ID和用户界面ID模块来断开相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的。
这样,当中间件与用户界面进行通信时,每一个中间件模块均用于在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;每一个用户功能模块均用于在其全局回调函数被调用时通过其全局回调函数调用其公有函数,以及在其公有函数被调用时通过其公有函数将其信号发射到关联的用户界面模块;每一个用户界面模块用于通过其槽接收关联的用户功能模块所发射的信号并作出相应的响应处理。
图2是根据本发明一个实施例的建立用户功能模块与用户界面模块的连接的流程图。在中间件与用户界面通信前,要先建立用户功能模块的信号和用户界面模块的槽之间的连接。如图2所示,用户功能模块与用户界面模块的连接的建立开始于步骤1001,在步骤1001中,根据传入连接函数connectBllApp()的参数中的用户功能模块ID在用户功能模块管理列表中查找对应的用户功能模块指针,若找到对应的用户功能模块指针,则进入步骤1002;若没有找到对应的用户功能模块指针,则连接失败。
在步骤1002中,根据传入连接函数connectBllApp()的参数中的用户界面模块ID在用户界面模块管理列表中查找对应的用户界面模块指针,若找到对应的用户界面模块指针,则进入步骤1003;若没有找到对应的用户界面模块指针,则连接失败。
在步骤1003中,判断相应的信号和槽的连接计数是否为0,即判断所找到的用户功能模块指针所指向的用户功能模块中的信号和所找到的用户界面模块指针所指向的用户界面模块中的槽的连接计数是否为0。若为0,即表示该信号和槽未建立连接,则进入步骤1004;若不是0而是1,即表示该信号和槽已建立连接,则提示重复连接。
在步骤1004中,结合QT提供的connect()函数实际连接相应的用户界面模块的信号和相应的用户界面模块中的槽,继而进入步骤1005。
在步骤1005中,将用户功能管理列表中相应的连接信息中的连接状态设置为已连接,连接计数加一。
这样,相应的用户界面模块的信号和相应的用户界面模块中的槽连接成功,为随后的中间件与用户界面的通信提供信号与槽连接的基础,以使得在中间件与用户界面通信时,相应的用户功能模块可以将信号发射到相应的用户界面模块中的槽。当不需要用户功能模块的功能时,通过断开函数disconnectBllApp()断开相应的用户功能模块和用户界面模块之间的连接,并使相应的信号和槽的连接计数减一。这样,通过ID管理机制来管理信号与槽之间的连接,提高了通信连接和断开的灵活性。
图3是根据本发明一个实施例的实现中间件与用户界面通信的方法的流程图。在本发明的实施例中,预先创建与多个中间件模块一一对应的多个用户功能模块,为每一个用户功能模块设立各自的全局回调函数、公有函数和信号,为每一个用户界面模块设立各自的槽。该通信方法包括以下步骤:
S1、每一个中间件模块在其特定的事件发生时调用与其对应的用户功能模块中的全局回调函数;
S2、被调用的全局回调函数调用其所属的用户功能模块中的公有函数,而被调用的公有函数将其所属的用户功能模块中的信号发射到关联的用户界面模块;
S3、关联的用户界面模块通过其槽接收该信号并作出相应的响应处理。
例如,结合图1,假设在中间件与用户界面通信之前,第一用户功能模块中的信号是与第一用户界面模块中的槽建立好连接的,则当第一业务功能的业务事件发生时(例如U盘插入时),系统消息触发第一中间件模块去调用第一用户功能模块中的全局回调函数,该被调用的全局回调函数通过用户功能管理类得到第一用户功能模块的指针,并通过该指针去调用第一用户功能模块中的公有函数,该公有函数将第一用户功能模块中的信号发射到第一用户界面模块中的槽,第一用户界面模块通过其槽接收第一用户功能模块中的信号并根据该信号的参数所携带的通信数据作出相应的响应处理,第一用户界面模块可以通过本身的函数作出相应的响应处理,也可以通过调用对应的用户功能模块所封装的中间件模块的业务函数以得到相应的业务信息以作出相应的响应处理。
这样,对于中间件模块到用户界面模块方向的通信,当某一业务功能的业务事件发生时,系统消息触发中间件模块去调用注册到其中的全局回调函数,全局回调函数调用其所属用户功能模块的一个公有函数,公有函数将信号发送给已与该用户功能模块建立连接的用户界面模块的一个槽,其中的通信数据由信号的参数所携带。对于用户界面模块到中间件模块方向的通信,用户界面模块通过其槽接收用户功能模块发射出的信号后,通过调用用户功能模块所封装的中间件模块的函数的方式来实现相应的响应处理,其中的通信数据由函数的参数所携带。
为了进一步说明本发明,下面将举例来说明本发明是如何实现用户界面与中间件的通信的。
假定:一级界面为主窗口(Mainwindow),二级界面为多媒体浏览窗口(SubWinMedia),与此二界面相关的功能模块为USB功能模块(BllAppUSB),对应的USB中间件模块为BllUSB,USB中间件模块BllUSB中包括获取文件列表BLL_USB_GetFileList()(即上面所述的业务函数)和注册回调函数BLL_USB_RegisterCallBack()等接口函数,当U盘插入时,希望在主窗口(Mainwindow)右上方显示一个表示USB已插入的小图标,同时在多媒体浏览窗口(SubWinMedia)中更新多媒体文件的列表。
要达到上述功能,在一个较佳的实施例中是这样实现的:
1、基于C语言,创建中间件模块BllUSB,实现获取文件列表BLL_USB_GetFileList()和注册回调BLL_USB_RegisterCallBack()等接口函数。
2、基于QWidget新建主窗口Mainwindow类和多媒体浏览窗口类SubWinMedia。
3、在用户界面模块管理类WindowManager中增加一个Mainwindow类对应的ID:WID_MAINWINDOW和与SubWinMedia类对应的ID:WID_MEDIA。
4、基于QObject新建USB功能模块BllAppUSB类,在BllAppUSB类中包括有全局回调函数USB_EventCallback()、公有函数sendUSBEvent()和信号signalUSBEvent(),在BllAppUSB类中调用注册函数registerCallback()将全局回调函数USB_EventCallback()注册至USB中间件模块BllUSB,其中registerCallback()调用中间件模块BllUSB的BLL_USB_RegisterCallBack()函数;在BllAppUSB类中还包括实现获取文件列表的功能函数getFileList(),其中,getFileList()调用中间件模块BllUSB的BLL_USB_GetFileList()函数。
5、在用户功能模块管理类BllAppManager中增加一个USB模块ID:MID_USB。
6、在主窗口Mainwindow中建立一个槽slotUSBEvent1(),通过用户功能模块管理类BllAppManager提供的connectBllApp()接口去连接USB功能模块BllAppUSB类的信号signalUSBEvent(),并使槽slotUSBEvent1()与信号signalUSBEvent()的连接计数加一,其中传入connectBllApp()的参数为WID_MAINWINDOW和MID_USB。
7、当U盘插入时,USB功能模块BllAppUSB的全局回调函数USB_EventCallback()会被中间件调用,随后公有函数sendUSBEvent()被USB_EventCallback()调用,随后信号signalUSBEvent()被sendUSBEvent()发送,在主窗口Mainwindow的槽slotUSBEvent1()会接收到signalUSBEvent()信号,此时在主窗口右上方绘制一个表示USB已插入的小图标;同时在多媒体浏览窗口SubWinMedia的槽slotUSBEvent2()也会接收到signalUSBEvent()信号,此时调用USB中间件模块(BllUSB)的BLL_USB_GetFileList()得到U盘的文件信息并更新多媒体浏览窗口SubWinMedia的多媒体文件显示列表。
8、当退出多媒体浏览窗口SubWinMedia时,在其析构函数中通过调用用户功能模块管理类BllAppManager提供的disconnectBllApp()可断开多媒体浏览窗口SubWinMedia和USB功能模块BllAppUSB的连接,并使槽slotUSBEvent2()与信号signalUSBEvent()的连接计数减一。
上述实施例通过机顶盒的USB相关模块说明一个用户功能模块对应多个用户界面的情况,类似地,可以建立机顶盒的CI相关模块,达到:当CI卡插入时,希望在主窗口(Mainwindow)右上方显示一个表示CI已插入的小图标,同时在CI信息窗口(SubWinCAS)中更新CI信息的列表。对于用户界面模块Mainwindow而言,与USB用户功能模块BllAppUSB和CI用户功能模块BllAppCI都进行了连接,由此说明多个用户功能模块与一个用户界面连接的情况。本发明不局限于所公开的具体实施例。
实施本发明,由于函数调用及回调的时间开销和QT的信号槽机制的时候开销很小,不必通过多层的协议解析,从而实现中间件与用户界面的高效通信。
虽然本发明是通过具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或材料,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
Claims (6)
1.一种中间件与用户界面的通信方法,其特征在于,所述中间件包括多个中间件模块,所述用户界面包括多个用户界面模块,预先创建与多个中间件模块一一对应的多个用户功能模块,为每一个用户功能模块设立各自的全局回调函数、公有函数和信号,为每一个用户界面模块设立各自的槽,所述通信方法包括步骤:
S1、每一个中间件模块在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;
S2、被调用的全局回调函数调用其所属的用户功能模块中的公有函数,而被调用的公有函数将其所属的用户功能模块中的信号发射到关联的用户界面模块;
S3、关联的用户界面模块通过其槽接收所述信号并作出相应的响应处理;
其中,所述多个用户功能模块与所述多个用户界面模块之间是基于QT的信号与槽机制来建立连接的,所述连接是通过设立用户界面模块管理类和用户功能模块管理类来实现的;
所述用户界面模块管理类维护一个用户界面模块管理列表,所述用户界面模块管理列表包括多个用户界面模块ID和多个用户界面模块指针,所述多个用户界面模块ID与所述多个用户界面模块指针一一对应,所述多个用户界面模块指针与所述多个用户界面模块一一对应;所述用户功能模块管理类维护一个用户功能模块管理列表,所述用户功能模块管理列表包括多个用户功能模块ID和多个用户功能模块指针,所述多个用户功能模块ID与所述多个用户功能模块指针一一对应,所述多个用户功能模块指针与所述多个用户功能模块一一对应;所述用户功能模块管理类提供连接函数和断开函数,所述连接函数是根据相应的用户功能模块ID和用户界面模块ID来建立相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的,所述断开函数是根据相应的用户功能模块ID和用户界面ID模块来断开相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的。
2.根据权利要求1所述的中间件与用户界面的通信方法,其特征在于,所述全局回调函数预先注册到中间件模块,注册方法包括:
为每一个中间件模块设立一个注册回调函数;
为每一个用户功能模块设立一个注册函数;
每一个用户功能模块通过其注册函数调用对应的中间件模块中的注册回调函数以将其全局回调函数注册到对应的中间件模块中。
3.根据权利要求1所述的中间件与用户界面的通信方法,其特征在于,所述用户功能模块管理列表还包括与所述多个用户功能模块一一对应的多个连接信息,每一个连接信息均包括关联的信号与槽之间的连接计数和连接状态。
4.一种中间件与用户界面的通信系统,其特征在于,所述通信系统包括中间件的多个中间件模块、用户界面的多个用户界面模块、以及与多个中间件模块一一对应的多个用户功能模块,每一个用户功能模块均设立有各自的全局回调函数、公有函数和信号,每一个用户界面模块均设立有各自的槽,其中:
每一个中间件模块均用于在其特定的业务事件发生时调用与其对应的用户功能模块中的全局回调函数;
每一个用户功能模块均用于在其全局回调函数被调用时通过其全局回调函数调用其公有函数,以及在其公有函数被调用时通过其公有函数将其信号发射到关联的用户界面模块;
每一个用户界面模块用于通过其槽接收关联的用户功能模块所发射的信号并作出相应的响应处理;
其中,所述多个用户功能模块与所述多个用户界面模块之间是基于QT的信号与槽机制来建立连接的,所述连接是通过用户界面模块管理类和用户功能模块管理类来实现的;
所述用户界面模块管理类维护一个用户界面模块管理列表,所述用户界面模块管理列表包括多个用户界面模块ID和多个用户界面模块指针,所述多个用户界面模块ID与所述多个用户界面模块指针一一对应,所述多个用户界面模块指针与所述多个用户界面模块一一对应;所述用户功能模块管理类维护一个用户功能模块管理列表,所述用户功能模块管理列表包括多个用户功能模块ID和多个用户功能模块指针,所述多个用户功能模块ID与所述多个用户功能模块指针一一对应,所述多个用户功能模块指针与所述多个用户功能模块一一对应;所述用户功能模块管理类提供连接函数和断开函数,所述连接函数是根据相应的用户功能模块ID和用户界面模块ID来建立相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的,所述断开函数是根据相应的用户功能模块ID和用户界面ID模块来断开相应的用户功能模块中的信号与相应的用户界面模块中的槽的连接的。
5.根据权利要求4所述的中间件与用户界面的通信系统,其特征在于,每一个中间件模块均设立有各自的注册回调函数,每一个用户功能模块还均设立有各自的注册函数,每一个用户功能模块是通过其注册函数调用对应的中间件模块中的注册回调函数以将其全局回调函数注册到对应的中间件模块的。
6.根据权利要求4所述的中间件与用户界面的通信系统,其特征在于,所述用户功能模块管理列表还包括与所述多个用户功能模块一一对应的多个连接信息,每一个连接信息均包括关联的信号与槽之间的连接计数和连接状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210327574.0A CN102866925B (zh) | 2012-09-06 | 2012-09-06 | 一种中间件与用户界面的通信方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210327574.0A CN102866925B (zh) | 2012-09-06 | 2012-09-06 | 一种中间件与用户界面的通信方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102866925A CN102866925A (zh) | 2013-01-09 |
CN102866925B true CN102866925B (zh) | 2014-09-17 |
Family
ID=47445804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210327574.0A Expired - Fee Related CN102866925B (zh) | 2012-09-06 | 2012-09-06 | 一种中间件与用户界面的通信方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102866925B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532948A (zh) * | 2013-10-11 | 2014-01-22 | 苏州新海宜通信科技股份有限公司 | 一种二进制通信结构 |
CN103986709B (zh) * | 2014-05-15 | 2017-02-15 | 重庆邮电大学 | 一种RESTful架构下的中间件注册方法 |
CN103995752A (zh) * | 2014-06-16 | 2014-08-20 | 上海斐讯数据通信技术有限公司 | 模块间通知回调方法及模块交互结构 |
CN105187929A (zh) * | 2015-08-19 | 2015-12-23 | 浪潮软件集团有限公司 | 一种在机顶盒上实现全局响应消息的方法 |
CN105302625B (zh) * | 2015-10-28 | 2018-10-23 | 深圳竹信科技有限公司 | 一种可移植的中间库系统 |
CN106909327B (zh) * | 2015-12-23 | 2021-10-22 | 研祥智能科技股份有限公司 | 一种用于工控设备的显示控制装置 |
CN106778193B (zh) * | 2016-11-14 | 2023-02-03 | 北京握奇智能科技有限公司 | 一种客户端和ui交互方法 |
CN113434228A (zh) * | 2021-06-21 | 2021-09-24 | 青岛海尔科技有限公司 | 页面的请求方法、装置、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789936A (zh) * | 2009-12-28 | 2010-07-28 | 福建邮科通信技术有限公司 | 多媒体信息终端交互引擎 |
CN102333246A (zh) * | 2011-10-19 | 2012-01-25 | 广东中大讯通软件科技有限公司 | 一种基于机顶盒Flash中间件的用户界面系统 |
-
2012
- 2012-09-06 CN CN201210327574.0A patent/CN102866925B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789936A (zh) * | 2009-12-28 | 2010-07-28 | 福建邮科通信技术有限公司 | 多媒体信息终端交互引擎 |
CN102333246A (zh) * | 2011-10-19 | 2012-01-25 | 广东中大讯通软件科技有限公司 | 一种基于机顶盒Flash中间件的用户界面系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102866925A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102866925B (zh) | 一种中间件与用户界面的通信方法和系统 | |
CN108449418B (zh) | 一种混合云平台管理系统及方法 | |
CN104077253B (zh) | 跨装置通讯传输系统及其方法 | |
CN110262902B (zh) | 信息处理方法及系统、介质和计算设备 | |
CN107222324B (zh) | 网络服务的业务配置方法和装置 | |
CN105183452A (zh) | 一种用于配电设备监测基于Spring AOP的远程规约服务中间件 | |
CN106445705A (zh) | 基于RabbitMQ和Socket.io的平台级联方法和系统 | |
CN102622237B (zh) | 一种业务功能流程化的配置方法及系统 | |
US10334084B2 (en) | Communication method and system based on assembled communication protocol stack | |
JP5362011B2 (ja) | メッセージ処理パイプラインの構成 | |
CN111797173B (zh) | 联盟链共享系统、方法、装置、电子设备及存储介质 | |
CN111294235A (zh) | 数据处理方法、装置、网关及可读存储介质 | |
CN1973282A (zh) | 用于管理针对集群配置的改变的系统和方法 | |
JP2018092565A (ja) | クラウド中継装置、クラウド接続処理方法、及びプログラム | |
CN114422350B (zh) | 一种公共云容器实例创建方法 | |
CN101529807B (zh) | 一种网管系统通用的接口实现方法及其系统 | |
CN103197951A (zh) | 一种搭建应用运行环境的方法及装置 | |
US8806512B2 (en) | Collocation in a Java virtual machine of JSLEE, SIP servlets, and Java EE | |
CN111861384A (zh) | 多种工作流引擎设计方法、装置及介质 | |
CN116155978A (zh) | 多注册中心适配方法、装置、电子设备及存储介质 | |
CN114979144A (zh) | 云边通信方法、装置及电子设备 | |
CN108055337A (zh) | 多业务平台对接公众号的方法和装置 | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
CN102594729B (zh) | 模块间通信方法和模块间通信系统 | |
CN110399161A (zh) | 一种映射关系的生成方法、调用方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140917 Termination date: 20190906 |
|
CF01 | Termination of patent right due to non-payment of annual fee |