CN115470123A - 基于数据结构类型的数据自适应解析方法 - Google Patents

基于数据结构类型的数据自适应解析方法 Download PDF

Info

Publication number
CN115470123A
CN115470123A CN202211063106.7A CN202211063106A CN115470123A CN 115470123 A CN115470123 A CN 115470123A CN 202211063106 A CN202211063106 A CN 202211063106A CN 115470123 A CN115470123 A CN 115470123A
Authority
CN
China
Prior art keywords
data
byte
tested
item set
data item
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.)
Pending
Application number
CN202211063106.7A
Other languages
English (en)
Inventor
吕景超
李永勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Amicro Semiconductor Co Ltd
Original Assignee
Zhuhai Amicro Semiconductor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhuhai Amicro Semiconductor Co Ltd filed Critical Zhuhai Amicro Semiconductor Co Ltd
Priority to CN202211063106.7A priority Critical patent/CN115470123A/zh
Publication of CN115470123A publication Critical patent/CN115470123A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开基于数据结构类型的数据自适应解析方法,数据自适应解析方法包括:创建出相应数据结构类型的数据项集合,并将所有创建出的数据项集合组成数据帧构造器;从机器设备的内外部采集待测试数据,再通过比较待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度;结合数据帧构造器内的各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析,获得待测试数据的对应字节数据的映射信息,以供测试软件使用。

Description

