[發(fā)明專利]一種消息格式解析器及解析方法在審
| 申請(qǐng)?zhí)枺?/td> | 202110935201.0 | 申請(qǐng)日: | 2021-08-16 |
| 公開(kāi)(公告)號(hào): | CN113687817A | 公開(kāi)(公告)日: | 2021-11-23 |
| 發(fā)明(設(shè)計(jì))人: | 王召東;李朝銘;王建華 | 申請(qǐng)(專利權(quán))人: | 山東新一代信息產(chǎn)業(yè)技術(shù)研究院有限公司 |
| 主分類號(hào): | G06F8/30 | 分類號(hào): | G06F8/30;G06F8/41 |
| 代理公司: | 濟(jì)南信達(dá)專利事務(wù)所有限公司 37100 | 代理人: | 姜麗潔 |
| 地址: | 250100 山東省濟(jì)南市高新*** | 國(guó)省代碼: | 山東;37 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 消息 格式 解析 方法 | ||
本發(fā)明涉及機(jī)器人控制領(lǐng)域,具體提供了一種消息格式解析器,所述解析器能夠完成msg消息的格式解析,并能夠生成支持IROS使用的結(jié)構(gòu)類型以及序列化反序列化的代碼,當(dāng)數(shù)據(jù)類型中包含用戶自定義數(shù)據(jù)類型時(shí),可以自動(dòng)包含頭文件并支持自定義數(shù)據(jù)類型的數(shù)組。與現(xiàn)有技術(shù)相比,本發(fā)明具有支持自定義結(jié)構(gòu)的數(shù)組類型消息,能夠自動(dòng)包含相關(guān)頭文件,解析后的格式編譯輕便且兼容ROS1的優(yōu)點(diǎn),進(jìn)一步的可以幫助IROS開(kāi)發(fā)人員生成規(guī)范的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的序列化反序列化代碼,方便用戶開(kāi)發(fā),具有良好的推廣價(jià)值。
技術(shù)領(lǐng)域
本發(fā)明涉及機(jī)器人控制領(lǐng)域,具體提供一種消息格式解析器及解析方法。
背景技術(shù)
在IROS中,用戶所傳輸?shù)臄?shù)據(jù)是定義在一個(gè)后綴為msg文本文件中,其中包含了數(shù)據(jù)的類型、名稱以及備注信息等。對(duì)于C++用戶來(lái)講,需要將該數(shù)據(jù)文件轉(zhuǎn)化為能夠被直接使用的數(shù)據(jù)結(jié)構(gòu),如類、結(jié)構(gòu)體等。同時(shí),對(duì)IROS來(lái)講,數(shù)據(jù)的收發(fā)過(guò)程中存在一個(gè)序列化與反序列化的過(guò)程。
發(fā)送數(shù)據(jù)前,需要將數(shù)據(jù)實(shí)體序列化為char*類型的數(shù)組,數(shù)據(jù)經(jīng)過(guò)傳輸?shù)竭_(dá)數(shù)據(jù)接收端后,需要將數(shù)組反序列化為消息實(shí)體,至此完成消息的發(fā)送接收。因此,針對(duì)不同的消息類型,需要產(chǎn)生對(duì)應(yīng)的序列化反序列化代碼,才能完成數(shù)據(jù)傳輸,比較麻煩。
發(fā)明內(nèi)容
本發(fā)明是針對(duì)上述現(xiàn)有技術(shù)的不足,提供一種設(shè)計(jì)合理,安全適用的消息格式解析器。
本發(fā)明進(jìn)一步的技術(shù)任務(wù)是提供一種實(shí)用性強(qiáng)的消息格式解析方法。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種消息格式解析器,所述解析器能夠完成msg消息的格式解析,并能夠生成支持IROS使用的結(jié)構(gòu)類型以及序列化反序列化的代碼,當(dāng)數(shù)據(jù)類型中包含用戶自定義數(shù)據(jù)類型時(shí),可以自動(dòng)包含頭文件并支持自定義數(shù)據(jù)類型的數(shù)組。
進(jìn)一步的,所述解析器的MsgContentReader類作為存儲(chǔ)msg信息的類,加載msg文件,并將數(shù)據(jù)信息加載到內(nèi)存空間中去。
進(jìn)一步的,MsgContentReader類向外暴露三個(gè)read接口,傳入文件地址、文件流對(duì)象或按行傳入數(shù)據(jù),其中,所述按行傳入數(shù)據(jù)適用于無(wú)msg文件情況。
進(jìn)一步的,MsgContentReader完成對(duì)msg文件的解析,包括經(jīng)過(guò)去無(wú)用字符、去注釋后,表示數(shù)據(jù)類型的定義會(huì)被存儲(chǔ)到成員變量m_vElements中;
隨后,parse接口對(duì)數(shù)據(jù)行進(jìn)行解析,將數(shù)據(jù)類型存放于成員變量m_vDataType中,數(shù)據(jù)名存放于成員變量m_vDataName中,至此消息讀入完成。
進(jìn)一步的,MsgHeaderGenerator類以MsgContentReader的解析結(jié)果為基礎(chǔ),通過(guò)流的方式,將格式化信息寫(xiě)入輸出文件。
進(jìn)一步的,MsgHeaderGenerator類向外暴露一個(gè)generate接口,根據(jù)MsgHeaderGenerator中的數(shù)據(jù),向傳入文件流入命名空間、結(jié)構(gòu)體定義、構(gòu)造函數(shù)定義、友元函數(shù)定義和讀寫(xiě)接口定義,同時(shí)根據(jù)消息類型來(lái)確定是否要包含以該數(shù)據(jù)類型為名稱的頭文件,對(duì)于數(shù)組類型的數(shù)據(jù),采用vector的方式存儲(chǔ),IROS用戶可以使用該msg文件用于開(kāi)發(fā)。
進(jìn)一步的,生成的msg文件中,消息實(shí)體類與SerializeBasic為友元函數(shù),實(shí)現(xiàn)SerializeBasic的read和write虛函數(shù)接口;
針對(duì)IROS的序列化反序列化接口,生成message_serialization和message_deserialization函數(shù),實(shí)現(xiàn)對(duì)當(dāng)前消息類型的序列化反序列化。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于山東新一代信息產(chǎn)業(yè)技術(shù)研究院有限公司,未經(jīng)山東新一代信息產(chǎn)業(yè)技術(shù)研究院有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110935201.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





