嵌入式双系统的系统间通信方法及装置制造方法

文档序号:6633117阅读:221来源:国知局
嵌入式双系统的系统间通信方法及装置制造方法
【专利摘要】本发明提供一种嵌入式双系统的系统间通信方法及装置,该方法包括:利用第一发送进程将android用户的消息通过消息服务转化为流数据后发送给linux中转任务;流数据的数据结构包括消息头和消息数据;消息头包括源消息ID、目的消息ID、消息的类型、和消息数据的长度;消息数据表达了消息的内容;或利用第一接收进程接收来自linux中转任务的消息;通过消息服务产生所接收到的消息的消息对象实例,根据消息对象实例中的目的消息ID找到对应的接收消息对象实例,调用接收消息对象实例的读取消息方法,获得所接收到的消息的内容。本发明定义了android与linux通信的协议,实现了可变数据传递;提供了对通信协议的解析;实现了在嵌入式linux环境下android与linux的通信。
【专利说明】嵌入式双系统的系统间通信方法及装置

【技术领域】
[0001] 本发明属于计算机【技术领域】,涉及一种系统间的通信方法,特别是涉及一种嵌入 式双系统的系统间通信方法及装置。

【背景技术】
[0002] 现在的android是一种开放的开发平台,在各种纷繁复杂的APP应用中,android 备享赞誉,美名远播。但实际android的底层核心是Iinux的,实际应用中android本身需 要和Iinux通信,这就带来了 android与Iinux共存协同合作的问题。
[0003] 现有的解决android程序和Iinux程序通信的技术方案有如下几种:
[0004] 1、Solinuxket 通信方式
[0005] Solinuxket是建立在传输协议(主要是HinuxP和UDP)上的一种套接字规范。套 接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了 TlinuxP协议软件 和实现了要节制规范的计算机之间的通信成为可能。利用标准的Solinuxket通信的方法, 可以实现任何平台任何进程之间的Solinuxket通信,从而实现信息的传递。Solinuxket通 信是基于HinuxP和UDP的套接字规范,这种实现方案只能运行在任何两台安装了 HinuxP 协议的机器之间,利用网络套接字通信,其他环境则无法运行及通信。
[0006] 2、文件共享方式
[0007] 通信双方将需要传递的参数等信息,通过文件进行传递。这种方法需要注意线程 同步和安全等问题,其效率相对比较低下。采用文件共享的方式进行通信,方式较为简单易 用,但是对文件的操作,访问,安全,则成了通信的最大障碍。考虑到对效率要求比较高且对 数据安全要求比较高的场合,这种方式便不可取了。
[0008] 3、通过JNI方式
[0009] android 本机接口(即 android Native Interfalinuxe,JNI)是编写 android 本 机方法和把android虚拟机(JVM)嵌入到本机应用程序中的标准接口。通过JNI编写程序, 可以很方便的做到跨平台移植。采用JNI是目前为止较为流行的android通信方式,单独 使用JNI给android与Iinux之间的通信带来了较大的灵活性。但是JNI本身只是一系列 通用接口,其实现依赖于设计者本身的技术解决方案,因此带来不确定性。


【发明内容】