基于数据结构类型的数据自适应解析方法
技术领域
本发明涉及位数据转换的技术领域,具体涉及基于数据结构类型的数据自适应解析方法。
背景技术
自动化测试软件通过某些介质从扫地机器人中获取C语言的派生数据类型(结构体、数组、集合、队列等数据结构类型)的数据后,需要对派生数据类型的数据进行数据解析,转化为Python类型的数据以便上位机测试使用,在这一转化过程中,对状态位数据往往需要单独的计算处理;C语言的每种基本数据类型分别对应一种功能,不同功能的测试需求不同,往往需要通过手动编辑文件的方式临时添加新的测试数据类型;然后,每当数据结构发生改变时,需要对每个比特位进行调整,比如频繁地对二进制数据进行移位,容易引发测试程序报错。
发明内容
为解决上述问题,本发明通过相关数据结构类型的构造模型完成对字节数据的映射,减少数据解析过程中所需进行的单个比特位数据的运算操作,保证数据解析的正确率,获得较为准确的测试数据;本发明的具体技术方案如下:
基于数据结构类型的数据自适应解析方法,数据自适应解析方法包括:创建出相应数据结构类型的数据项集合,并将所有创建出的数据项集合组成数据帧构造器;从机器设备的内外部采集待测试数据,再通过比较待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度;结合数据帧构造器内的各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析,获得待测试数据的对应字节数据的映射信息,以供测试软件使用。
进一步地,所述通过比较待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度的方法包括:当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的一个数据项集合占用的数据长度设置为对齐字节长度;当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内所有数据项集合占用的数据长度的和值设置为对齐字节长度;其中,数据帧构造器内的每个数据项集合占用的数据长度都是以字节为单位计数得到;每个数据项集合占用的数据长度与其所属的数据结构类型关联。
进一步地,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:当待测试数据占用的数据长度大于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 按照相应的对齐字节长度从待测试数据中截取出一个待映射数据段或依次截取出多个待映射数据段;其中,一个待映射数据段占用的数据长度等于所述数据帧构造器内所有数据项集合占用的数据长度的和值;对于一个待映射数据段,结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待映射数据段中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,再由所述测试软件按照该存储顺序读取该待映射数据段以进行测试;其中,所述待测试数据的对应字节数据的映射信息包括功能标记信息和/或存储顺序。
进一步地,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序的方法包括:将各个数据项集合在一个数据帧构造器内的创建顺序配置为所述待映射数据段的对应字节的数据的存储顺序,使该数据帧构造器内的每个数据项集合映射到所述待映射数据段的对应字节数据;所述数据项集合是属于C语言的数据结构时,将该数据项集合内的每个比特位数据的存储顺序配置为具有同一比特位排序的数据在所述待映射数据段的相映射的一个字节数据内的存储顺序,使所述待映射数据段的每个字节数据都按照相映射的数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,并将该数据项集合内每个比特位对应的功能名称设置为该待映射数据段中的对应比特位数据的功能标记信息,其中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节;所述数据项集合是属于标准Python语言的数据结构时,将该数据项集合内的每个字节数据的存储顺序配置为所述待映射数据段的相映射的字节数据的存储顺序,使所述待映射数据段的多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,以便于所述测试软件按照该数据项集合对应的功能名称直接读取该待映射数据段,并将该数据项集合内的一个数据项的功能名称设置为该待映射数据段中对应字节数据的功能标记信息,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节。
进一步地,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:当待测试数据占用的数据长度小于或等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 在所述数据帧构造器内,从第一次创建的数据项集合开始,控制对应的数据项集合按照相应的对齐字节长度遍历所述待测试数据的各个字节数据,直至参与遍历的各个数据项集合占用的数据长度的和值等于待测试数据占用的数据长度;再结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待测试数据中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,再由所述测试软件按照该存储顺序读取所述待测试数据以进行测试;其中,所述待测试数据的对应字节数据的映射信息包括功能标记信息和/或存储顺序。
进一步地,在所述数据帧构造器内,从第一次创建的数据项集合开始,按照相应的对齐字节长度依次遍历所述待测试数据的各个字节数据的过程中,存在:使用当前创建次序的一个数据项集合遍历所述待测试数据内的当前一组字节数据后,控制创建次序靠后的一个数据项集合遍历所述待测试数据内的下一组字节数据,再将创建次序靠后的一个数据项集合更新为当前创建次序的一个数据项集合,并将所述待测试数据内的下一组字节数据更新为所述待测试数据内的当前一组字节数据,如此重复,直至所述数据帧构造器内部分或全部的数据项集合遍历完所述待测试数据,并确定参与遍历的数据项集合占用的数据长度等于所述待测试数据占用的数据长度;其中,当前创建次序的一个数据项集合是属于C语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是一个字节;其中,当前创建次序的一个数据项集合是属于标准Python语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是至少一个字节。
进一步地,所述结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序的方法包括:将一个数据帧构造器内的部分数据项集合或全部数据项集合的创建顺序配置为所述待测试数据的每个字节数据的存储顺序,使所述待测试数据的每个字节数据映射到该数据帧构造器内的对应数据项集合;所述数据项集合是属于C语言的数据结构时,将该数据项集合内的每个比特位的存储顺序配置为具有同一比特位排序的数据在所述待测试数据中被遍历到的一个字节数据内的存储顺序,使该字节数据都按照该数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,并将该数据项集合内每个比特位对应的功能名称设置为该字节数据中的对应比特位数据的功能标记信息,其中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节;所述数据项集合是属于标准Python语言的数据结构时,将该数据项集合内的每个字节数据的存储顺序配置为所述待测试数据中被该数据项集合遍历的字节数据的存储顺序,使所述待测试数据的一个或多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,并将该数据项集合的功能名称设置为被该数据项集合遍历的对应字节数据的功能标记信息,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节。
进一步地,在按照对齐字节长度对待测试数据进行解析的过程中,包括:从一个预先申请的内存地址开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历,以实现对待测试数据的划分;一个数据帧构造器内的数据项集合的创建顺序是该数据项集合在该数据帧构造器所属的内存空间中的排列顺序;待测试数据中被映射的字节数据是被配置上相应的功能标记信息及存储顺序,并且,待测试数据中被映射的字节数据按照该存储顺序缓存到特定的内存地址中,以便于所述测试软件按照测试需求进行读取。
进一步地,所述数据帧构造器包括多个C语言的数据结构和/或标准Python语言的数据结构;在所述数据帧构造器内,每个所述数据项集合的创建顺序是不同,每个所述数据项集合是在预先指定的内存地址处创建出的结构体,用以记录机器设备所需测试的一种或多种功能的功能名称,其中,第一次创建的数据项集合都是在所述数据帧构造器所属的内存空间的首地址处创建出的结构体,该首地址是所述预先申请的内存地址。
进一步地,所述从一个预先申请的内存地址开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历的方法包括:当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的任一个数据项集合占用的数据长度都设置为相应的对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,控制待测试数据的每个字节数据依次与对应的数据项集合对齐,其中,对应数据项集合内的最低比特位或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的每个字节数据落入对应的数据项集合的内存地址上;当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内所有数据项集合占用的数据长度的和值设置为对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,控制每个数据项集合内数据项依次与待测试数据的对应存储顺序的字节数据对齐,其中,每个数据项集合内的最低比特位或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的部分数据填完数据帧构造器内所有数据项集合的内存地址。
本发明的技术效果包括:
本发明公开由多个数据项集合构成的数据帧构造器,该数据帧构造器包括以比特位为标记数据项的单位的数据项集合(属于C语言的数据结构)、与支持标准数据类型的数据项集合(属于标准Python语言的数据结构),形成由多个不同数据结构类型的数据项集合组成的数据结构,在同一个数据帧构造器内允许多种数据结构类型的组合。
每一种数据结构类型的数据项集合内的每个数据项对应一种功能,每种功能对应机器人的一种测试需求,则本发明提供的同一个数据项集合等效于一个子数据构造器,当具体应用于C语言的数据结构时,该子数据构造器相当于位数据构造器(等效于一种构造函数,涉及到以比特位为单位的成员变量),当具体应用于预定义的标准程序语言时,该子数据构造器相当于标准数据结构类型的数据构造器(等效于一种构造函数,涉及到以多个字节为单位的一个成员变量),对应形成Python数据结构的映射关系模型与C数据结构的映射关系模型;从而既可以涵盖多种功能(能够以支持8个比特位为存储单元进行标记),也可以仅涵盖一种功能(能够以相适应的字节为存储单元进行标记),以适应机器人所需测试的各种传感器设备的功能参数类型和清洁组件的功能参数类型的需求,创建出的数据项集合能够自动匹配机器人的关联的测试功能类型,以准确地进行各个字节的测试数据构造,逐个字节的数据构造更具有弹性,可以提升解析待测试数据的准确性、灵活性和通用性。
在创建前述相关数据结构类型的数据项集合后,通过比较外部输入的待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,自适应地选择数据帧构造器内所有数据项集合或单个数据项集合作为字节对齐的映射单位并自动产生相适应的对齐字节长度,然后可以按照对齐字节长度对待测试数据进行解析,实现以字节为单位对一帧数据进行映射转换,获得待测试数据的各个字节数据对应的功能标记信息和/或存储顺序,以供测试软件使用。
具体会在待测试数据占用的数据长度大于所述数据帧构造器内所有数据项集合占用的数据长度的和值时,从待测试数据中截取出待映射数据段,再结合该数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序,有序地让待测试数据被截取的部分以对齐字节长度为单元落入(映射到)每个数据项集合的内存地址中中以完成一帧待测试数据的自适应解析过程,则在待测试数据占用的数据长度较大的阶段,可以单次指定需要解析的待映射数据段即可,灵活性和通用性更高。
另一方面,在当待测试数据占用的数据长度小于或等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 从首个创建的数据项集合开始,依次控制对应的数据项集合按照相应的对齐字节长度遍历所述待测试数据的相应字节,直至遍历完整个待测试数据,再结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序,有序地让待测试数据以对齐字节长度为单元落入(映射到)相匹配的数据项集合的内存地址中以完成一帧待测试数据的自适应解析过程。从而自动兼容不同数据结构类型中的参数对应的功能,全面准确地应对机器人的各种功能的测试需求,提高数据解析的准确率。
在对待测试数据解析的过程中,从一个预先申请的内存地址开始,控制待测试数据的每个字节数据依次与对应的数据项集合对齐,经过字节对齐后,让每个数据项在所属的数据项集合内处于对齐位置时,可以一次被取出,可以减少CPU对内存的访问次数,从而提高测试软件(上位机)读取效率。
附图说明
图1为本发明实施例公开一种基于数据结构类型的数据自适应解析方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用于解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
自动化测试软件通过某些通信接口从机器设备内获取一帧或连续多帧数据后,需将所获取的数据转换为标准的编程语言格式,例如将C语言的数据结构转换为标准Python语言的数据结构以便于上位机使用;为了满足这一转换需求,现有技术的实践中往往需要构造各种类型的数据结构以承载不同类型的数据,相应类型的数据或构造出的数据结构可以用于表示:扫地机器人在地面行进场景中的环境特征数据、扫地机器人自身的位姿信息、扫地机器人自身的工作设备的参数状态,具体地,扫地机器人通过安装的运动传感器采集自身运动状态数据,扫地机器人上安装的运动传感器包括但不限于激光雷达、相机、惯性测量单元或里程计等,扫地机器人还可以通过电流传感器测量电量参数,还可以通过温度传感器测量设备温度,还可以通过湿度传感器测量环境干湿度等,其中,每一种传感器可以对应一种数据类型或一种数据结构类型。然而,每当自动化测试软件获取的测试数据所对应的数据结构发生改变时,需要对相应数据结构内的每个比特位数据进行计算调整,比如频繁地对二进制数据进行移位操作,容易引发测试程序报错,包括死机、数据丢失、非正常中断等现象,而且逐个比特位的操作容易增大设备的通信带宽。
为解决上述问题,本发明实施例公开一种基于数据结构类型的数据自适应解析方法,数据自适应解析方法的执行主体是计算机、用于软件测试的上位机、所需测试的功能的终端设备、或其余关联的待测试功能的机器设备;如图1所示,所述数据自适应解析方法包括:
步骤S1、创建出数据结构类型的数据项集合,以记录机器人所需测试的功能相关联的功能名称,并将所有创建出的数据项集合组成数据帧构造器,然后执行步骤S2。其中,每个数据项集合占用的数据长度与其所属的数据结构类型关联,一个数据帧构造器可以包括多个数据结构类型的数据项集合,则标记出机器人所需测试的多种功能的名称,一种数据结构类型的数据项集合内可以包括至少一种数据类型的数据项,一种待测试功能的名称至少对应一种数据类型的数据项。优选地,不同的数据标识(属于标识变量)的传感器数据是挂载在同一结构体或同一构造函数创建的对象内的相匹配的缓存地址中,每一种数据标识与对应的一种传感器数据类型(主要是C语言的基本数据类型)一一匹配。
步骤S2、从机器人设备的内外部采集待测试数据,待测试数据的来源包括但不限于装配于机器人的机壳的地检传感器、陀螺仪、光流传感器、激光传感器、摄像头、tof模组、超声波传感器、以及装配于机器人的机体外部的WiFi模组;当机器人是扫地机器人时,待测试数据的来源包括但不限于装配于机器人的机体的边刷、滚刷、拖布、水箱以及与室内清洁关联的清洁组件;待测试数据的功能标识可以划分为是否可用、是否被校准、是否安装、是否被检测到、是否被初始化、是否发生碰撞、规划行走与否、充电与否、驱动轮悬空与否、强度、距离、速度等,其中,待测试数据的功能标识因待测试数据对应的功能的不同而有所差异。然后通过比较所述待测试数据占用的数据长度与所述数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度,然后执行步骤S3;优选地,步骤S2可以在数据类型、结构体或对象的方面,控制所述待测试数据与所述数据帧构造器内的所有数据项集合整体比较,取较小的数据长度作为对齐的字节长度,形成以字节为单位的解析所述待测试数据的合理对齐值,以节省CPU读写带宽。
步骤S3、结合数据帧构造器内的各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析,获得待测试数据的对应字节数据的映射信息,以供测试软件使用,优选地会将所有映射完成的数据键值(映射信息)对放置到字典容器中,供后续上位机使用,这里会产生数据类型上的映射包括C语言的基本数据类型转换为标准的数据类型,比如将size_t转换为整型、将char[]转换为字节串、将_Bool转换为bool,以便于测试软件直接调用测试。作为一种实施方式,在步骤S3中将所述待测试数据(相当于输入所述数据自适应解析方法的执行主体的原始数据)解包待测试数据的各个字节数据对应的功能标记信息和/或存储顺序,并按各个数据项集合的初始化顺序映射数据或直接为相应映射的地址赋值处理,其中,所述映射信息包括功能标记信息和/或存储顺序,优选地,利用待测试功能的类型标签集,对每个字节数据设置标签,对每个字节数据整体设置类型标签;当然在一些实施例中,也可以将步骤S1至步骤S3计为测试软件的测试操作的一部分,即测试软件对所述待测试数据的测试流程中的涉及的数据映射步骤,包括类型映射和/或地址空间映射。
综上,步骤S1在创建相关数据结构类型的数据项集合后,通过比较外部输入的待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,自适应地选择数据帧构造器内所有数据项集合或单个数据项集合作为字节对齐的映射单位,并自动产生相适应的对齐字节长度,然后可以按照对齐字节长度对待测试数据进行解析,实现以字节为单位对一帧数据进行映射转换,获得待测试数据的各个字节数据对应的功能标记信息和/或存储顺序,以供测试软件使用,当中对状态位数据不需要单独的计算处理,每当数据结构发生改变时,本发明以字节为长度单元对待测试数据进行计算调整,以完成对待测试数据的解析,因而,在测试软件对解析后的数据测试过程中,减少对单帧数据包的各个比特位移位计算的操作次数,增强测试软件程序运行的鲁棒性和稳定性。
作为一种实施例,当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的一个数据项集合占用的数据长度设置为对齐字节长度,其中当前设置为对齐字节长度的一个数据项集合是当前遍历所述待测试数据(对应映射为至少一个字节长度)的一个数据项集合,因此,在数据帧构造器内的各个数据项集合所属的数据结构类型不完全相同时,每遍历所述待测试数据的至少一个字节长度的数据段,则设置出一种对齐字节长度,而且先后设置出对齐字节长度互不相同。当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内所有数据项集合占用的数据长度的和值设置为对齐字节长度,则本实施例将数据帧构造器内所有数据项集合作为字节对齐的单位,即作为待测试数据的解析单位,其中,数据帧构造器内的每个数据项集合占用的数据长度都是以字节为单位计数得到,则对齐字节长度包括多个字节长度。因此,本实施例以数据类型、结构体或对象为度量单位,控制所述待测试数据与所述数据帧构造器内的所有数据项集合进行数据长度上的比较,取较小的数据长度作为对齐的字节长度,形成以字节为单位的解析所述待测试数据的合理对齐值,以节省测试软件的读写带宽,高效稳定地控制待测试数据映射到所述数据帧构造器内的组成等同字节长度的数据项集合、或确定所述待测试数据与所述数据帧构造器内的组成等同字节长度的数据项集合的映射关系。
作为一种实施例,所述数据帧构造器包括多个C语言的数据结构和/或标准Python语言的数据;所述数据帧构造器是配置为包括多个C语言的数据结构和/或标准Python语言的数据结构的一种数据结构,用于遍历一帧待测试数据,其中,一个C语言的数据结构可以包括数组、结构体或其它能够枚举至少一种数据类型的数据结构以对应填充一帧待测试数据的各个字节数据,一个标准Python语言的数据结构只能枚举一种数据类型。在所述数据帧构造器内,每个所述数据项集合的创建顺序是不同,每个所述数据项集合在所述数据帧构造器内是有排序和对应的内存创建时间,则每个所述数据项集合内的数据项及其关联的机器人所需测试功能的功能名称的变量初始化时间是不同。在本实施例中,每个所述数据项集合是在预先指定的内存地址处创建出的结构体,用以记录机器人所需测试的一种或多种功能的功能名称及其含义。其中,第一次创建的数据项集合是在所述数据帧构造器所属的内存空间的首地址处创建出的结构体,该首地址是预先申请的内存地址,具体可以对应为编程语言库内存储的一个构造函数所包含的地址参数,该构造函数也可以对预先指定的内存地址处的数据项集合进行初始化处理。从而按照数据按照结构类型对所述待测试数据进行分组,得到多个数据组,每一数据组对应的数据结构按照机器人所需测试的功能进行划分(按照功能名称的维度进行标识),可以得到多个数据类别,若将每一数据类别对应的数据存储在内存同一列或同一行中,则可以生成与所述待测试数据对应的数据存储格式标识,便于测试软件读取运用。
优选地,一个数据项集合是属于属于C语言的数据结构时,该数据项集合中除了必要的标识字符(不属于数据项,不纳入数据长度的计算当中)之外,由8个数据项组成,按顺序分别对应C语言的数据结构中的第一个比特位bit0至第八个比特位bit7,所占数据长度为1字节,这里的数据长度指的是数据的字节大小;则该数据项集合相当于一个位数据构造器,位数据构造器内的数据项存储各种二进制数,每个位数据构造器都可以代表8个二进制数,目的在于减少传输的数据大小,节省带宽。
优选地,一个数据项集合也可以由一个数据项组成,该数据项只对应标准Python语言的一种数据类型,其计量单位为字节,而该数据项集合至少占用一个字节,还存在对应的存储格式标识字符以便于计数遍历其数据长度。
需要说明的是,每个数据项集合是属于一种数据结构;接受一帧待测试数据,再由各个数据结构类型的数据项集合分类打包,实现功能标记,比如,为室内清洁场景下设各种子功能(比如清洁地毯、拖地、规划清扫、停止吸尘等)分别打标签,即每个数据项被赋予一个数据项名称及其数据项名称,只是给对应内存地址添加标记定义,适应于对同一帧待测试数据的分组解析;则测试软件依次得到每种子功能所需的数据类型,与实际具体功能所需使用的测试数据关联。然后不同数据结构类型的数据项集合之间可以形成映射关系,单个数据项集合相对于待测试数据也可以形成映射关系。
在用于传感器测试的实施例中,当通信接口获取机器人的传感器所采集的传感器数据并在建立通信联系后将所述传感器数据传输给关联的通信总线控制设备,需要注意的是,每一种传感器对应采集一种数据类型的传感器数据,不同类型的传感器对应采集的传感器数据的数据类型不同;数据类型作为传感器数据的数字标识、或传感器设备的型号标识符,可以通过一个数据项集合或一个数据帧构造器完成对各种传感器设备的枚举;则在本实施例中根据机器人实际装配的传感器的数据类型,预先定义出对应的数据项集合及其内部包括的数据项(包括数据项名称及其含义,还包括标识字符),形成用于遍历和解析所述待测试数据的数据构造器,而且,本实施例会选择以构造器为单位去遍历所述待测试数据以进行字节长度的匹配,并将数据项名称设置为解析所需的标识字段。
结合前述实施例,本发明公开由多个数据项集合构成的数据帧构造器,该数据帧构造器包括以比特位为标记数据项的单位的数据项集合(属于C语言的数据结构)、与支持标准数据类型的数据项集合(属于标准Python语言的数据结构),形成由多个不同数据结构类型的数据项集合组成的数据结构,在同一个数据帧构造器内允许多种数据结构类型的组合。在前述实施例中,每一种数据结构类型的数据项集合内的每个数据项对应一种功能,每种功能对应机器人的一种测试需求,则本发明提供的同一个数据项集合等效于一个子数据构造器,当具体应用于C语言的数据结构时,该子数据构造器相当于位数据构造器(等效于一种构造函数,涉及到以比特位为单位的成员变量),当具体应用于预定义的标准程序语言时,该子数据构造器相当于标准数据结构类型的数据构造器(等效于一种构造函数,涉及到以多个字节为单位的一个成员变量),对应形成Python数据结构的映射关系模型与C数据结构的映射关系模型;从而既可以涵盖多种功能(能够以支持8个比特位为存储单元进行标记),也可以仅涵盖一种功能(能够以相适应的字节为存储单元进行标记),以适应机器人所需测试的各种传感器设备的功能参数类型和清洁组件的功能参数类型的需求,创建出的数据项集合能够自动匹配机器人的关联的测试功能类型,以准确地进行各个字节的测试数据构造,逐个字节的数据构造更具有弹性,可以提升解析待测试数据的准确性、灵活性和通用性。
作为一种实施例,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:当待测试数据占用的数据长度大于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 按照相应的对齐字节长度从待测试数据中截取出一个待映射数据段或依次截取出多个待映射数据段,其中,相应的对齐字节长度是所述数据帧构造器内所有数据项集合占用的数据长度的和值,优选地,按照相应的对齐字节长度从待测试数据中截取出的一个待映射数据段是从数据帧构造器的首地址开始截取出的一个字节长度(数据长度)等于所述数据帧构造器内所有数据项集合占用的数据长度的数据段,一个待映射数据段占用的数据长度等于所述数据帧构造器内所有数据项集合占用的数据长度的和值;优选地,按照相应的对齐字节长度从待测试数据中依次截取出多个待映射数据段,可以遍历完待测试数据,以将所述待测试数据全部划分为多个待映射数据段(包括填充字段),或将所述待测试数据的有效部分划分为多个待映射数据段。在本实施例中,对于一个待映射数据段,结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待映射数据段中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,也可以视为完成所述待测试数据的映射;其中,映射完成的待测试数据依次存放在对应的数据项集合的内存地址中;再由所述测试软件按照该存储顺序读取该待映射数据段以进行测试,则所述待映射数据段在所述测试软件内按照所有数据项集合对应标记的功能进行测试。
优选地,数据帧构造器内各个数据项集合所属的数据结构类型可以是C语言的数据结构、或标准Python语言的数据结构,所述待测试数据的对应字节数据在前述实施例中的映射信息包括功能标记信息和/或存储顺序,其中一个或多个字节的数据对应一种功能标记信息,具体的字节长度是由数据项集合所包括的数据项适用的数据类型决定,比如标准Python语言的数据结构内的一个用于标记深度相机的探测距离的数据项是对应为一种整数型,其占用4个字节,则使用4个字节的内存空间来标记一种功能标记信息。
在本实施例中,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序的方法包括:将各个数据项集合在一个数据帧构造器内的创建顺序配置为所述待映射数据段的对应字节的数据的存储顺序,使该数据帧构造器内的每个数据项集合映射到所述待映射数据段的对应字节数据,进而使得所述待映射数据段的部分或全部字节数据依次落入该数据帧构造器内的每个数据项集合的内存地址中。
具体地,所述数据项集合是属于C语言的数据结构时,该数据项集合可以视为一个结构体,等效于位构造器,该结构体内包括多个成员变量,每个成员变量标记一种待测功能的名称,在本实施例中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,即一个成员变量占用一个比特位这一数据长度,体现在内存空间上,便于地址的计算和比特位的遍历计数,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节。在本实施例中,所述数据项集合是属于C语言的数据结构时,将该数据项集合内的每个比特位数据的存储顺序配置为具有同一比特位排序的数据在所述待映射数据段的相映射的一个字节数据内的存储顺序,是属于数据项集合内的每个比特位数据的初始化顺序;所述待映射数据段由外部传输到所述数据自适应解析方法的执行主体或所述数据项集合所在的内存空间后,所述待映射数据段的相映射的一个字节数据内的每个比特位被配置为与该数据项集合内的对应比特位数据一一对齐,形成地址上的字节对齐,使所述待映射数据段的每个字节数据都按照相映射的数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,以便于所述测试软件有序地读取该待映射数据段的每个字节数据,并将该数据项集合内每个比特位对应的功能名称设置为该待映射数据段中的对应比特位数据的功能标记信息,则测试软件按照该数据项集合内的最低比特位至其最高比特位的数据排序读取该待映射数据段(单个字节数据)。优选地,一个数据项集合可以填充成8个比特位的数据以对齐所述待映射数据段,但不一定遍历完所述待测试数据,能够按位构造器的结构完成对待映射数据段的映射操作;完成所述待映射数据段的解析,也完成该待映射数据段的逐字节的映射。
另一方面,所述数据项集合是属于标准Python语言的数据结构时,该数据项集合是包括一个数据项的数据结构,用于标记一种功能,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节,具体的数据长度是由该数据项集合所包括的数据项所属的数据类型决定,可以参考C语言的基本数据类型,例如长整型long的数据占用4个字节,双浮点型double的数据占用8个字节,所述数据帧构造器内包括的每个标准Python语言的数据结构占用的数据长度不一定相同,但所述数据帧构造器内包括的每个C语言的数据结构占用的数据长度固定等于1个字节。在本实施例中,将该数据项集合内的每个字节数据的存储顺序配置为所述待映射数据段的相映射的字节数据的存储顺序,使所述待映射数据段的多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,比如,一个数据项集合占用4个字节的数据长度,则所述待映射数据段存在4个字节的数据依次与该数据项集合的一个数据项的4个字节的数据对齐,则该数据项集合内的每个字节数据在同一个内存空间内的存储顺序配置为所述待映射数据段的相对齐(理解为地址相映射或数据相映射的一种形式)的字节数据的存储顺序,从而让所述待映射数据段的4个字节的数据都映射到同一个数据项集合内,并依次对应到同一个数据项集合内的4个内存地址上,其中,一个字节数据配置一个内存地址,以便于所述测试软件按照该数据项集合对应的功能名称直接读取该待映射数据段,并将该数据项集合内的一个数据项的功能名称设置为该待映射数据段中对应字节数据的功能标记信息,完成映射,实现标准Python语言的数据结构以字节为单位对该待映射数据段直接赋值,不需要逐个比特位地拆分数据,在映射后获取标准Python语言的数据类型,便于测试软件调用。
综合前述实施例,在创建前述相关数据结构类型的数据项集合后,通过比较外部输入的待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,自适应地选择数据帧构造器内所有数据项集合或单个数据项集合作为字节对齐的映射单位并自动产生相适应的对齐字节长度,然后可以按照对齐字节长度对待测试数据进行解析,实现以字节为单位对一帧数据进行映射转换,获得待测试数据的各个字节数据对应的功能标记信息和/或存储顺序,以供测试软件使用。具体会在待测试数据占用的数据长度大于所述数据帧构造器内所有数据项集合占用的数据长度的和值时,从待测试数据中截取出待映射数据段,再结合该数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序,有序地让待测试数据被截取的部分以对齐字节长度为单元落入(映射到)每个数据项集合的内存地址中中以完成一帧待测试数据的自适应解析过程,则在待测试数据占用的数据长度较大的阶段,可以单次指定需要解析的待映射数据段即可,灵活性和通用性更高。
作为一种实施例,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:当待测试数据占用的数据长度小于或等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 在所述数据帧构造器内,从第一次创建的数据项集合开始,具体是所述数据帧构造器的数据项的首个存储地址开始,控制对应的数据项集合按照相应的对齐字节长度遍历所述待测试数据的各个字节数据,直至参与遍历的各个数据项集合占用的数据长度的和值等于待测试数据占用的数据长度,即在所述数据帧构造器内,从第一个数据项集合至第N个数据项集合依次对齐所述待测试数据的第一个字节数据至第M个字节数据,其中,所述待测试数据占用的数据长度是M个字节,但所述数据帧构造器内创建的数据项集合的数量是大于或等于N,无论所述数据帧构造器内的数据项集合是属于哪种数据结构类型,该数据帧构造器都能够提供M个字节的映射单元,对齐于所述待测试数据;当该数据项集合属于C语言的数据结构时,所述数据帧构造器内创建的数据项集合的数量是大于或等于M;当该数据项集合属于标准Python语言的数据结构时,由于该数据结构类型占用的数据长度不是固定且至少大于或等于一个字节,所以所述数据帧构造器内创建的数据项集合的数量是大于或等于M。然后结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序(等效于在同一内存空间内的各个数据项集合的地址排序),为所述待测试数据的各个字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待测试数据中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,也可视为完成所述待测试数据的一次完整的映射,其中,映射完成的待测试数据依次存放在对应的数据项集合的内存地址中;再由所述测试软件按照该存储顺序读取所述待测试数据以进行测试,具体是在所述测试软件内按照参与遍历的数据项集合对应标记的功能,依次进行测试。基于该实施例,在当待测试数据占用的数据长度小于或等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 从首个创建的数据项集合开始,依次控制对应的数据项集合按照相应的对齐字节长度遍历所述待测试数据的相应字节,直至遍历完整个待测试数据,再结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序,有序地让待测试数据以对齐字节长度为单元落入(映射到)相匹配的数据项集合的内存地址中以完成一帧待测试数据的自适应解析过程。从而自动兼容不同数据结构类型中的参数对应的功能,全面准确地应对机器人的各种功能的测试需求,提高数据解析的准确率。
在本实施例中,在所述数据帧构造器内,从第一次创建的数据项集合开始,按照相应的对齐字节长度依次遍历所述待测试数据的各个字节数据的过程中,存在:使用当前创建次序的一个数据项集合遍历所述待测试数据内的当前一组字节数据后,控制创建次序靠后的一个数据项集合遍历所述待测试数据内的下一组字节数据,再将创建次序靠后的一个数据项集合更新为当前创建次序的一个数据项集合,并将所述待测试数据内的下一组字节数据更新为所述待测试数据内的当前一组字节数据,则实现使用创建次序靠后的一个数据项集合遍历所述待测试数据内的排序靠后的下一组字节数据,如此重复,直至所述数据帧构造器内部分或全部的数据项集合遍历完所述待测试数据,并确定参与遍历的数据项集合占用的数据长度等于所述待测试数据占用的数据长度,使用同等字节长度的数据项集合完成对所述待测试数据的解析(逐一遍历并映射)。在本实施例中,当前创建次序的一个数据项集合是属于C语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是一个字节;当前创建次序的一个数据项集合是属于标准Python语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是至少一个字节,实现使用1个或多个字节的内存空间表示数据长度相等的一种数据类型对应的功能名称,或表示数据长度相等的一种数据结构对应的多种功能名称。其中,当前创建次序总是比创建次序靠后的一个数据项集合的次序小1,所述待测试数据内的当前一组字节数据的组别总是比所述待测试数据内的下一组字节数据的组别小1,其中每组字节数据占用的数据长度不一定相等,具体会随着每组字节数据所属的数据类型的变化而变化,则实现结合数据帧构造器内各个数据项集合所属的数据结构类型,使用同等字节长度的数据项集合完成对所述待测试数据的自适应解析(按照各个数据类型所占用的字节长度(数据长度)遍历并映射)。
具体地,所述结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序的方法包括:将一个数据帧构造器内的部分数据项集合或全部数据项集合的创建顺序配置为所述待测试数据的每个字节数据的存储顺序,使所述待测试数据的每个字节数据映射到该数据帧构造器内的对应数据项集合,其中,当待测试数据占用的数据长度小于所述数据帧构造器内所有数据项集合占用的数据长度的和值时,一个数据帧构造器内的部分数据项集合的创建次序依次配置为所述待测试数据的每个字节数据的存储顺序;当待测试数据占用的数据长度等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时,一个数据帧构造器内的全部数据项集合的创建次序依次配置为所述待测试数据的每个字节数据的存储顺序。
所述数据项集合是属于C语言的数据结构时,该数据项集合可以视为一个结构体,等效于位构造器,该结构体内包括多个成员变量,每个成员变量标记一种待测功能的名称,在本实施例中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,即一个成员变量占用一个比特位这一数据长度,体现在内存空间上,便于地址的计算和比特位的遍历计数,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节。然后本实施例将该数据项集合内的每个比特位的存储顺序配置为具有同一比特位排序的数据在所述待测试数据中被该数据项集合遍历到的一个字节数据内的存储顺序,是属于数据项集合内的每个比特位数据的初始化顺序;被遍历的该字节数据由外部传输到所述数据自适应解析方法的执行主体或该数据项集合所在的内存空间后,该字节数据段的相映射的一个字节数据内的每个比特位被配置为与该数据项集合内的对应比特位数据一一对齐,形成地址上的字节对齐,使该字节数据都按照该数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,则测试软件按照该数据项集合内的最低比特位至其最高比特位的数据排序读取所述待测试数据当中的每个字节数据。优选地,一个数据项集合可以填充成8个比特位的数据以对齐所述待测试数据所有字节数据,以便于所述测试软件有序地读取该字节数据,并将该数据项集合内每个比特位对应的功能名称设置为该字节数据中的对应比特位数据的功能标记信息,从而以字节为单位完成所述待映射数据段的解析,也完成该待映射数据段的逐字节的映射。
另一方面,所述数据项集合是属于标准Python语言的数据结构时,该数据项集合是包括一个数据项的数据结构,用于标记一种功能,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节,具体的数据长度是由该数据项集合所包括的数据项所属的数据类型决定。在本实施例中,将该数据项集合内的每个字节数据的存储顺序配置为所述待测试数据中被该数据项集合遍历的字节数据的存储顺序,使所述待测试数据的一个或多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,比如,一个数据项集合占用2个字节的数据长度,则所述待测试数据的被该数据项集合遍历的字节数据当中,存在2个字节的数据依次与该数据项集合的一个数据项的2个字节的数据对齐,则该数据项集合内的每个字节数据在同一个内存空间内的存储顺序配置为所述待测试数据中被该数据项集合遍历的字节数据相对齐(理解为地址相映射或数据相映射的一种形式)的数据的存储顺序,依次完成对应字节数据的内存地址的对齐,以便于所述测试软件有序读取所述待测试数据中被该数据项集合遍历的字节数据,并将该数据项集合的功能名称设置为被该数据项集合遍历的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,也可视为完成所述待测试数据的一次完整的自适应映射(按照各个数据类型所占用的字节长度(数据长度)遍历并映射),实现标准Python语言的数据结构以字节为单位对该待映射数据段直接赋值,不需要逐个比特位地拆分数据,在映射后获取标准Python语言的数据类型,便于测试软件调用。
基于前述实施例,在按照对齐字节长度对待测试数据进行解析的过程中,包括:从一个预先申请的内存地址(作为首地址)开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历,以实现对待测试数据的划分,其中,数据帧构造器及其内部的数据项集合都是从所述预先申请的内存地址开始申请的预定大小的内存空间,一个数据帧构造器内的数据项集合的创建顺序是该数据项集合在该数据帧构造器所属的内存空间中的排列顺序,排序的依据是按照时间的创建顺序。所述待测试数据中被映射的字节数据(或该字节数据中的一个比特位数据)是被配置上相应的功能标记信息及存储顺序,并且,待测试数据中被映射的字节数据(或该字节数据中的一个比特位数据)按照该存储顺序缓存到特定的内存地址中,以便于所述测试软件按照测试需求进行读取对应的功能标记信息。
作为一种实施例,所述从一个预先申请的内存地址开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历的方法包括:当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的任一个数据项集合占用的数据长度都设置为相应的对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,即从数据帧构造器内设置的首地址开始,控制待测试数据的每个字节数据依次与对应的数据项集合对齐,此时,待测试数据的每个字节数据被对应的数据项集合解析处理(等效于映射到对应的数据项集合的数据项当中),其中,对应的数据项集合内的最低比特位或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的每个字节数据落入对应的数据项集合的内存地址上。
当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度时,将数据帧构造器内所有数据项集合占用的数据长度设置为对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,即从数据帧构造器内设置的首地址开始,控制每个数据项集合内数据项依次与待测试数据的对应存储顺序的字节数据对齐,此时,数据帧构造器内所有的数据项集合都被调用于解析所述待测试数据,具体可以是对所述待映射数据段进行解析,其中,每个数据项集合内的最低比特位的存储地址或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的部分数据填完数据帧构造器内所有数据项集合的内存地址。
因此,在对待测试数据解析的过程中,从一个预先申请的内存地址开始,控制待测试数据的每个字节数据依次与对应的数据项集合对齐,经过字节对齐(其中,字节对齐是指数据字节按照一定规则在内存空间上排列)后,让每个数据项在所属的数据项集合内处于对齐位置时,可以一次被取出,可以减少CPU对内存的访问次数,从而提高测试软件(上位机)读取效率。
优选地,一个数据项集合内,存在占用8个字节的标准的double型的数据项,则数据帧构造器内的起始地址(第一个创建的数据项集合的首地址)可以位于8字节的边界,即首地址可以被8整除,在32位CPU的读写操作下,假设一个整型变量的地址为0x00000008(为8的倍数),即属于对齐的,而如果其地址为0x00000002(非8的倍数)则是非对齐的。所述待测试数据的8个字节数据落入该数据项集合内的数据项处于对齐位置时,可以被一次取出,提升读取效率。
属于C语言的数据结构类型的一个数据项集合内,一般是由8个比特位的二进制数组成,其数据长度占用8个字节,在一些实施例中,该数据结构类型的数据项集合内只存在7比特位的二进制数,其最高位的二进制数据是没有配置相应的功能标记信息,则需要使用系统默认值填充完整,可以通过在最后一个成员之后添加额外的字节来完成的,凑足一个字节长度,实现结构成员对齐,则该数据项集合内的最高比特位的存储地址被该数据项集合占用的数据长度整除,是8的倍数,进而在映射过程中引导所述待测试数据与存储器的物理分区长度对齐,后续只需按所述存储顺序将待测试数据写入硬件设备即可,相对于这个比特位移位操作,加快CPU对内存数据的访问,很大程度上节省了处理时间和程序空间,提高了测试效率。
本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现,以上描述的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有其它划分方式,例如多个模块或组件可以结合或可以集成到另一个系统,或一些特征可以忽略或不执行,可以根据实际的需要选择其中的部分或全部模块来实现本实施例方案的目的。
最后应当说明的是,以上各实施例仅仅是本发明的一部分实施例,而不是全部实施例,各个实施例之间的技术方案可以相互结合,实施例所公开的具体步骤可以根据实际需求调整顺序以达到相同的技术效果。本领域的普通技术人员应当理解,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,均应包括在本发明的保护范围之内。

