本发明专利技术公开了一种用于不同对象间信号与槽函数的通信方法及装置,用于不同对象间信号与槽函数的通信方法包括:在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接;在第一信号发射时,通过第一对象指针和第二对象指针将第一信号的参数传输至槽函数,槽函数根据参数立即调用。通过上述方式,可以应用于多个软件项目中,能够提高程序的可靠性和灵活性。
【技术实现步骤摘要】
用于不同对象间信号与槽函数的通信方法及装置
本专利技术涉及通信
,尤其涉及一种用于不同对象间信号与槽函数的通信方法及装置。
技术介绍
不同对象间的通信需要通过接口直接调用或者标志变量,或者回调函数等方式进行,使用不便。通过接口直接调用来通信需要传入其它对象的控制器(hander),会增加扇出;通过标志变量进行通信属于异步通信,实时性可靠性不强,且无法保证执行成功;通过回调机制有一些好处,但使用起来麻烦,或对对象的类型有要求,有诸多限制,不够通用。以上方式概念和逻辑都不够清晰,不利于理解和软件可维护性。
技术实现思路
有鉴于此,本专利技术提供一种用于不同对象间信号与槽函数的通信方法及装置,可以应用于多个软件项目中,能够提高程序的可靠性和灵活性。为解决上述问题,本专利技术提供的一种用于不同对象间信号与槽函数的通信方法,包括:在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接;在第一信号发射时,通过第一对象指针和第二对象指针将第一信号的参数传输至槽函数,槽函数根据参数立即调用。其中,一个第一信号与多个槽函数之间建立连接。其中,一个槽函数与多个第一信号之间建立连接。其中,在第一信号发射时,槽函数立即调用,包括:在第一信号发射时,存储一内存地址以及一内存长度;槽函数根据内存地址以及内存长度立即进行调用。其中,在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数,包括:在不同的类中定义至少一对象的第一信号以及至少一对象的虚拟槽函数;通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接,包括:通过第一信号的第一对象指针与虚拟槽函数的第二对象指针建立第一信号与虚拟槽函数的派生类的槽函数之间的连接。其中,派生类的槽函数为不同于第一信号的第二信号。为解决上述问题,本专利技术提供的一种用于不同对象间信号与槽函数的通信装置,包括:定义模块,用于在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;连接模块,与定义模块连接,用于通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接;调用模块,与连接模块连接,用于在第一信号发射时,通过第一对象指针和第二对象指针将第一信号的参数传输至槽函数,并控制槽函数根据参数立即调用。其中,一个第一信号与多个槽函数之间建立连接,或者一个槽函数与多个第一信号之间建立连接。其中,通信装置还包括存储模块,存储模块用于:在第一信号发射时,存储一内存地址以及一内存长度;调用模块用于:控制槽函数根据内存地址以及内存长度立即进行调用。其中,定义模块用于在不同的类中定义至少一对象的第一信号以及至少一对象的虚拟槽函数;连接模块用于通过第一信号的第一对象指针与虚拟槽函数的第二对象指针建立第一信号与虚拟槽函数的派生类的槽函数之间的连。通过上述方案,本专利技术的有益效果是:区域别于现有技术,本专利技术通过在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接;在第一信号发射时,通过第一对象指针和第二对象指针将第一信号的参数传输至槽函数,槽函数根据参数立即调用,可以应用于多个软件项目中,能够提高程序的可靠性和灵活性。附图说明为了更清楚地说明本专利技术实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:图1是本专利技术第一实施例的用于不同对象间信号与槽函数的通信方法的流程示意图;图2是本专利技术第二实施例的用于不同对象间信号与槽函数的通信方法的流程示意图;图3是本专利技术第一实施例的用于不同对象间信号与槽函数的通信装置的结构示意图;图4是本专利技术第二实施例的用于不同对象间信号与槽函数的通信装置的结构示意图。具体实施方式下面将结合本专利技术实施方式中的附图,对本专利技术实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本专利技术一区域分实施方式,而不是全区域实施方式。基于本专利技术中的实施方式,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施方式,都属于本专利技术保护的范围。请参阅图1,图1是本专利技术第一实施例的用于不同对象间信号与槽函数的通信方法的流程示意图。如图1所示,用于不同对象间信号与槽函数的通信方法包括:步骤S10:在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数。第一信号和槽函数都属于类的某个对象。第一信号和槽函数都用宏进行声明。如:#defineSIGNALS_SIGNALS#defineSLOTS_SLOTS在类中定义第一信号时,第一信号名为有效的C/C++标识符。第一信号还需要在类外用宏进行初始化。如:INIT_SIGNAL(A,SIG_TEST_SIGNAL);INIT_SIGNAL(A,SIG_TEST2_SIGNAL);在本专利技术实施例中,所有的槽函数都有相同的原型。但槽函数的参数不能有缺省值。在定义槽函数的类中也可以定义与第一信号不同的第二信号。步骤S11:通过第一信号的第一对象指针与槽函数的第二对象指针建立第一信号与槽函数之间的连接。在步骤S11中,应用一可变参宏连接第一信号与槽函数。如:errorCode=CONNECT(pSender,signalName,pReceiver,pfnSlot,pUserData,userDataSize,connectType)其中,pSender为信号发送者,具体为第一信号的第一对象指针,signalName为第一信号的信号名,pReceiver为信号接收者,具体为槽函数的第二对象指针,pfnSlot为槽函数名,connectType为连接类型,默认类型是信号连接槽函数。pUserData和userDataSize代表一段内存数据,可以包含任何内容,这段内存数据将在槽函数调用时传给槽函数的对应参数。并返回errorCode类型的通用错误码,连接成功则返回ERROR_SUCCESS,其它值表示失败。在本专利技术实施例中,一个第一信号与多个槽函数之间建立连接,或者一个槽函数与多个第一信号之间建立连接。在步骤S10中,在定义槽函数的类中也定义一第一信号不同的第二信号时,在步骤S11中还可以建立第一信号与第二信号之间的连接,且建立的方法相同,区别只在于pReceiver,pfnSlot分别对应第二信号的第二对象指针以及第二信号的信号名。步骤S12:在第一信号发射时,通过第一对象指针和第二对象指针将第一信号的参数传输至槽函数,槽函数根据参数立即调用。在步骤S12中,在第一信号发射时,存储一内存地址以及一内存长度;槽函数进一步根据内存地址以及内存长度立即进行调用。如:errorCode=EMIT(pA,SIG_TEST_SIGNAL,&data,sizeof(data));其中,pA为第一信号,不传则自动表示当前的对象指针,SIG_TEST_SIGNAL为第一信号的信号名。&data,sizeof(data)表示一段内存数据,可以传送任何内容,会传给槽函数的本文档来自技高网...
【技术保护点】
一种用于不同对象间信号与槽函数的通信方法,其特征在于,所述通信方法包括:在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;通过所述第一信号的第一对象指针与所述槽函数的第二对象指针建立所述第一信号与所述槽函数之间的连接;在所述第一信号发射时,通过所述第一对象指针和所述第二对象指针将所述第一信号的参数传输至所述槽函数,所述槽函数根据所述参数立即调用。
【技术特征摘要】
1.一种用于不同对象间信号与槽函数的通信方法,其特征在于,所述通信方法包括:在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数;通过所述第一信号的第一对象指针与所述槽函数的第二对象指针建立所述第一信号与所述槽函数之间的连接;在所述第一信号发射时,通过所述第一对象指针和所述第二对象指针将所述第一信号的参数传输至所述槽函数,所述槽函数根据所述参数立即调用。2.根据权利要求1所述的用于不同对象间信号与槽函数的通信方法,其特征在于,一个所述第一信号与多个所述槽函数之间建立连接。3.根据权利要求1所述的用于不同对象间信号与槽函数的通信方法,其特征在于,一个所述槽函数与多个所述第一信号之间建立连接。4.根据权利要求1所述的用于不同对象间信号与槽函数的通信方法,其特征在于,所述在所述第一信号发射时,所述槽函数立即调用,包括:在所述第一信号发射时,存储一内存地址以及一内存长度;所述槽函数根据所述内存地址以及所述内存长度立即进行调用。5.根据权利要求1所述的用于不同对象间信号与槽函数的通信方法,其特征在于,所述在不同的类中定义至少一对象的第一信号以及至少一对象的槽函数,包括:在不同的类中定义至少一对象的第一信号以及至少一对象的虚拟槽函数;所述通过所述第一信号的第一对象指针与所述槽函数的第二对象指针建立所述第一信号与所述槽函数之间的连接,包括:通过所述第一信号的所述第一对象指针与所述虚拟槽函数的所述第二对象指针建立所述第一信号与所述虚拟槽函数的派生类的槽函数之间的连接。6...
【专利技术属性】
技术研发人员:李荣业,
申请(专利权)人:深圳市盛弘电气股份有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。