一,前言
之前看了新聞QT有最新版出來了,我就裝了個較新的版本QT6.3.4,就想再做個小工具,想到之前做的python解碼工具是4字節(jié)對齊,用了struct庫來解析的,那么對于不對齊的數(shù)據(jù)進行解碼也是常用的功能,這次就不用python了,換個花樣玩玩,那么這個通用小工具就選擇用qt來實現(xiàn)了。
二,分析
- 我自定義的需求就是要一個可以滿足支持多種數(shù)據(jù)結(jié)構的通用解析小工具,它的數(shù)據(jù)接口通過外部json格式來傳入。那么數(shù)據(jù)輸入方式能是trace32 dump來的調(diào)試數(shù)據(jù),可能是以太網(wǎng)或can或串口傳遞的數(shù)據(jù),那么我先設計一個bin文件作為輸入文件,解析的數(shù)據(jù)格式先用json文件來存儲,最后輸出到窗口界面即可。
- 關于擴展性考慮
input文件可以支持多種格式且進行進一步數(shù)據(jù)處理,最后將數(shù)據(jù)copy到QbyteArray,output可以顯示到界面,也可以保存到各種類型的文件或數(shù)據(jù)庫界面等,解析類支持的解析格式還可以繼續(xù)擴展。由于可擴展性所以我設計的時候除了widget主窗體,然后自定義了3個類(input數(shù)據(jù)文件,input格式文件,解析類) - 自定義需求在實際實施的時候并無難點,幾個小時就完工了。
關于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é)約工時。