wxpython制作解包工具(三)

本文介绍了解包工具第二版(v0.1.0)的更新内容,包括报文格式写入XML配置文件以方便后期修改及优化工具功能。详细解释了如何读取XML配置文件及对不同类型的报文进行解析的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天完成解包工具第二版(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)

这里需要做的只是判断包名,再调用相应函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值