首页> 中国专利> 机载设备网络数据传输通用的数据格式转换方法及其系统

机载设备网络数据传输通用的数据格式转换方法及其系统

摘要

本发明公开了一种机载设备网络数据传输通用的数据格式转换方法及其系统,其包括以下步骤:步骤一,根据被转换源数据的类型,定义源数据的数据结构类型描述说明;步骤二,声明源数据类型描述说明的变量,并对该源数据类型描述说明的变量进行初始化赋值;步骤三,定义目标数据存储缓冲区;步骤四,按照数据格式转换规则,对源数据类型描述说明的变量进行解析;步骤五,根据解析的数据类型对源数据进行转换,将转换结果存储到目标数据存储缓冲区中。本发明实现目前存在的各种不同网络数据格式转换处理方法的统一,简化设计人员在网络接口协议和程序设计期间的工作,提高航空机载设备之间数据传输的效率,降低机载设备之间数据传输错误的风险。

著录项

  • 公开/公告号CN103034499A

    专利类型发明专利

  • 公开/公告日2013-04-10

    原文格式PDF

  • 申请/专利权人 中国航空无线电电子研究所;

    申请/专利号CN201210541430.5

  • 发明设计人 尹彦清;马骏;

    申请日2012-12-13

  • 分类号

  • 代理机构上海和跃知识产权代理事务所(普通合伙);

  • 代理人杜林雪

  • 地址 200233 上海市徐汇区桂平路432号

  • 入库时间 2024-02-19 17:52:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-17

    授权

    授权

  • 2013-05-08

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20121213

    实质审查的生效

  • 2013-04-10

    公开

    公开

说明书

技术领域

本发明涉及航空领域民用飞机航空电子系统,特别是涉及一种机载设备 网络数据传输通用的数据格式转换方法及其系统,该方法和系统适用于飞行 管理系统、自动控制系统、综合显示系统等各种航空电子系统之间的数据传 输、加载和网络通信。

背景技术

民用飞机航空电子系统之间离不开相互的数据传输。由于机载电子系统 的计算机体系结构存在差异,会导致电子系统之间直接的数据传输错误。为 了保证数据传输正确,必须在数据传输中进行相应的数据格式转换。按照不 同的计算机体系结构对于数据(比特、字节、字)的存储和传输机制,主要 有两种数据传输和存储格式:大端存储(Big-Endian)和小端存储 (Little-Endian)。

在大端存储的计算机体系结构中规定把高位字节排放在内存的低地址 端,低位字节排放在内存的高地址端,传输数据时高位数据放在流的开始, 低位数据放在流的末尾。相反,在小端存储的计算机体系结构中规定把低位 字节排放在内存的低地址端,高位字节排放在内存的高地址端,传输数据时 低位数据放在流的开始,高位数据放在流的末尾。由此可见,在小端存储体 系计算机和大端存储体系计算机之间,若直接传输数据将得到错误的数值。

目前专门论述大端和小端数据格式转换的著作非常少,在解决实际工程 问题时,人们常根据经验采用比较原始的方法进行大端和小端数据格式字节 序的转换。对于双字节和四字节的数据,C语言提供了hton、htonl、ntohs、 ntohl四个转换函数,它们可以满足部分数据的字节序格式转换,但是对于 八字节的数据或者用户自定义的结构体数据则不能通过这些函数进行转换。 因此,程序设计人员在遇到此类数据格式转换时的做法是根据实际情况需 要,为特定的数据和结构体编写特定的数据字节序格式转换函数,最常见的 方法有定义共用体、位操作等。其中定义共用体的局限性最大,因为程序员 必须为每个类型数据或结构体数据定义一个共用体类型以实现数据字节序 格式的转换,因此,这种方法没有灵活性,编程工作量大,已经完成的程序 重用性差。位操作的灵活性和程序的可重用性较高,但是位操作只针对单个 多字节的数据,不能直接对用户自定义的结构体数据进行字节序格式转换, 当需要使用结构体中的某一个数据时,再把这一个数据按位操作进行格式转 换。由此可见,位操作方法的不足之处在于,当结构体数据定义非常庞大, 且需要访问结构体定义中的所有数据时,仍需要挨个完成结构体中包含数据 的格式转换,如果要对很多不同的结构体都进行转换,则程序员的工作将没 完没了,非常繁琐。