[0010] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种嵌入式双系统的系统 间通信方法及装置,用于解决运行中的Android环境下的任务和休眠中的Iinux环境下的 任务能够互相通信的问题。
[0011] 为实现上述目的及其他相关目的,本发明提供一种嵌入式双系统的系统间通信方 法,所述嵌入式双系统的系统间通信方法包括:利用第一发送进程将android用户的消息 通过消息服务转化为流数据后发送给Iinux中转任务;所述流数据的数据结构包括消息头 和消息数据;所述消息头包括源消息ID、目的消息ID、消息的类型、和消息数据的长度;所 述源消息ID为发送消息进程的ID,所述目的消息ID为接收消息进程的ID ;所述消息数据 表达了消息的内容;或利用第一接收进程接收来自Iinux中转任务的消息;通过所述消息 服务产生所接收到的消息的消息对象实例,根据所述消息对象实例中的目的消息ID找到 对应的接收消息对象实例,调用所述接收消息对象实例的读取消息方法,获得所接收到的 消息的内容。
[0012] 可选地,所述消息服务包括:发送消息;注册消息ID,返回一个提供有读取消息方 法的接收消息对象实例。
[0013] 可选地,所述嵌入式双系统的系统间通信方法由OSGi环境下的android中转任务 实现;所述android中转任务采用Unix域套接字与所述Iinux中转任务通信。
[0014] 本发明还提供一种嵌入式双系统的系统间通信方法,所述嵌入式双系统的系统间 通信方法包括:利用第二接收进程监听接收连接请求,在接收连接建立后,通过Unix域套 接字接收来自android中转任务的流数据,并将所述流数据转换为消息发送至Iinux用户 任务;所述流数据的数据结构包括消息头和消息数据;所述消息头包括源消息ID、目的消 息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进程的ID,所述目的消息 ID为接收消息进程的ID ;所述消息数据表达了消息的内容;或利用第二发送进程接收来自 Iinux用户任务的消息,并在发送连接建立后,调用Unix域套接字将所述接收到的消息发 送至android中转任务。
[0015] 可选地,所述接收连接的建立过程包括:仓Il建接收套接字规范solinuxket,将所 述套接字规范solinuxket绑定到套接字规范文件solinuxketfile,侦听所述套接字规范 solinuxket,判断接收连接是否建立成功,若成功则接收所述流数据;若不成功则继续判 断;所述发送连接的建立过程包括:创建发送套接字规范solinuxket,将所述套接字规范 solinuxket绑定到套接字规范文件solinuxketfile,侦听所述套接字规范solinuxket,判 断发送连接是否建立成功,若成功则获取所述套接字规范文件solinuxketfd ;若不成功则 继续判断。
[0016] 可选地,所述嵌入式双系统的系统间通信方法由Iinux环境下的Iinux中转任务 实现;所述Iinux中转任务采用Unix域套接字与所述android中转任务通信。
[0017] 本发明还提供一种嵌入式双系统的系统间通信装置,所述嵌入式双系统的系统间 通信装置包括android中转任务模块;所述android中转任务模块包括:第一发送进程子 模块,将android用户的消息通过一消息服务子模块转化为流数据后发送给Iinux中转任 务模块;所述流数据的数据结构包括消息头和消息数据;所述消息头包括源消息ID、目的 消息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进程的ID,所述目的消 息ID为接收消息进程的ID ;所述消息数据表达了消息的内容;或第一接收进程子模块,接 收来自Iinux中转任务模块的消息;通过所述消息服务子模块产生所接收到的消息的消息 对象实例,根据所述消息对象实例中的目的消息ID找到对应的接收消息对象实例,调用所 述接收消息对象实例的读取消息方法,获得所接收到的消息的内容。
[0018] 可选地,所述消息服务子模块包括:发送单元,发送消息;注册单元,注册消息ID, 返回一个提供有读取消息方法的接收消息对象实例。
[0019] 可选地,所述android中转任务模块采用Unix域套接字与所述Iinux中转任务模 块通信。
[0020] 本发明还提供一种嵌入式双系统的系统间通信装置,所述嵌入式双系统的系统间 通信装置包括Iinux中转任务模块;所述Iinux中转任务模块包括第二接收进程子模块,或 第二发送进程子模块;所述第二接收进程子模块包括:监听单元,监听接收连接请求;接收 连接建立单元,与所述监听单元相连,建立接收连接;第一接收单元,在接收连接建立后,通 过Unix域套接字接收来自android中转任务模块的流数据;所述流数据的数据结构包括 消息头和消息数据;所述消息头包括源消息ID、目的消息ID、消息的类型、和消息数据的长 度;所述源消息ID为发送消息进程的ID,所述目的消息ID为接收消息进程的ID ;所述消息 数据表达了消息的内容;转换单元,与所述接收单元相连,将所述流数据转换为消息发送至 Iinux用户任务模块;所述第二发送进程子模块包括:第二接收单元,接收来自Iinux用户 任务模块的消息;发送连接建立单元,建立发送连接;发送单元,与所述第二接收单元和发 送连接建立单元分别相连,在发送连接建立后,调用Unix域套接字将所述接收到的消息发 送至android中转任务模块。
[0021] 可选地,所述接收连接建立单元进一步包括:第一创建子单元,创建接收套接 字规范solinuxket ;第一绑定子单元,与所述第一创建子单元相连,将所述套接字规范 solinuxket绑定到套接字规范文件solinuxketfile ;第一侦听子单元,与所述第一创建子 单元相连,侦听所述套接字规范solinuxket ;第一判定子单元,与所述第一侦听子单元相 连,判断接收连接是否建立成功;第一执行子单元,与所述第一判定子单元相连,若成功则 接收所述流数据;若不成功则继续判断;所述发送连接建立单元进一步包括:第二创建子 单元,创建发送套接字规范solinuxket ;第二绑定子单元,与所述第二创建子单元相连,将 所述套接字规范solinuxket绑定到套接字规范文件solinuxketfile ;第二侦听子单元,与 所述第二创建子单元相连,侦听所述套接字规范solinuxket ;第二判定子单元,与所述第 二侦听子单元相连,判断发送连接是否建立成功;第二执行子单元,与所述第二判定子单元 相连,若成功则获取所述套接字规范文件solinuxketfd ;若不成功则继续判断。
[0022] 可选地,所述Iinux中转任务模块采用Unix域套接字与所述android中转任务模 块通信。
[0023] 如上所述,本发明所述的嵌入式双系统的系统间通信方法及装置,具有以下有益 效果:
[0024] 本发明定义了 android与Iinux通信的协议,实现了可变数据传递;提供了对通信 协议的解析,包括android端以及Iinux端的数据包处理流程,合法性校验,错误报文处理 等等;实现了在嵌入式Iinux环境下android与Iinux的通信。

