[发明专利]一种基于车载软件平台进程内模块间的消息广播通信方法有效
申请号: | 201410014753.8 | 申请日: | 2014-01-13 |
公开(公告)号: | CN104063285B | 公开(公告)日: | 2017-06-23 |
发明(设计)人: | 莫斌 | 申请(专利权)人: | 惠州华阳通用电子有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 广州三环专利代理有限公司44202 | 代理人: | 温旭 |
地址: | 516005 广东省惠州市东江*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 车载 软件 平台 进程 模块 消息 广播 通信 方法 | ||
技术领域
本发明涉及嵌入式设备进程通信技术领域,尤其涉及一种基于车载软件平台进程内模块间的消息广播通信方法。
背景技术
窗口消息通信机制:在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。一个消息是由消息的名称(UINT)和两个参数(WPARAM,LPARAM)组成。消息的参数中包含有重要的信息。例如对鼠标消息而言,LPARAM中一般包含鼠标的位置信息,而WPARAM参数中包含了发生该消息时,SHIFT、CTRL等键的状态信息,对于不同的消息类型来说,两个参数也都相应地具有明确意义。
同步和异步:同步是指发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
相应地,窗口消息通信机制是基于队列的通信方式,可采用同步和异步两种通信方式进行通信,但在时间上会因为OS的繁忙程度引起消息接收的延迟,甚至更严重的情况会丢失消息,存在一定的弊端和隐患。
轮询方式:这里特指程序中通过定时器或者线程的方式,不断地重复某个操作或者某段代码,这样的方式会对CPU资源造成很大的消耗。
目前,常使用的进程内通信机制可通过对一个CMyQueue类的队列对象进行入列和出列T_Msg消息结构实现,即在代码的某处向该队列插入一个消息,而在另外一处不断通过轮询检测的方式获取该队列内的消息来达到不同代码区域之间的通信。
但是,该通信机制存在以下缺陷:
(1)只能实现一对一的通信方式。对于某一个功能的CMyQueue队列对象来说,发送方和接收方都是既定的,如果有多个功能或模块需要使用该机制时必须定义多个这样的队列对象,因而在代码里会存在多个这样的一对一的通信方式,不同通信方式之间如果有联系的话(即存在一对多的通信方式),只能通过消息接收方接收到消息后再与另外的相关方进行单独联系,从而实现消息事件沟通,这是相当繁琐的过程。
(2)消息接收方必须通过轮询的方式获取该队列内的消息。要实现该通信机制必须在定义CMyQueue队列对象的发送方处暴露该对象,从而让接收方知道该对象并且不断通过轮询方式对该队列对象进行出列操作以获取消息进行处理。这样的方式首先会消耗过多的CPU资源,再者会造成不同模块之间的耦合度较大,代码的冗余度较强,并且会增加代码的复杂度,进而引起一些意料之外的问题。
发明内容
本发明所要解决的技术问题在于,提供一种基于车载软件平台进程内模块间的消息广播通信方法,可实现车载软件平台进程内模块之间的一对多或者多对一的广播通信方式。
本发明所要解决的技术问题还在于,提供一种基于车载软件平台进程内模块间的消息广播通信方法,可引入特定的消息定义方式,有效地解决不同模块之间消息的定义会数值重叠。
为了解决上述技术问题,本发明提供了一种基于车载软件平台进程内模块间的消息广播通信方法,包括:抽象定义消息发送器类及消息接收器类;通过继承方式实例化所述消息发送器类的消息发送器对象和所述消息接收器类的消息接收器对象;在所述消息发送器类内定义消息接收器对象列表,通过所述消息接收器对象列表管理所有与所述消息发送器类相关的消息接收器对象,并在所述消息接收器类内定义消息发送器对象列表,通过所述消息发送器对象列表管理所有与所述消息接收器类相关的消息发送器对象;在所述消息发送器类内添加用于获取所述消息接收器对象指针的第一接口,在所述消息接收器类内添加用于获取所述消息发送器对象指针的第二接口,当外部调用第一接口时,把所述第一接口获取的消息接收器对象指针保存到所述消息接收器列表内,并在内部通过所述消息接收器列表内的消息接收器对象指针自动调用第二接口,把所述第二接口获取的消息发送器对象指针保存到所述消息发送器对象的列表;在所述消息发送器类内定义单播或广播消息接口,在所述消息接收器类内定义消息接收接口,所述单播或广播消息接口通过调用所述消息接收接口,把所述消息发送器对象的状态以接口函数的参数形式传递至所述消息接收器对象。
作为上述方案的改进,所述通过继承方式实例化消息发送器类的消息发送器对象和消息接收器类的消息接收器对象的方法包括:将普通类通过继承所述消息发送器类的方式定义为消息发送器对象;将需要关联并接收所述普通类状态的其他普通类通过继承所述消息接收器类的方式定义为消息接收器对象。
作为上述方案的改进,所述接口函数包括三个参数,所述第一个参数为传递的消息,所述第二个参数及第三个参数为数据传递指针。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于惠州华阳通用电子有限公司,未经惠州华阳通用电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410014753.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种嵌入式系统的调试方法及其装置
- 下一篇:一种应用程序的调用方法和系统