发明内容

本发明所要解决的技术问题是提供一种机载设备网络数据传输通用的 数据格式转换方法及其系统,其实现目前存在的各种不同网络数据格式转换 处理方法的统一,简化设计人员在网络接口协议和程序设计期间的工作,提 高航空机载设备之间数据传输的效率,降低机载设备之间数据传输错误的风 险。

本发明是通过下述技术方案来解决上述技术问题的:一种机载设备网络 数据传输通用的数据格式转换方法,其特征在于,其包括以下步骤:

步骤一,根据被转换源数据的类型,定义源数据的数据结构类型描述说 明;

步骤二,声明源数据类型描述说明的变量,并对该源数据类型描述说明 的变量进行初始化赋值;

步骤三,定义目标数据存储缓冲区;

步骤四,按照数据格式转换规则,对源数据类型描述说明的变量进行解 析;

步骤五,根据解析的数据类型对源数据进行转换,将转换结果存储到目 标数据存储缓冲区中。

优选地,如权利要求1所述的机载设备网络数据传输通用的数据格式转 换方法,其特征在于,所述步骤二对源数据类型描述说明的变量赋值即将其 数据类型赋值为基本类型、数组类型或记录类型中的一种,元素个数赋值为 X个,X表示源数据自身包含的元素个数,以及逐个说明源数据组成元素的 类型。

优选地,所述步骤三的目标数据存储缓冲区是一个已知的数据结构体变 量或是一个字节数组。

优选地,所述步骤四和步骤五两个步骤在数据转换过程中是同时进行 的。

优选地,所述步骤五的转换结果存储到目标数据存储缓冲区中是从目标 数据存储缓冲区的首地址开始,根据解析源数据类型描述说明的变量元素的 循环次数,移动目标数据存储缓冲区的地址指针找到对应的数据存储位置, 然后把完成数据格式转换的数据结果存储到数据存储区缓冲区对应位置。

本发明还提供一种机载设备网络数据传输通用的数据格式转换系统,其 特征在于,其包括依次连接的结构类型描述说明定义模块、初始化赋值模块、 缓冲区定义模块、解析模块、转换模块,结构类型描述说明定义模块用于定 义源数据的数据结构类型描述说明;初始化赋值模块用于声明源数据类型描 述说明的变量并对该源数据类型描述说明的变量进行初始化赋值;缓冲区定 义模块用于定义目标数据存储缓冲区;解析模块对源数据类型描述说明的变 量进行解析;转换模块根据解析的数据类型对源数据进行转换。

本发明的积极进步效果在于:本发明实现目前存在的各种不同网络数据 格式转换处理方法的统一,简化设计人员在网络接口协议和程序设计期间的 工作,提高航空机载设备之间数据传输的效率,降低机载设备之间数据传输 错误的风险。另外,本发明可以对任意的数据类型,包括自定义的复杂结构 体数据进行转换,转换后可以保持数据结构体的完整性,而避免了一次转换 只能完成结构体数据包含的某一个数据的缺点,极大的提高了转换效率、减 少了程序设计的难度和工作量,实现了数据格式转换方法的统一,降低了数 据传输错误的风险。

附图说明

图1为大端字节序数据存储示意图。

图2为简单数组类型描述说明的示意图。

图3为简单记录类型描述说明的示意图。

图4为高级记录类型描述说明的示意图。

图5为本发明机载设备网络数据传输通用的数据格式转换方法的流程 图。

图6为本发明中简单记录数据格式解析、转换的流程图。

图7为本发明中通用网络数据格式转换的流程图。

图8为本发明机载设备网络数据传输通用的数据格式转换系统的原理框 图。

具体实施方式

下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。

本发明首先对网络数据字节序、定义网络数据的类型描述、定义网络数 据类型描述说明层级、设计网络数据格式转换规则等进行说明,具体内容如 下:

(1)网络数据字节序说明

网络数据字节序是指数据的位(比特)、字节在计算机体系结构中的存 储和传输机制。在一个bit序列或一个byte序列中对整个序列取值影响最大 的那个bit/byte被称为最重要的位或最重要的字节(MSB),在一个bit序列 或一个byte序列中对整个序列取值影响最小的那个bit/byte被称为最不重要 的位或最不重要的字节(LSB)。