【专利附图】

【附图说明】
[0025] 图1为本发明实施例一所述的嵌入式双系统的系统间通信方法的一种具体实现 流程示意图。
[0026] 图2为本发明实施例二所述的嵌入式双系统的系统间通信方法的一种具体实现 流程示意图。
[0027] 图3为本发明实施例二所述的接收连接的建立过程的一种具体实现流程示意图。
[0028] 图4为本发明实施例二所述的发送连接的建立过程的一种具体实现流程示意图。
[0029] 图5为本发明实施例三所述的嵌入式双系统的系统间通信装置的一种具体实现 结构示意图。
[0030] 图6为本发明实施例三所述的消息服务子模块的一种具体实现结构示意图。
[0031] 图7为本发明实施例四所述的嵌入式双系统的系统间通信装置的一种具体实现 结构示意图。
[0032]图8为本发明实施例四所述的第二接收进程子模块的一种具体实现结构示意图。
[0033] 图9为本发明实施例四所述的接收连接建立单元的一种具体实现结构示意图。 [0034]图10为本发明实施例四所述的第二发送进程子模块的一种具体实现结构示意 图。
[0035] 图11为本发明实施例四所述的发送连接建立单元的一种具体实现结构示意图。
[0036] 元件标号说明
[0037] 500 android中转任务模块
[0038] 510 第一发送进程子模块
[0039] 520 第一接收进程子模块
[0040] 530 消息服务子模块
[0041] 531 发送单元
[0042] 532 注册单元
[0043] 600 Iinux中转任务模块
[0044] 610 第二接收进程子模块
[0045] 611 监听单元
[0046] 612 接收连接建立单元
[0047] 6121 第一创建子单元
[0048] 6122 第一绑定子单元
[0049] 6123 第一侦听子单元
[0050] 6124 第一判定子单元
[0051] 6125 第一执行子单元
[0052] 613 第一接收单元
[0053]614 转换单元
[0054] 620 第二发送进程子模块
[0055]621 第二接收单元
[0056] 622 发送连接建立单元
[0057] 6221 第二创建子单元
[0058] 6222 第二绑定子单元
[0059] 6223 第二侦听子单元
[0060] 6224 第二判定子单元
[0061] 6225 第二执行子单元
[0062] 623 发送单元
[0063] 700 Iinux用户任务模块
[0064] 800 android用户任务模块
[0065] SlOl ?S102 步骤
[0066] S201 ?S202 步骤
[0067] S301 ?S305 步骤
[0068] S401 ?S405 步骤

