[发明专利]一种消息格式解析器及解析方法在审
申请号: | 202110935201.0 | 申请日: | 2021-08-16 |
公开(公告)号: | CN113687817A | 公开(公告)日: | 2021-11-23 |
发明(设计)人: | 王召东;李朝铭;王建华 | 申请(专利权)人: | 山东新一代信息产业技术研究院有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜丽洁 |
地址: | 250100 山东省济南市高新*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 格式 解析 方法 | ||
1.一种消息格式解析器,其特征在于,所述解析器能够完成msg消息的格式解析,并能够生成支持IROS使用的结构类型以及序列化反序列化的代码,当数据类型中包含用户自定义数据类型时,可以自动包含头文件并支持自定义数据类型的数组。
2.根据权利要求1所述的一种消息格式解析器,其特征在于,所述解析器的MsgContentReader类作为存储msg信息的类,加载msg文件,并将数据信息加载到内存空间中去。
3.根据权利要求2所述的一种消息格式解析器,其特征在于,MsgContentReader类向外暴露三个read接口,传入文件地址、文件流对象或按行传入数据,其中,所述按行传入数据适用于无msg文件情况。
4.根据权利要求3所述的一种消息格式解析器,其特征在于,MsgContentReader完成对msg文件的解析,包括经过去无用字符、去注释后,表示数据类型的定义会被存储到成员变量m_vElements中;
随后,parse接口对数据行进行解析,将数据类型存放于成员变量m_vDataType中,数据名存放于成员变量m_vDataName中,至此消息读入完成。
5.根据权利要求4所述的一种消息格式解析器,其特征在于,MsgHeaderGenerator类以MsgContentReader的解析结果为基础,通过流的方式,将格式化信息写入输出文件。
6.根据权利要求5所述的一种消息格式解析器,其特征在于,MsgHeaderGenerator类向外暴露一个generate接口,根据MsgHeaderGenerator中的数据,向传入文件流入命名空间、结构体定义、构造函数定义、友元函数定义和读写接口定义,同时根据消息类型来确定是否要包含以该数据类型为名称的头文件,对于数组类型的数据,采用vector的方式存储,IROS用户可以使用该msg文件用于开发。
7.根据权利要求6所述的一种消息格式解析器,其特征在于,生成的msg文件中,消息实体类与SerializeBasic为友元函数,实现SerializeBasic的read和write虚函数接口;
针对IROS的序列化反序列化接口,生成message_serialization和message_deserialization函数,实现对当前消息类型的序列化反序列化。
8.一种消息格式解析方法,其特征在于,MsgContentReader进行文件读取和数据行解析,MsgHeaderGenerator根据MsgContentReader的解析结果执行宏、头文件、友元函数和generateStruct的顺序化操作。
9.根据权利要求8所述的一种消息格式解析方法,其特征在于,所述文件读取会逐行读取文件,对于每一行,在删除首位空格后,以#或者//开头或者空行的视为非数据行,否则视为数据行放入m_vElements;
所述数据行解析时,会遍历m_vElements数组,第一个空格前的字符作为数据类型,第一个空格后的字符经过去空格、去注释后作为数据名。
10.根据权利要求9所述的一种消息格式解析方法,其特征在于,所述generateStruct顺序化操作时,通过遍历成员变量MsgContentReader的m_vDataName和m_vDataType完成对消息类的构造函数列表的初始化,同时完成read和write的这两个虚函数接口的实例化;
完成消息的解析生成之后,用户在自己程序中秩序包含产生的头文件,便可以正常使用消息结构进行消息收发。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东新一代信息产业技术研究院有限公司,未经山东新一代信息产业技术研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110935201.0/1.html,转载请声明来源钻瓜专利网。