大端字节序方式规定数据存储时MSB存放在低地址,LSB存放在高地 址;传输数据时MSB放在流的开始,LSB放在流的末尾。小端字节序方式 规定数据存储时LSB存放在低地址,MSB存放在高地址;传输数据时LSB 放在流的开始,MSB放在流的末尾。大端字节序数据存储示意图如图1所 示。

(2)定义网络数据的类型描述说明

数据的种类可以分为数、数组或结构体,也可以把结构体称作一个记录, 因此网络数据类型描述说明定义可以分为多种不同的情况:

对单个多字节数据类型进行描述;

对元素为若干个多字节数据构成的数组类型进行描述;

对元素为若干个多字节数据构成的结构体类型进行描述;

对元素为若干个结构体数据,且结构体元素为若干个多字节数据构成的 数组类型进行描述;

对元素为若干个多字节数据和数组数据,且数组元素为若干个多字节数 据构成的结构体类型进行描述;

对元素为若干个结构体数据,且结构体元素包含其它数组数据或结构体 数据构成的数组类型,或者元素包括若干数组数据或结构体数据,且数组或 结构体元素又包括其它数组数据或结构体数据构成的结构体数据进行描述。

a)定义单个多字节数据的类型描述说明

需要进行数据格式转换的多字节数据类型为基本类型,包括unsigned  shout、int、float、double,它们分别为16位、32为或64位的基本数据类型, 在存储空间中分别占据2个字节、4个字节或8个字节,它们对应的大端和 小端字节序格式都不相同。此外,还有一个基本数据类型char为8位占1 个字节,其对应的大端和小端字节序格式相同。对于这些基本数据的类型描 述说明分别定义为8位数据、16位数据、32位数据或64位数据。

b)定义元素为若干个多字节数据构成的数组的类型描述说明

元素为若干个基本数据构成的数组,其类型描述说明比较容易,可以称 这种数组类型为简单数组类型。

定义简单数组的类型描述说明可分为三个步骤,首先应该明确其数据类 型为数组类型,然后确定数组包含的元素个数,最后确定数组元素的数据类 型描述说明。综合以上三个部分就完成了简单数组的类型描述说明定义,其 类型描述说明定义如图2所示。

c)定义元素为若干个多字节数据构成的结构体的类型描述说明

元素为若干个基本数据构成的结构体,其类型描述说明比较容易,可以 称这种结构体类型为简单结构体类型。

定义简单结构体的类型描述说明与简单数组一样分为三个步骤,首先应 该明确其数据类型为记录类型,然后确定结构体包含的元素个数,最后确定 结构体元素的数据类型描述说明。综合以上三个部分就完成了简单结构体的 类型描述说明定义,其类型描述说明定义如图3所示。

d)定义其他数据的类型描述说明

元素为若干个结构体数据,且结构体元素为若干个基本数据构成的数组 类型可以称为高级数组类型;元素为若干个基本数据和数组数据,且数组元 素为若干个基本数据构成的结构体类型可以称为高级记录类型。

高级数组类型和高级记录类型的类型描述说明定义也分为三个步骤,它 们的类型描述说明定义与简单数组和简单记录类型一样,仍然是先明确其数 据类型为数组或记录,然后再确定该数组或记录的元素个数,最后确定元素 的数据类型描述说明。与简单数组或简单记录不同的是,对高级数组或高级 记录的元素进行数据类型描述时应该注意其元素为简单数组或简单记录,对 这些元素进行类型描述时应该按照简单数组或记录的方法。当所有元素的类 型描述完成以后才最终完成高级数组或高级记录的类型描述说明定义。高级 记录类型的数据类型描述说明定义如图4所示。

元素为若干个结构体数据,且结构体元素包含其它数组数据或结构体数 据构成的数组类型,以及元素包括若干数组数据或结构体数据,且数组或结 构体元素又包括其它数组数据或结构体数据构成的结构体数据统一称为复 杂数据类型。定义复杂数据类型的类型描述说明也与高级数组或记录一样, 先明确其数据类型为数组或记录,然后再确定该数组或记录的元素个数,最 后确定元素的数据类型描述说明,并且每一个是数组或记录的元素都应该按 照相同的方法继续定义类型描述说明。

