QT解析自定義數(shù)據(jù)格式小工具--Apple的學習筆記

一,前言

之前看了新聞QT有最新版出來了,我就裝了個較新的版本QT6.3.4,就想再做個小工具,想到之前做的python解碼工具是4字節(jié)對齊,用了struct庫來解析的,那么對于不對齊的數(shù)據(jù)進行解碼也是常用的功能,這次就不用python了,換個花樣玩玩,那么這個通用小工具就選擇用qt來實現(xiàn)了。

二,分析

  1. 我自定義的需求就是要一個可以滿足支持多種數(shù)據(jù)結(jié)構的通用解析小工具,它的數(shù)據(jù)接口通過外部json格式來傳入。那么數(shù)據(jù)輸入方式能是trace32 dump來的調(diào)試數(shù)據(jù),可能是以太網(wǎng)或can或串口傳遞的數(shù)據(jù),那么我先設計一個bin文件作為輸入文件,解析的數(shù)據(jù)格式先用json文件來存儲,最后輸出到窗口界面即可。
  2. 關于擴展性考慮
    input文件可以支持多種格式且進行進一步數(shù)據(jù)處理,最后將數(shù)據(jù)copy到QbyteArray,output可以顯示到界面,也可以保存到各種類型的文件或數(shù)據(jù)庫界面等,解析類支持的解析格式還可以繼續(xù)擴展。由于可擴展性所以我設計的時候除了widget主窗體,然后自定義了3個類(input數(shù)據(jù)文件,input格式文件,解析類)
  3. 自定義需求在實際實施的時候并無難點,幾個小時就完工了。
    關于json文件定義
{
    "decode":[
        {
            "name":"a",
            "type":"uint8"
        },
        {
            "name":"b",
            "type":"uint32"
        },
        {
            "name":"c",
            "type":"uint32"
        },
        {
            "name":"d",
            "type":"uint16"
        },
        {
            "name":"e",
            "type":"uint8"
        },
        {
            "name":"f",
            "type":"uint32"
        },
        {
            "name":"g",
            "type":"uint8"
        },
        {
            "name":"h",
            "type":"float32"
        }
    ]
}

三,輸出物

image.png

小工具就不用mvc架構了,設計框圖如下


image.png

四,小結(jié)

學以致用,樂趣無窮。雖然它沒有什么技術含量,但是我還是很有興趣的把它完成了,因為在我看來這個小工具是有一定應用價值的,將來一定可以幫助我節(jié)約工時。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容