[發明專利]一種消息格式解析器及解析方法在審
| 申請號: | 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.szxzyx.cn/pat/books/202110935201.0/1.html,轉載請聲明來源鉆瓜專利網。





