CN1477839A - 一种实现板间对象通信的方法 - Google Patents
一种实现板间对象通信的方法 Download PDFInfo
- Publication number
- CN1477839A CN1477839A CNA021366500A CN02136650A CN1477839A CN 1477839 A CN1477839 A CN 1477839A CN A021366500 A CNA021366500 A CN A021366500A CN 02136650 A CN02136650 A CN 02136650A CN 1477839 A CN1477839 A CN 1477839A
- Authority
- CN
- China
- Prior art keywords
- communication
- plate
- plates
- skeleton
- message
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种实现板间对象通信的方法,特别一种适用于嵌入式系统的板间通信的方法。该方法是对其他板上所有需要和本板通信的对象都在本板的程序中创建一个映射的对象,称之为skeleton对象,作为通信的中介。本发明和其他板间通信的方法相比:对应用程序设计来说,无论对象在什么地方,通信的方法都是一样的,真正实现了完全透明;UML设计工具的动画功能可以使用,对调试很有帮助。
Description
技术领域
本发明涉及一种实现板间对象通信的方法,特别一种适用于嵌入式系统的板间通信的方法。
背景技术
目前UML(Unified Modeling Language)在嵌入式系统的设计开发中已经有不少应用。使用UML设计工具可以在OMD(Object Model Diagram)图中建立各个对象的联系,然后对象之间就可以通过这个联系发消息进行通信。有些UML设计工具还可以提供动画功能,将对象间的交互在顺序图中表现出来,非常直观。
因为对象间的通信实际上是通过对象指针来完成的,所以这种通信方式只能在同一个进程或板上实现,不同板之间的通信不能采用这种方法。
在对板间通信的专利检索中,没有找到类似的专利解决这个不便。
根据目前所知,板间通信一般都是通过一些固定的原语调用来完成的。这种方法使板内和板间的对象通信方法不一样,开发人员需要在编码中用两套通信流程,增加了复杂性;同时,用这类通信方法,也就无法用到UML设计工具的动画功能,如某些设计工具提供的顺序图显示功能来协助设计。
发明内容
本发明的目的是提供一种实现板间对象通信的方法,特别一种适用于嵌入式系统的板间通信的方法。可屏蔽板内对象和板间对象的差别,使板间通信对上层应用程序完全透明,同时能使用UML设计工具提供的动画等功能。
本发明是这样实现的:一种实现板间对象通信的方法,其特征在于至少包括以下步骤:
对其他板上所有需要和本板通信的对象都在本板的程序中创建一个映射的对象,称之为skeleton对象(skeleton对象的概念和作用与OMG CORBA标准中的skeleton相似),作为通信的中介,和其他板上需要与本板通信的静态对象一一对应;
由本板的对象将消息发给其他板上对应对象在本板上的skeleton对象;
在本板上创建的其他板上对应对象的skeleton对象截取消息,处理成统一的数据格式发送给本板的板间通信模块;
板间通信模块将数据发送到其他板;
其他板的通信模块从通信线路上收到信息时,判断发送消息的对象对应的skeleton对象是否存在,如果不存在,则动态创建发送消息的对象对应的skeleton对象;
其他板的板间通信模块生成消息,发送给目的对象。
一种将板A上的对象C发消息给板B上的目的对象,实现板间对象通信的方法,其特征在于包括以下步骤:
板A上的板间通信模块启动时建立一些skeleton对象,和板B上的需要与本板通信的静态对象一一对应,这样在板A中,就有了目的对象的skeleton对象;
对象C将消息发给目的对象在板A上的skeleton对象;
板A上目的对象的skeleton对象截取消息,处理成统一的数据格式发送给板A的板间通信模块;
板间通信模块将数据发送到板B;
板B的通信模块从通信线路上收到信息时,判断发送消息的对象C对应的skeleton对象是否存在,如果不存在,则动态创建对象C对应的skeleton对象;
板B的板间通信模块生成消息,发送给目的对象。
所述每一个和其他板通信的动态创建的skeleton对象在析构时要向通信模块注销,通信模块将此注销信息发送到其他板上,让其他板删除此动态对象的skeleton对象;
如果通信链路中断,则通信模块删除所有动态创建的skeleton对象;
本发明和其他板间通信的方法相比优点主要有:
对应用程序设计来说,无论对象在什么地方,通信的方法都是一样的,真正实现了完全透明;
UML设计工具的动画功能可以使用,对调试很有帮助。
附图说明
图1是本发明的原理图。
图2是板间通信模块的启动流程图。
图3是板间通信模块的通信流程图。
图4是需要通信的对象被删除的流程图。
图5是通信中断的处理流程图。
图6是本发明的方法构建的一个通信模块实例图。
图1是本发明的原理图,表示一次单向通信的原理。数据从对象C发出,依次经过目的对象的skeleton对象,板A的板间通信模块,板B的板间通信模块,然后到达目的对象。如果目的对象要发消息给对象C,则需要在板B中建立对象C的skeleton对象,并进行相反的过程。
图2说明了板A的通信模块的启动流程,通信模块在启动时要创建其他板上要和本板通信的对象的skeleton对象。
图3说明了从板A的对象C发消息给板B的目的对象的流程,是对图1的流程形式表示。
图4说明了对象析构时需要进行的工作流程。由于对象析构时其他板并不知道,所以需要通信模块将对象的析构消息通知其他板,使其他板的通信模块有机会删除其对应的skeleton对象。
图5表示了通信中断时的处理流程。通信中断时要删除所有动态创建的skeleton对象,因为如果这些skeleton对象对应的真实对象析构,在通信中断的时候是无法通知本板的,就会造成这些skeleton对象永远无法删除。
图6是本发明的方法构建的一个通信模块及skeleton对象的图。图中,应用模块的对象将板间通信的消息发送给skeleton对象,然后再发给stub对象转发给通信对象,最后发送到通信链路上传给对方;接收则是完全相反的过程。
具体实施方式
用本发明的方法,构造了一个通信模块,详述如下:
这个实施例是用I-Logix公司的UML设计工具Rhapsody开发的。在程序设计中,skeleton对象可能和各种对象建立联系,所以各个skeleton对象的数据结构都不相同,不能用一个对象类来表示。同时由于skeleton对象收到的消息种类无法预料,造成skeleton对象不能在Rhapsody中用状态图表达其逻辑。对于这些问题,实施中对Rhapsody的底层库OXF(Object executableFramework)进行修改,截取skeleton对象的消息处理,然后进行转发。
因为动态创建的对象进行板间通信会带来很多问题,所以此实现中只考虑静态创建的对象间的通信。这些对象在程序运行开始时就创建好,生存期和程序的生存期相同。如果是对象只有一个实例,则一开始就可以建好其对应的skeleton对象;如果是多实例对象,就动态创建其skeleton对象。
对于每一块和本板通信的板,都对应唯一的stub对象,它接收skeleton对象转发来的消息数据,保存在自己的缓冲区中,并将其拆成小数据帧,发送给Socket或RS232等通信对象,由它们进行发送。如果由数据被通信对象收到,也传给stub对象,由它组合成消息帧,转发给接收的对象。
静态的skeleton对象由应用程序自己建立,由于OXF已经被修改,skeleton对象在注册时会将消息分发函数交给通信模块接管,新的分发函数不处理Framework Event以及所有ID<0的系统消息,如timeout,startbehavior等。
新的消息分发函数处理两类消息:
a)普通的消息。对于这些消息,分发函数根据消息长度组合成数据消息(名称可取为EV_DATA)发给stub对象,
b)变长数据消息。板间通信中有时需要发送变长数据,一般发送变长数据的做法是在消息的数据结构中加上指针进行传送,而指针在其他板上是无效的。为此,专门定义了变长数据消息EV_VARIANT,应用程序可以发送此消息给skeleton对象,分发函数组合成EV_DATA消息发给stub对象。
stub对象拥有一个大缓冲区,保存skeleton对象发来的消息,然后逐渐地把缓冲区中的信息分割成小数据帧,加上发给通信对象,完成发送。如果缓冲区满,则消息丢弃。在接收到数据帧时,stub对象将其组合成消息,然后发送给skeleton对象。Stub对象存在的意义就在于它能屏蔽底层的通信方法,无论是采用Socket还是RS232,Stub对象的操作是一样的。
通信对象完成真正的通信工作,如socket的收发等。在通信对象的发送缓冲区空时,发消息通知stub对象,以允许stub对象发送新的数据包。
要实现消息的透明转发,分发函数必须知道消息的长度,这只能在消息创建时知道,所以需要在Rhapsody的代码生成配置中修改消息的内存分配过程,在完成内存分配后将消息长度填入结构成员中。
为了实现动画,Rhapsody对每一种消息都有对应的ARCEventClass对象,在收到板间通信消息时必须创建ARCEvent,但由于此时仅仅知道消息ID,不知道其对应的ARCEventClass对象,无法创建。这可以这样解决:
a)修改Rhapsody的代码生成配置中修改消息的内存分配过程,此时可以记录消息的名称。
b)在编译选项有Rhaspody动画代码时,包的初始化过程会初始化ARCEventClass,由于它用的是宏,可以修改宏定义,在初始化ARCEventClass后将消息名称和ARCEventClass对象的指针加入一张映射表。
c)在有板间消息数据传来时,根据消息名称查找其对应的ARCEventClass对象,实现消息的发送。
本发明方法独特,使板间通信对用UML设计的应用程序完全透明,并且使板间对象的交互可以用动画功能进行调试,加快了开发进度,减少了发生错误的可能。
Claims (4)
1、一种实现板间对象通信的方法,其特征在于至少包括以下步骤:
对其他板上所有需要和本板通信的对象都在本板的程序中创建一个映射的对象,称之为skeleton对象,作为通信的中介,和其他板上需要与本板通信的静态对象一一对应;
由本板的对象将消息发给其他板上对应对象在本板上的skeleton对象;
在本板上创建的其他板上对应对象的skeleton对象截取消息,处理成统一的数据格式发送给本板的板间通信模块;
板间通信模块将数据发送到其他板;
其他板的通信模块从通信线路上收到信息时,判断发送消息的对象对应的skeleton对象是否存在,如果不存在,则动态创建发送消息的对象对应的skeleton对象;
其他板的板间通信模块生成消息,发送给目的对象。
2、一种将板(A)上的对象(C)发消息给板(B)上的目的对象,实现板间对象通信的方法,其特征在于包括以下步骤:
板(A)上的板间通信模块启动时建立一些skeleton对象,和板(B)上的需要与本板通信的静态对象一一对应,这样在板(A)中,就有了目的对象的skeleton对象;
对象(C)将消息发给目的对象在板(A)上的skeleton对象;
板(A)上目的对象的skeleton对象截取消息,处理成统一的数据格式发送给板(A)的板间通信模块;
板间通信模块将数据发送到板(B);
板(B)的通信模块从通信线路上收到信息时,判断发送消息的对象(C)对应的skeleton对象是否存在,如果不存在,则动态创建对象(C)对应的skeleton对象;
板(B)的板间通信模块生成消息,发送给目的对象。
3、如权利要求1或2所述的一种实现板间对象通信的方法,其特征在于所述每一个和其他板通信的动态创建的skeleton对象在析构时要向通信模块注销,通信模块将此注销信息发送到其他板上,让其他板删除此动态对象的skeleton对象。
4、如权利要求1或2所述的一种实现板间对象通信的方法,其特征在于如果通信链路中断,则通信模块删除所有动态创建的skeleton对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021366500A CN100426808C (zh) | 2002-08-21 | 2002-08-21 | 一种实现板间对象通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021366500A CN100426808C (zh) | 2002-08-21 | 2002-08-21 | 一种实现板间对象通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1477839A true CN1477839A (zh) | 2004-02-25 |
CN100426808C CN100426808C (zh) | 2008-10-15 |
Family
ID=34146588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021366500A Expired - Fee Related CN100426808C (zh) | 2002-08-21 | 2002-08-21 | 一种实现板间对象通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100426808C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100382502C (zh) * | 2005-06-01 | 2008-04-16 | 华为技术有限公司 | 一种进行单板调试串口映射的系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999044123A1 (en) * | 1998-02-26 | 1999-09-02 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6581088B1 (en) * | 1998-11-05 | 2003-06-17 | Beas Systems, Inc. | Smart stub or enterprise javaTM bean in a distributed processing system |
US6236999B1 (en) * | 1998-11-05 | 2001-05-22 | Bea Systems, Inc. | Duplicated naming service in a distributed processing system |
-
2002
- 2002-08-21 CN CNB021366500A patent/CN100426808C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100382502C (zh) * | 2005-06-01 | 2008-04-16 | 华为技术有限公司 | 一种进行单板调试串口映射的系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100426808C (zh) | 2008-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0449500B1 (en) | Apparatus and methods for performing an application-defined operation on data as part of a system-defined operation on the data | |
US7581232B2 (en) | Coordinating reference counting between entities executing within separate address spaces | |
US7712111B2 (en) | Method and system for linear tasking among a plurality of processing units | |
US8270299B2 (en) | Communicator-based token/buffer management for eager protocol support in collective communication operations | |
Agha | The structure and semantics of actor languages | |
CN1306430C (zh) | 基于构件的用户自定义事件方法 | |
WO2000045256A9 (en) | Method and system for dynamic configuration of interceptors in a client-server environment | |
CN1317640C (zh) | 实时操作系统环境下多任务应用软件模块的管理方法 | |
Swenson et al. | A new approach to zero-copy message passing with reversible memory allocation in multi-core architectures | |
US7428730B2 (en) | Software development environment | |
Medvidovic et al. | A family of software architecture implementation frameworks | |
EP1203279A1 (en) | Method for adapting migrating processes to host machines | |
CN1889038A (zh) | 以类为单位的远程构件生命周期的管理方法 | |
CN1477839A (zh) | 一种实现板间对象通信的方法 | |
CN1630853A (zh) | 用于构造分布式软件成分的方法 | |
CN111176799A (zh) | 一种业务调度方法、设备和存储介质 | |
CN1141654C (zh) | 面向对象的系统中向二进制类增加对象服务的系统和方法 | |
CN1317868C (zh) | 一种基于类模板管理器的通讯报文处理设备和方法 | |
CN101004677A (zh) | 一种基于corba规范的case环境工具总线实现方法 | |
CN109086033B (zh) | 一种遥感数据处理的流程调度方法 | |
US20060253833A1 (en) | System and method for efficient hosting of wireless applications by encoding application component definitions | |
Gallard et al. | Dynamic streams for efficient communications between migrating processes in a cluster | |
CN103488472A (zh) | 处理三维图形对象的方法和系统 | |
US20170249196A1 (en) | Interacting with a source object via a virtual object | |
CN112702270B (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: 20081015 Termination date: 20140821 |
|
EXPY | Termination of patent right or utility model |