【具体实施方式】
[0069] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书 所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实 施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离 本发明的精神下进行各种修饰或改变。
[0070] 请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明 的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形 状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布 局型态也可能更为复杂。
[0071] 现有的方案运行环境各异,有的运行于不同主机,有的运行于JVM。Unix Domain Solinuxket即Uinx域套接字,用于同一台机器上运行的进程之间的通信。Unix域套接字 的执行效率比因特网域的套接字更高,它是实现android与Iinux通信的桥梁。OSGi (JSR 291)亦称做android语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。 简单的说,通过OSGi可以在后台对设备组件进行安装、升级或卸载而无需打断该设备的正 常运行。OSGi 作为 android 模块化的载体,运行在 JVM(android Virtual Malinuxhine) 之上。OSGi是近年来新提出的标准,android模块化是目前比较热门的发展趋势,因此在 嵌入式平台下,OSGi环境中,提出一套android与Iinux的通信解决方案,同时解决通信 安全,通信效率等问题则显得非常有必要。android的创造者们在开发之初就已经考虑 到了这一点,在android中提供了与Iinux/++的编程接口,这就是JNI (android Native Interfalinuxe)。在本发明中米用的开源的 JUDS(android Unix Domain Solinuxket)类库 部分就是源自于对JNI的调用。本发明描述的便是在OSGi环境下android的任务与Iinux 环境下Iinux任务的通信机制。
[0072] 下面结合实施例和附图对本发明进行详细说明。
[0073]实施例一
[0074] 本实施例提供一种嵌入式双系统的系统间通信方法,如图1所示,所述嵌入式双 系统的系统间通信方法包括:
[0075] S101,利用第一发送进程将android用户的消息通过消息服务转化为流数据后发 送给Iinux中转任务;所述流数据的数据结构包括消息头和消息数据;所述消息头包括源 消息ID、目的消息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进程的 ID,所述目的消息ID为接收消息进程的ID ;所述消息数据表达了消息的内容。
[0076] 表1 :消息的结构定义表
[0077]