(3)定义网络数据类型描述说明层级

网络数据类型描述说明层级的意思是判断被转换数据的类型描述说明 时需要深入到其它数据类型描述说明的次数。

对于一个32位的基本数据类型而言,进行字节序转换时直接判断其类 型描述说明为32位数据,需要深入到其它数据类型描述说明的次数为零次, 因此,基本数据类型进行字节序转换的类型描述说明层级为第零层。

对于简单数组或简单记录类型而言,进行字节序转换时,首先需要判断 数组或结构体的类型描述说明为数组类型或记录类型,此时需要深入到其它 数据类型描述说明的次数为零次,则称当前字节序转换的类型描述说明层级 为第零层;当对数组元素或结构体元素进行字节序转换时,判断被转换数据 的类型描述说明需要深入到简单数组或记录的类型描述说明中,即深入到其 它类型描述说明的次数为一次,则称简单数组或记录当前元素进行字节序转 换的类型描述说明层级为第一层,其层级描述示意图如图2或图3所示。

对于高级数组或高级记录类型而言,进行字节序转换时,首先需要判断 数组或记录的类型描述说明为数组类型或记录类型,此时需要深入到其它数 据类型描述说明的次数为零次,则称当前字节序转换的类型描述说明层级为 第零层;然后,对高级数组或记录的元素进行字节序转换时,判断被转换数 据的类型描述说明需要深入到高级数组或记录的类型描述说明中,即深入到 其它类型描述说明的次数为一次,则称高级数组或记录当前元素进行字节序 转换的类型描述说明层级为第一层;最后,对高级数组而言,其元素类型为 简单记录,需要再判断简单记录子元素的类型描述说明,则再深入到其它数 据类型描述说明的次数为两次,则称高级数组元素——简单记录的子元素进 行字节序转换的类型描述说明层级为第二层。对于高级记录而言,其元素类 型或为简单数组,或为基本数据类型。若转换的元素为基本数据类型,则称 高级记录元素——基本数据类型进行字节序转换的类型描述说明层级为第 一层;若转换的元素为简单数组类型,则需要再判断简单数组子元素的类型 描述说明,则再深入到其它数据类型描述说明的次数为两次,则称高级记录 元素——简单数组的子元素进行字节序转换的类型描述说明层级为第二层。 高级记录类型的数据类型层级描述如图4所示。

(4)设计网络数据格式转换规则

数据格式转换规则与数据的类型描述说明密切相关。无论是单个多字节 的基本类型数据还是简单数组、简单记录或者更复杂的结构体数据,每一类 数据的转换都是从其类型描述说明开始,一层一层地往下深入,直到最内层 的基本数据为止,然后把所有的基本数据按字节序进行转换。对于位序列也 不相同的计算机体系结构,则在进行字节序转换前先转换数据的位序列。深 入到最内层的基本数据后,数据的字节序或位序列转换都类似,即根据大端 存储与小端存储的区别交换相应的字节或位,得到与计算机体系结构对应的 序列排列,进而得到正确的数值。

高级数组或结构体数据的类型描述说明定义比较复杂,这些数据通常需 要深入若干层才能达到最内层的基本类型数据,因此,字节序转换时需要运 用递归的方法,一层一层地解析高级数据的类型描述说明定义,获取每个子 元素的数据类型、字节大小等信息,然后针对各元素进行字节序或位序列转 换。

开始转换时解析数据的类型描述说明为第0层,在第0层转换的数据个 数始终只有一个。如果被转换数据的原始数据类型为基本的8位、16位或 32位数据,则直接进行一次字节序或位序列交换即可完成;如果被转换数据 的原始数据类型为数组或结构体数据,则首先在第0层获得数组或结构体包 含的元素个数,然后再进行递归循环转换其包含元素的字节序或位序列,此 时需要进入到下一层数据类型描述说明,即在第1层开始数据转换。若在第 1层中被转换的数据为基本的8位、16位或32位数据,此时进行一次字节 序或位序列交换即可完成转换;若被转换的数据也是数组或结构体,同样首 先在该层获得数组或结构体包含的元素个数,然后再进行递归循环转换其包 含元素的字节序或位序列。若数组或结构体的所有元素都转换完成,则回到 上一层数据类型描述说明,继续解析数组或结构体同层的后面数据的类型, 依据相同的方法不断进行递归转换,直到所有元素都转换完成,并回到第0 层即源数据所在为止,到此表示源数据完全转换完毕,转换得到的数据字节 序或位序列与期望的计算机体系结构一致,保证在进行数值运算和数据访问 时提供正确的数值。

