一,前言
之前看了新闻QT有最新版出来了,我就装了个较新的版本QT6.3.4,就想再做个小工具,想到之前做的python解码工具是4字节对齐,用了struct库来解析的,那么对于不对齐的数据进行解码也是常用的功能,这次就不用python了,换个花样玩玩,那么这个通用小工具就选择用qt来实现了。
二,分析
- 我自定义的需求就是要一个可以满足支持多种数据结构的通用解析小工具,它的数据接口通过外部json格式来传入。那么数据输入方式能是trace32 dump来的调试数据,可能是以太网或can或串口传递的数据,那么我先设计一个bin文件作为输入文件,解析的数据格式先用json文件来存储,最后输出到窗口界面即可。
- 关于扩展性考虑
input文件可以支持多种格式且进行进一步数据处理,最后将数据copy到QbyteArray,output可以显示到界面,也可以保存到各种类型的文件或数据库界面等,解析类支持的解析格式还可以继续扩展。由于可扩展性所以我设计的时候除了widget主窗体,然后自定义了3个类(input数据文件,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"
}
]
}
三,输出物
小工具就不用mvc架构了,设计框图如下
四,小结
学以致用,乐趣无穷。虽然它没有什么技术含量,但是我还是很有兴趣的把它完成了,因为在我看来这个小工具是有一定应用价值的,将来一定可以帮助我节约工时。