Claims (10)

1.基于数据结构类型的数据自适应解析方法,其特征在于,数据自适应解析方法包括:
创建出相应数据结构类型的数据项集合,并将所有创建出的数据项集合组成数据帧构造器;
从机器设备的内外部采集待测试数据,再通过比较待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度;
结合数据帧构造器内的各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析,获得待测试数据的对应字节数据的映射信息,以供测试软件使用。
2.根据权利要求1所述数据自适应解析方法,其特征在于,所述通过比较待测试数据占用的数据长度与数据帧构造器内所有数据项集合占用的数据长度的和值的大小关系,获得对齐字节长度的方法包括:
当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的一个数据项集合占用的数据长度设置为对齐字节长度;
当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内所有数据项集合占用的数据长度的和值设置为对齐字节长度;
其中,数据帧构造器内的每个数据项集合占用的数据长度都是以字节为单位计数得到;每个数据项集合占用的数据长度与其所属的数据结构类型关联。
3.根据权利要求2所述数据自适应解析方法,其特征在于,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:
当待测试数据占用的数据长度大于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 按照相应的对齐字节长度从待测试数据中截取出一个待映射数据段或依次截取出多个待映射数据段;其中,一个待映射数据段占用的数据长度等于所述数据帧构造器内所有数据项集合占用的数据长度的和值;
对于一个待映射数据段,结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待映射数据段中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,再由所述测试软件按照该存储顺序读取该待映射数据段以进行测试;其中,所述待测试数据的对应字节数据的映射信息包括功能标记信息和/或存储顺序。
4.根据权利要求3所述数据自适应解析方法,其特征在于,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,为该待映射数据段中的对应字节数据配置对应的存储顺序的方法包括:
将各个数据项集合在一个数据帧构造器内的创建顺序配置为所述待映射数据段的对应字节的数据的存储顺序,使该数据帧构造器内的每个数据项集合映射到所述待映射数据段的对应字节数据;
所述数据项集合是属于C语言的数据结构时,将该数据项集合内的每个比特位数据的存储顺序配置为具有同一比特位排序的数据在所述待映射数据段的相映射的一个字节数据内的存储顺序,使所述待映射数据段的每个字节数据都按照相映射的数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,并将该数据项集合内每个比特位对应的功能名称设置为该待映射数据段中的对应比特位数据的功能标记信息,其中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节;
所述数据项集合是属于标准Python语言的数据结构时,将该数据项集合内的每个字节数据的存储顺序配置为所述待映射数据段的相映射的字节数据的存储顺序,使所述待映射数据段的多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,以便于所述测试软件按照该数据项集合对应的功能名称直接读取该待映射数据段,并将该数据项集合内的一个数据项的功能名称设置为该待映射数据段中对应字节数据的功能标记信息,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节。
5.根据权利要求2所述数据自适应解析方法,其特征在于,所述结合数据帧构造器内各个数据项集合所属的数据结构类型,按照对齐字节长度对待测试数据进行解析的方法包括:
当待测试数据占用的数据长度小于或等于所述数据帧构造器内所有数据项集合占用的数据长度的和值时, 在所述数据帧构造器内,从第一次创建的数据项集合开始,控制对应的数据项集合按照相应的对齐字节长度遍历所述待测试数据的各个字节数据,直至参与遍历的各个数据项集合占用的数据长度的和值等于待测试数据占用的数据长度;再结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序,并将每个数据项集合相关联的功能名称设置为该待测试数据中的对应字节数据的功能标记信息,并确定完成所述待测试数据的解析,再由所述测试软件按照该存储顺序读取所述待测试数据以进行测试;其中,所述待测试数据的对应字节数据的映射信息包括功能标记信息和/或存储顺序。
6.根据权利要求5所述数据自适应解析方法,其特征在于,在所述数据帧构造器内,从第一次创建的数据项集合开始,按照相应的对齐字节长度依次遍历所述待测试数据的各个字节数据的过程中,存在:
使用当前创建次序的一个数据项集合遍历所述待测试数据内的当前一组字节数据后,控制创建次序靠后的一个数据项集合遍历所述待测试数据内的下一组字节数据,再将创建次序靠后的一个数据项集合更新为当前创建次序的一个数据项集合,并将所述待测试数据内的下一组字节数据更新为所述待测试数据内的当前一组字节数据,如此重复,直至所述数据帧构造器内部分或全部的数据项集合遍历完所述待测试数据,并确定参与遍历的数据项集合占用的数据长度等于所述待测试数据占用的数据长度;
其中,当前创建次序的一个数据项集合是属于C语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是一个字节;
其中,当前创建次序的一个数据项集合是属于标准Python语言的数据结构时,所述待测试数据内的当前一组字节数据占用的数据长度是至少一个字节。
7.根据权利要求6所述数据自适应解析方法,其特征在于,所述结合参与遍历的各个数据项集合所属的数据结构类型,利用参与遍历的各个数据项集合的遍历顺序,为所述待测试数据的各个字节数据配置对应的存储顺序的方法包括:
将一个数据帧构造器内的部分数据项集合或全部数据项集合的创建顺序配置为所述待测试数据的每个字节数据的存储顺序,使所述待测试数据的每个字节数据映射到该数据帧构造器内的对应数据项集合;
所述数据项集合是属于C语言的数据结构时,将该数据项集合内的每个比特位的存储顺序配置为具有同一比特位排序的数据在所述待测试数据中被遍历到的一个字节数据内的存储顺序,使该字节数据都按照该数据项集合内的最低比特位至其最高比特位的数据排序拆分为8个比特位数据,并将该数据项集合内每个比特位对应的功能名称设置为该字节数据中的对应比特位数据的功能标记信息,其中,属于C语言的数据结构的一个数据项集合内的一个比特位对应一个数据项,一个数据项用于记录一种功能名称,该数据项集合占用的数据长度是1个字节;
所述数据项集合是属于标准Python语言的数据结构时,将该数据项集合内的每个字节数据的存储顺序配置为所述待测试数据中被该数据项集合遍历的字节数据的存储顺序,使所述待测试数据的一个或多个字节数据都映射到同一个数据项集合内对应字节数据的内存地址上,并将该数据项集合的功能名称设置为被该数据项集合遍历的对应字节数据的功能标记信息,其中,属于标准Python语言的数据结构的一个数据项集合对应记录一种功能名称,该数据项集合占用的数据长度是大于或等于1个字节。
8.根据权利要求4或7所述数据自适应解析方法,其特征在于,在按照对齐字节长度对待测试数据进行解析的过程中,包括:
从一个预先申请的内存地址开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历,以实现对待测试数据的划分;
一个数据帧构造器内的数据项集合的创建顺序是该数据项集合在该数据帧构造器所属的内存空间中的排列顺序;
待测试数据中被映射的字节数据是被配置上相应的功能标记信息及存储顺序,并且,待测试数据中被映射的字节数据按照该存储顺序缓存到特定的内存地址中,以便于所述测试软件按照测试需求进行读取。
9.根据权利要求8所述数据自适应解析方法,其特征在于,所述数据帧构造器包括多个C语言的数据结构和/或标准Python语言的数据结构;
在所述数据帧构造器内,每个所述数据项集合的创建顺序是不同,每个所述数据项集合是在预先指定的内存地址处创建出的结构体,用以记录机器设备所需测试的一种或多种功能的功能名称,其中,第一次创建的数据项集合都是在所述数据帧构造器所属的内存空间的首地址处创建出的结构体,该首地址是所述预先申请的内存地址。
10.根据权利要求8所述数据自适应解析方法,其特征在于,所述从一个预先申请的内存地址开始,以相应的对齐字节长度为步长,依次对待测试数据的相应字节进行遍历的方法包括:
当待测试数据占用的数据长度小于或等于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内的任一个数据项集合占用的数据长度都设置为相应的对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,控制待测试数据的每个字节数据依次与对应的数据项集合对齐,其中,对应数据项集合内的最低比特位或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的每个字节数据落入对应的数据项集合的内存地址上;
当待测试数据占用的数据长度大于数据帧构造器内所有数据项集合占用的数据长度的和值时,将数据帧构造器内所有数据项集合占用的数据长度的和值设置为对齐字节长度,然后按照数据项集合的创建顺序,从一个预先申请的内存地址开始,控制每个数据项集合内数据项依次与待测试数据的对应存储顺序的字节数据对齐,其中,每个数据项集合内的最低比特位或最高比特位的存储地址被该数据项集合占用的数据长度整除,并让待测试数据的部分数据填完数据帧构造器内所有数据项集合的内存地址。
CN202211063106.7A 2022-09-01 2022-09-01 基于数据结构类型的数据自适应解析方法 Pending CN115470123A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211063106.7A CN115470123A (zh) 2022-09-01 2022-09-01 基于数据结构类型的数据自适应解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211063106.7A CN115470123A (zh) 2022-09-01 2022-09-01 基于数据结构类型的数据自适应解析方法