如图5所示,本发明机载设备网络数据传输通用的数据格式转换方法包 括以下步骤:

步骤一,根据被转换源数据的类型,定义源数据的数据结构类型描述说 明;

步骤二,声明源数据类型描述说明的变量,并对该变量进行初始化赋值;

步骤三,定义目标数据存储缓冲区;

步骤四,按照数据格式转换规则,对源数据类型描述说明的变量进行解 析;

步骤五,根据解析的数据类型对源数据进行转换,将转换结果存储到目 标数据存储缓冲区中。

本发明机载设备网络数据传输通用的数据格式转换方法的具体描述如 下:

步骤一,根据被转换源数据的类型,定义源数据的数据结构类型描述说 明,步骤一的具体内容如下:

当目标计算机接收到网络发出的源数据时,可以认为接收到的源数据的 数据结构是已知的,因此首先根据源数据的结构定义源数据的数据结构类型 描述说明。正如前面所述,源数据的数据结构类型描述说明分为很多种情况, 不同的数据结构需要定义不同的数据类型描述说明。

仍然以源数据为简单结构体记录类型进行说明,如图3所示,可以定义 源数据的数据结构描述说明定义,定义中包括数据类型、元素个数,以及源 数据中组成元素的类型。由此可见,源数据的数据结构类型描述说明组成元 素的个数比源数据自身组成元素的个数多两个。但是,基本数据类型是一个 例外。对于源数据是基本数据类型的情况,其数据类型描述说明组成元素仍 然只有一个。

步骤二,声明源数据类型描述说明的变量,并对该变量进行初始化赋值, 步骤二的具体内容如下:

定义了源数据的数据类型描述说明后,接下来声明一个该源数据类型描 述说明的变量,并对该变量进行初始化赋值。如图3所示,对源数据类型描 述说明的变量赋值即为其数据类型赋值为记录类型、元素个数为X个,X表 示源数据自身包含的元素个数,以及逐个说明源数据组成元素的类型,例如 第一个为32位数据,第二个为8位数据,最后一个为16位数据等。

步骤三,定义目标数据存储缓冲区,步骤三的具体内容如下:

定义目标数据存储缓冲区是为了存储源数据转换的结果,可以开辟一块 足够大的内存空间。目标数据存储缓冲区可以是一个已知的数据结构体变 量,也可以是一个维数足够大的字节数组。如果是对源数据自身进行转换, 目标数据缓冲区也可以是源数据本身。

如图3所示的记录类型,若源数据的转换结果需要另行存储,可以定义 一个很大的字节数组作为目标数据存储缓冲区。

步骤四,按照数据格式转换规则,对源数据类型描述说明的变量进行解 析。

步骤五,根据解析的数据类型对源数据进行转换,转换结果存储到目标 数据存储缓冲区中,步骤五的具体内容如下:

上述步骤四和步骤五两个步骤在数据转换过程中是同时进行的,即对源 数据类型描述说明的变量解析的过程中完成对源数据包含的元素的格式转 换。对于图3所示的简单记录类型的数据,根据转换规则,源数据的具体数 据格式解析、转换过程如下,解析、转换示意图如图6所示:

(a)获取目标数据存储地址和源数据地址

根据定义的目标数据存储缓冲区,如定义的字节数组,获得目标数据存 储地址为字节数组的首地址;源数据地址即为接收到的网络源数据的首地 址。获取目标数据存储地址和源数据地址的用途是为了在转换源数据和存储 转换结果时,准确地对应源数据的元素和目标数据存储缓冲区的存储位置。

(b)解析源数据类型描述说明的变量

