[发明专利]一种软件实现同步通信及异步通信的方法无效
| 申请号: | 200910312582.6 | 申请日: | 2009-12-30 |
| 公开(公告)号: | CN101800695A | 公开(公告)日: | 2010-08-11 |
| 发明(设计)人: | 尤金刚 | 申请(专利权)人: | 四川长虹电器股份有限公司 |
| 主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
| 代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 徐宏;吴彦峰 |
| 地址: | 621000 四*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 软件 实现 同步 通信 异步 方法 | ||
技术领域
本发明涉及一种软件功能模块间通信的具体实现方法技术领域,特别涉及一种软件实现同步通信及异步通信的方法。
背景技术
目前,在嵌入式产品开发中,由于用户功能需求的不断增加,独立的软件模块越来越多,功能也越来越独立,因此模块间的相互通信是必不可少的。例如:用户通过遥控器来操作显示屏上的GUI菜单时,在软件中实现时可分成两个独立的模块:一个是遥控器接收处理模块,一个是GUI显示及处理模块。两模块间的通信可分为两种,即异步通信和同步通信。当为同步通信时,用户必须等到GUI菜单中的操作完成后才能进行接下来的遥控操作,这种情况下要求实时性比较高;而异步通信时,可以边操作遥控,GUI菜单中的处理也可在后台执行,这种情况下没有很高的实时性的要求。而在一般的产品开发中,这两种通信方式都是由第三方的中间件来提供的服务或接口(如:minigui、DirectFB等),不仅涉及到软件开发的授权费用问题,而且也占用较多的系统资源。接近的现有技术包括CN200610154794.2基于Java的进程间异步通信的实现方法,涉及进程间通信技术领域,旨在提供一种基于Java的进程间异步通信的实现方法。该方法包括以下步骤:(1)通信服务进程的实现;(2)进程内通信服务进程实现;(3)消息的设计;(4)通信过程的实现。本发明采用了集中式的通信方式,并且在与上层应用的交互中引入了消息触发机制,对收到的消息由通信系统负责调用回调函数进行处理。同时,将消息封装成对象,利用Java的序列化机制直接传送对象,简化上层应用对消息的封装与解析;进程只和服务程序通信,进程间以服务程序作为中介交换信息;进程了解服务程序的位置,服务程序保留所有进程的信息。
发明内容
本发明的目的是提出了一种利用软件方法实现同步通信及异步通信这两种通信方式的方法,并且不基于任何其它的中间件。
一种软件实现同步通信及异步通信的方法,包括以下步骤:(1)同步通信的实现:①注册消息处理函数;②发送同步消息后,等待接收消息模块的处理;③接收消息模块执行消息处理;④发送消息模块返回处理结果,执行下一步操作;(2)异步通信的实现:①初始化消息队列,分配系统资源,初始化读出和写入的消息数为0;②发送消息到消息队列中保存并排序,使写入的消息数加1;③发送消息模块立即返回结果,可执行下一步操作;④接收消息模块定时查看消息队列的当前状态;⑤如没有消息可读时,则等待;⑥如有消息存在,则从中读出一条消息,并使读出的消息数加1;⑦接收消息模块执行读出的消息进行处理操作。
本发明的有益效果:
本发明的一种软件实现同步通信及异步通信的方法,提出一个比较独立的模块算法,来实现各个软件功能模块间的同步通信及异步通信的方法,利用一个注册的回调函数实现同步通信,采用一个循环的消息队列来实现异步通信的方法,不仅占用较少的系统资源,不基于任何其它的中间件,而且可用于各种不同的开发平台,可移植性强。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是本发明同步通信的流程示意图;
图2是本发明异步通信的流程示意图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
如图1所示的同步通信的实现:①注册消息处理函数;②发送同步消息后,等待接收消息模块的处理;③接收消息模块执行消息处理;④发送消息模块返回处理结果,执行下一步操作;
定义模块的数据结构如下:
struct__module
{
HANDLE handle;/*此模块在内存中的起始地址,即标号*/
....../*模块的其它信息及属性*/
WNDPROC *WindowProc;/*消息处理函数*/
}MODULE;
同步通信SendMessage函数的实现方法:
SendMessage(HANDLE handle/*资源标号*/,
int nType/*消息类型*/,
DWORD nData1/*传送的数据1*/,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川长虹电器股份有限公司,未经四川长虹电器股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910312582.6/2.html,转载请声明来源钻瓜专利网。