【权利要求】
1. 一种嵌入式双系统的系统间通信方法,其特征在于,所述嵌入式双系统的系统间通 信方法包括: 利用第一发送进程将android用户的消息通过消息服务转化为流数据后发送给Iinux 中转任务;所述流数据的数据结构包括消息头和消息数据;所述消息头包括源消息ID、目 的消息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进程的ID,所述目的 消息ID为接收消息进程的ID ;所述消息数据表达了消息的内容;或 利用第一接收进程接收来自Iinux中转任务的消息;通过所述消息服务产生所接收到 的消息的消息对象实例,根据所述消息对象实例中的目的消息ID找到对应的接收消息对 象实例,调用所述接收消息对象实例的读取消息方法,获得所接收到的消息的内容。
2. 根据权利要求1所述的嵌入式双系统的系统间通信方法,其特征在于,所述消息服 务包括: 发送消息; 注册消息ID,返回一个提供有读取消息方法的接收消息对象实例。
3. 根据权利要求1所述的嵌入式双系统的系统间通信方法,其特征在于:所述嵌入式 双系统的系统间通信方法由OSGi环境下的android中转任务实现;所述android中转任务 采用Unix域套接字与所述Iinux中转任务通信。
4. 一种嵌入式双系统的系统间通信方法,其特征在于,所述嵌入式双系统的系统间通 信方法包括: 利用第二接收进程监听接收连接请求,在接收连接建立后,通过Unix域套接字接收来 自android中转任务的流数据,并将所述流数据转换为消息发送至Iinux用户任务;所述流 数据的数据结构包括消息头和消息数据;所述消息头包括源消息ID、目的消息ID、消息的 类型、和消息数据的长度;所述源消息ID为发送消息进程的ID,所述目的消息ID为接收消 息进程的ID ;所述消息数据表达了消息的内容;或 利用第二发送进程接收来自Iinux用户任务的消息,并在发送连接建立后,调用Unix 域套接字将所述接收到的消息发送至android中转任务。
5. 根据权利要求4所述的嵌入式双系统的系统间通信方法,其特征在于: 所述接收连接的建立过程包括:创建接收套接字规范solinuxket,将所述套接字规范 solinuxket绑定到套接字规范文件solinuxketfile,侦听所述套接字规范solinuxket,判 断接收连接是否建立成功,若成功则接收所述流数据;若不成功则继续判断; 所述发送连接的建立过程包括:创建发送套接字规范solinuxket,将所述套接字规范 solinuxket绑定到套接字规范文件solinuxketfile,侦听所述套接字规范solinuxket,判 断发送连接是否建立成功,若成功则获取所述套接字规范文件solinuxketfd ;若不成功则 继续判断。
6. 根据权利要求4所述的嵌入式双系统的系统间通信方法,其特征在于:所述嵌入式 双系统的系统间通信方法由Iinux环境下的Iinux中转任务实现;所述Iinux中转任务采 用Unix域套接字与所述android中转任务通信。
7. -种嵌入式双系统的系统间通信装置,其特征在于,所述嵌入式双系统的系统间通 信装置包括android中转任务模块;所述android中转任务模块包括: 第一发送进程子模块,将android用户的消息通过一消息服务子模块转化为流数据后 发送给Iinux中转任务模块;所述流数据的数据结构包括消息头和消息数据;所述消息头 包括源消息ID、目的消息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进 程的ID,所述目的消息ID为接收消息进程的ID ;所述消息数据表达了消息的内容;或 第一接收进程子模块,接收来自Iinux中转任务模块的消息;通过所述消息服务子模 块产生所接收到的消息的消息对象实例,根据所述消息对象实例中的目的消息ID找到对 应的接收消息对象实例,调用所述接收消息对象实例的读取消息方法,获得所接收到的消 息的内容。
8. 根据权利要求7所述的嵌入式双系统的系统间通信装置,其特征在于:所述消息服 务子模块包括: 发送单元,发送消息; 注册单元,注册消息ID,返回一个提供有读取消息方法的接收消息对象实例。
9. 根据权利要求7所述的嵌入式双系统的系统间通信装置,其特征在于:所述android 中转任务模块采用Unix域套接字与所述Iinux中转任务模块通信。
10. -种嵌入式双系统的系统间通信装置,其特征在于,所述嵌入式双系统的系统间通 信装置包括Iinux中转任务模块;所述Iinux中转任务模块包括第二接收进程子模块,或第 二发送进程子模块; 所述第二接收进程子模块包括: 监听单元,监听接收连接请求; 接收连接建立单元,与所述监听单元相连,建立接收连接; 第一接收单元,在接收连接建立后,通过Unix域套接字接收来自android中转任务模 块的流数据;所述流数据的数据结构包括消息头和消息数据;所述消息头包括源消息ID、 目的消息ID、消息的类型、和消息数据的长度;所述源消息ID为发送消息进程的ID,所述目 的消息ID为接收消息进程的ID ;所述消息数据表达了消息的内容; 转换单元,与所述接收单元相连,将所述流数据转换为消息发送至Iinux用户任务模 块; 所述第二发送进程子模块包括: 第二接收单元,接收来自Iinux用户任务模块的消息; 发送连接建立单元,建立发送连接; 发送单元,与所述第二接收单元和发送连接建立单元分别相连,在发送连接建立后,调 用Unix域套接字将所述接收到的消息发送至android中转任务模块。
11. 根据权利要求10所述的嵌入式双系统的系统间通信装置,其特征在于: 所述接收连接建立单元进一步包括: 第一创建子单元,创建接收套接字规范solinuxket ; 第一绑定子单元,与所述第一创建子单元相连,将所述套接字规范solinuxket绑定到 套接字规范文件solinuxketfile ; 第一侦听子单元,与所述第一创建子单元相连,侦听所述套接字规范solinuxket ; 第一判定子单元,与所述第一侦听子单元相连,判断接收连接是否建立成功; 第一执行子单元,与所述第一判定子单元相连,若成功则接收所述流数据;若不成功则 继续判断; 所述发送连接建立单元进一步包括: 第二创建子单元,创建发送套接字规范solinuxket ; 第二绑定子单元,与所述第二创建子单元相连,将所述套接字规范solinuxket绑定到 套接字规范文件solinuxketfile ; 第二侦听子单元,与所述第二创建子单元相连,侦听所述套接字规范solinuxket ; 第二判定子单元,与所述第二侦听子单元相连,判断发送连接是否建立成功; 第二执行子单元,与所述第二判定子单元相连,若成功则获取所述套接字规范文件 solinuxketfd ;若不成功则继续判断。
12.根据权利要求10所述的嵌入式双系统的系统间通信装置,其特征在于:所述Iinux 中转任务模块采用Unix域套接字与所述android中转任务模块通信。
【文档编号】G06F9/54GK104317661SQ201410612949
【公开日】2015年1月28日 申请日期:2014年11月4日 优先权日:2014年11月4日
【发明者】刘云峰, 杨磊磊, 付保林 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1