源数据类型描述说明的变量包括X+2个元素,因此从第一个元素开始解 析。由第一个元素可知,源数据为一个记录类型的数据;由第二个元素可知, 源数据包括X个元素,因此数据格式转换需要深入到类型描述说明的下一层 级。此时,从第三个元素开始,需要对后续元素进行循环解析,循环次数从 1开始,直到X次时结束。

(c)对源数据的元素进行数据格式转换

每次循环解析一个源数据类型描述说明的变量的元素,根据该元素的类 型对源数据的对应元素进行数据格式转换,源数据的对应元素通过把源数据 地址指针按照循环次数进行移动获得。如图3所示,令当前为第n次循环(n 大于等于1,并小于等于X),则判断类型描述说明变量的第n+2个元素的类 型,根据该类型的数据格式转换原则,移动源数据地址指针到第n个元素的 位置,交换第n个数据相应的字节顺序。例如,n为3时,得知类型描述说 明变量的元素为32位的数据,因此,移动源数据地址指针到第3个元素的 位置,按照32位数据的转换原则交换相应的字节顺序。

根据数据格式转换规则,不同的数据类型对应不同的数据格式转换方 法,因此数据格式转换规则的伪代码设计如下:

(d)把转换结果存储到目标数据存储缓冲区

从目标数据存储缓冲区的首地址开始,根据解析源数据类型描述说明的 变量元素的循环次数,移动目标数据存储缓冲区的地址指针找到对应的数据 存储位置,然后把上一步完成数据格式转换的数据结果存储到数据存储区缓 冲区对应位置。

循环次数增加一次,重复(b)、(c)和(d)的过程,直到循环X次时 结束。

为了使网络数据格式转换规则具有通用性,下面再以一个实例说明数据 转换规则的通用实施流程。通用实施流程的初始两个步骤与前面所述相同, 但是,在源数据格式转换时根据网络计算机和目标接收计算机体系结构的区 别,以及源数据地址与目标数据存储缓冲区地址的不同,需要进行更加全面 的判断。网络数据格式转换规则的通用实施流程如图7所示。

(1)根据被转换源数据的类型,定义源数据的数据结构类型描述说明

如图4所示,以组成元素包括简单数组的高级记录类型为例,定义源数 据的数据结构类型描述说明。类型描述说明包括数据类型、元素个数,以及 源数据中组成元素的类型。同样,源数据的数据结构类型描述说明组成元素 的个数应该比源数据自身组成元素的个数多两个,为n+2个,其中n表示源 数据自身包含的元素个数。

(2)声明源数据类型描述说明的变量,并对该变量进行初始化赋值

定义了源数据的数据类型描述说明后,接下来声明一个该源数据类型描 述说明的变量,并对该变量进行初始化赋值。如图4所示,对源数据类型描 述说明的变量赋值即为其数据类型赋值为记录类型、元素个数为n个,n表 示源数据自身包含的元素个数,以及逐个说明源数据组成元素的类型。例如 第一个为32位数据,第二个为8位数据,最后一个为16位数据等。对于源 数据的组成元素为简单数组的,应该按照简单数组的描述方法继续展开描 述。例如源数据第三个元素为简单数组,因此该元素赋值为数组类型,且包 括x个子元素,每个子元素类型为8位数据。

(3)定义目标数据存储缓冲区

定义目标数据存储缓冲区是为了存储源数据转换的结果,可以开辟一块 足够大的内存空间。目标数据存储缓冲区可以是一个已知的数据结构体变 量,也可以是一个维数足够大字节数组。如果是对源数据自身进行转换,目 标数据缓冲区也可以是源数据本身。

如图5所示的记录类型,若源数据的转换结果需要另行存储,可以定义 一个很大的字节数组作为目标数据存储缓冲区。

(4)对源数据类型描述说明的变量进行解析

首先,获取目标数据存储地址和源数据地址,判断网络计算机和目标 接收计算机的体系结构是否一致,判断计算机的体系结构是为源数据的转换 做准备,因为,只有当网络计算机和目标接收计算机的体系结构不相同时, 才需要对源数据进行数据格式转换,否则不需要对源数据的数据格式进行转 换。如果判断网络计算机和目标接收计算机的体系结构相同,则判断目标数 据存储地址和源数据地址是否指向相同的地址。如果两者地址相同,则不需 要进行任何操作;如果两者地址不同,则需要把源数据复制到目标数据存储 缓冲区中,到此源数据格式转换全部结束。如果判断网络计算机和目标接收 计算机的体系结构不相同,则继续进行本步骤的操作。