Publications (1)

Publication Number Publication Date
CN115470123A true CN115470123A (zh) 2022-12-13

Family

ID=84368469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211063106.7A Pending CN115470123A (zh) 2022-09-01 2022-09-01 基于数据结构类型的数据自适应解析方法

Country Status (1)

Country Link
CN (1) CN115470123A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775490A (zh) * 2023-06-26 2023-09-19 珠海精实测控技术股份有限公司 测试数据云系统及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775490A (zh) * 2023-06-26 2023-09-19 珠海精实测控技术股份有限公司 测试数据云系统及方法

Similar Documents

Publication Publication Date Title
CN107894762B (zh) 实物仿真测试系统
US6539341B1 (en) Method and apparatus for log information management and reporting
JPH10105427A (ja) 電子相互接続バス上でのメモリアクセスに関する状態論理データを表示するためのコンピュータ操作可能な方法
CN102236600B (zh) 获得代码覆盖率的方法及装置
CN103593271A (zh) 一种片上系统芯片追踪调试的方法及装置
CN102523129A (zh) 一种通用的航空总线测试分析方法及其装置
CN115470123A (zh) 基于数据结构类型的数据自适应解析方法
CN102798833B (zh) 诊断仪自动测试系统与方法
CN104267683B (zh) 产品质量测试启动控制系统及产品质量测试启动控制方法
CN115470750A (zh) 基于追踪文件的芯片性能验证系统
CN105892932A (zh) 用于磁盘数据管理的方法和装置
CN113312322B (zh) Stdf文件的读写方法、介质、设备及装置
CN107783728A (zh) 数据存储方法、装置和设备
CN107515803A (zh) 一种存储性能测试方法和装置
CN101211294A (zh) 显示内存测试系统及方法
CN109889481B (zh) 基于多传感器设备数据采集融合方法及装置
CN108133116A (zh) Cad户型图墙厚自动识别方法及系统
CN114610557B (zh) 设备驱动单元的测试方法及装置
CN114679402B (zh) 一种医疗机器人上下位机间通信协议的测试方法及装置
CN103995765B (zh) 一种led控制卡自动测试系统及方法
US20020199140A1 (en) Method and apparatus for collecting and displaying bit-fail-map information
US20040024954A1 (en) Time stamp management system for disk arrays
CN105739919B (zh) 资料存取系统及方法
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination