荣小菜补钙记第48期:报文合成与解析之统型设计2 同步更新于 WeChat:荣小菜在补钙 欢迎关注 内容更丰富 大家好,我是荣小菜,断网3天,移动宽带的维修好慢T_T,从本期详细演示一下设计的效果和各项功能。大的设计思路就是尽可能的将变化的报文写入Excel,程序通过加载Excel来生成控件内容,决定报文内容。 1. 功能演示1 这里我们已经加载了预设的Excel表,生成了“查询表”、“控制表1”、“控制表2”。每个表对应不同的预设功能。可以看到,我们的控件主要分为两种,指定内容的“组合框“和指定参数的”数值“控件。控件的值也已经根据Excel表的设定限制了范围。
2. 功能演示2 本节主要展示当有新的需要变化时,修改Excel表即可更新程序的功能。
当前Excel加载表的格式如下,下图展示了一条报文包含多个控制项时的Excel表格式,“固定前“和”固定后“可以填写任意需要的报文,如包头、包尾等。而中间部分的内容则对应UI控件的内容。 此外,我们通过“字分解“来标识功能项对应的Bit位,实现不同子功能根据Bit位合成为”项“报文,不同从上到下的”项“报文又顺序组合载荷报文(表明具体功能信息的报文)。
当然,当包头包尾等”固定“报文变化时,我们也只需修改下Excel表格即可。 3. 功能演示3 下面演示的是初始值设置功能。程序运行后会自动从“Control Value Temp“二进制文件中加载初始值。而单击”Save“后即可将各表的当前值设置初始默认值。
4. 主程序后面板 整个程序的实现主要依托于QControl及其设计思路,开发了”SingTree.lvclass“和 “ControlCluster.lvclass“,分别对应UI中的树形控件(用来选择表)和簇控件(用来选定控制内容),大部分控制逻辑都集成在类属性中,解耦效果好,使得实际使用过程十分简单,只需拖拽几个函数即可。当然,想要搞明白实现细节,建议还是先学习QControl。QControl后面我可能也会简单讲解一些。
注意:由于Demo涉及QControl工具包,虽然我也会发布全部源代码,但还是建议小伙伴们先从VIPM下载学习。我的文章中第24-27、36-39期都使用了QControl或者类似的方式,小伙伴们可以去看看,参考参考。 |