wxpython制作解包工具(三)
来源:互联网 发布:鼠大王淘宝 编辑:程序博客网 时间:2024/05/01 02:47
今天完成解包工具第二版(v0.1.0),相对于最初版本,有两个变化
1:报文格式写入XML配置文件,便于后期修改
2:优化工具功能,删除添加报文功能
先上界面,整体布局与初版变化较小,删除报文选择窗口与对应的图标:
再说逻辑:
第一步读取XML配置文件。XML文件中需要提供的信息包括报文的长度、名称和解释,并且按照顺序排序。在读取XML文件时,使用字典和列表存储报文结构信息,每个字典的Key为报文包的名称,而字典的Value为长度、名称和解释组成的列表,程序启动后首先读取XML配置文件,如果文件错误,程序将提示错误。XML文件格式和读取函数如下:
<packet name="PacketHead"><Var id = "0"><Len>1</Len><Name>Q_UPDOWN</Name><Mean>信息传送的方向 (0=车对地,1=地对车)</Mean></Var><Var id = "1"><Len>7</Len><Name>M_VERSION</Name><Mean>语言/代码版本编号 (0010000=V1.0)</Mean></Var><Var id = "2"><Len>1</Len><Name>Q_MEDIA</Name><Mean>信息传输媒介 (0=应答器,1=环线)</Mean></Var><Var id = "3"><Len>3</Len><Name>N_PIG</Name><Mean>本应答器在应答器组中的位置 (000=1,111=8)</Mean></Var></packet>
第二步,解析报文。这里将报文分成四类,分别处理。
第一类:顺序执行类,包括ETCS16、ETCS42、ETCS45、ETCS131、ETCS132、ETCS254、CTCS3、CTCS4、CTCS5
此类报文只需顺序读取报文结构后填入解析信息,执行代码如下:
第二类:循环执行类,包括ETCS21、ETCS27、CTCS1、CTCS2
此类报文在执行时需要寻找关键字“N_ITER”,根据解析出来的值进行循环解析,代码如下:
第三类:判断+循环执行类,包括ETCS5、ETCS41、ETCS46、ETCS68、ETCS72、ETCS79
此类报文在执行时需要除了寻找决定循环次数关键字的“N_ITER”外,还需要针对不同的包寻找各自的关键字。
举个栗子,在解析ETCS68包时,当“Q_TRACKINIT”值为1时,则解析"D_TRACKINIT"值,并跳过接下来的三个字段“D_TRACKCOND”、“L_TRACKCOND”和"M_TRACKCOND";当“Q_TRACKINIT”值为0时,则跳过"D_TRACKINIT",而解析接下来三个字段的值。此时就需要加入关键字判断函数来决定跳过的步长。代码如下:
第四类:也就是中文包ETCS44包的处理,其中包含了顺序执行(CTCS3、CTCS4、CTCS5)和循环执行(CTCS1、CTCS2)
这里需要做的只是判断包名,再调用相应函数。
- wxpython制作解包工具(三)
- wxpython制作解包工具(一)
- wxpython制作解包工具(二)
- wxpython制作解包工具(四)
- 制作安装包工具NSIS
- 制作web安装包工具集
- 制作RPM安装包工具checkinstall
- JavaScript打包与解包工具
- 求 rdb打包解包工具
- yaffs文件打包解包工具
- yaffs文件打包解包工具
- MTK IMG打包/解包工具
- 小工具抓包工具
- SOAP抓包工具
- WSockExpert[抓包工具]
- 网络抓包工具
- ethereal 抓包工具
- http 抓包工具
- java 迭代器
- 删除数据库中的数据的两种方法
- 简单的图形--砖块的价格是X磅XX便士
- Unity 3D 内存优化
- Android 4.4 Kitkat Phone工作流程浅析(八)__Phone状态分析
- wxpython制作解包工具(三)
- C++面试集锦( 面试被问到的问题 )
- xcode调试技巧
- 【LeetCode】Remove Nth Node From End of List
- Android截图命令screencap
- 循环里面删除项的方法(适用C#、js、java等所有循环)
- 黑马程序员-proxy动态代理
- Hadoop2.2.0 + HBase0.96 伪分布式安装
- 突发奇想的一个社交游戏idea,但是想法中具有不平衡因素,希望大家可以看看然后可以启发一下大家