源数据类型描述说明的变量包括n+2个元素,因此从第一个元素开始解 析。由第一个元素可知,源数据为一个记录类型的数据;由第二个元素可知, 源数据包括n个元素,因此数据格式转换需要深入到类型描述说明的下一层 级。此时,从第三个元素开始,需要对后续元素进行循环解析,循环次数从 1开始,直到n次时结束。

如图4所示,当解析的元素为数组类型时,必须按照数组类型的解析方 法深入到下一层级。例如,循环3次时元素为数组类型,因此深入到类型描 述说明变量的第2层级,得知数组包括x个子元素,因此在第2层级对数组 进行新的循环解析,循环次数从1开始,直到x次时结束。等到第2层级的 循环结束后,在回到上一层级继续后面的循环解析。

(5)对源数据的元素进行数据格式转换

每次循环解析一个类型描述说明变量的元素,根据该元素的类型对源数 据的对应元素进行数据格式转换,源数据的对应元素通过把源数据地址指针 按照循环次数进行移动获得。

如图4所示,在第一层级的循环中,令当前为第i次循环(i大于等于1, 并小于等于n),则判断类型描述说明变量的第i+2个元素的类型,根据该类 型的数据格式转换原则,移动源数据地址指针到第i个元素的位置,交换第 i个数据相应的字节顺序。例如,i为1时,得知类型描述说明变量的元素为 32位的数据,因此,移动源数据地址指针到第3个元素的位置,按照32位 数据的转换原则交换相应的字节顺序。

如果进入到第二层级循环,则移动源数据地址指针时应该加上第二层级 循环的次数,例如把源数据地址指针移动到i+k的位置,其中j为第二层级 的循环次数。

(6)把转换结果存储到目标数据存储缓冲区

从目标数据存储缓冲区的首地址开始,根据解析源数据类型描述说明的 变量元素的循环次数,移动目标数据存储缓冲区的地址指针找到对应的数据 存储位置,然后把上一步完成数据格式转换的数据结果存储到数据存储区缓 冲区对应位置。移动目标数据存储缓冲区地址指针的原则与上一步移动源数 据地址指针的相同。

循环次数增加一次,重复(4)、(5)和(6)的过程,直到循环n次时 结束。

如图8所示,本发明机载设备网络数据传输通用的数据格式转换系统包 括依次连接的结构类型描述说明定义模块、初始化赋值模块、缓冲区定义模 块、解析模块、转换模块,结构类型描述说明定义模块用于定义源数据的数 据结构类型描述说明;初始化赋值模块用于声明源数据类型描述说明的变量 并对该源数据类型描述说明的变量进行初始化赋值;缓冲区定义模块用于定 义目标数据存储缓冲区;解析模块对源数据类型描述说明的变量进行解析; 转换模块根据解析的数据类型对源数据进行转换。

本发明实现目前存在的各种不同网络数据格式转换处理方法的统一,简 化设计人员在网络接口协议和程序设计期间的工作,提高航空机载设备之间 数据传输的效率,降低机载设备之间数据传输错误的风险。根据本发明机载 设备网络数据传输通用的数据格式转换方法,工程设计人员可以不必再刻意 地考虑航空机载设备计算机系统结构之间的区别。进行网络数据传输时,不 同设备之间都采用相同的数据发送和接收方法。按照本方法进行适当的计算 机系统结构配置,即可保证不同机载设备之间网络数据传输的正确性。另外, 本发明可以对任意的数据类型,包括自定义的复杂结构体数据进行转换,转 换后可以保持数据结构体的完整性,而避免了一次转换只能完成结构体数据 包含的某一个数据的缺点,极大的提高了转换效率、减少了程序设计的难度 和工作量,实现了数据格式转换方法的统一,降低了数据传输错误的风险。

本领域的技术人员可以对本发明进行各种改型和改变。因此,本发明覆 盖了落入所附的权利要求书及其等同物的范围内的各种改型和改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号