本文提供基于应急广播国标协议《GDJ 089-2018 应急广播大喇叭系统技术规范》中的附录A、D、E协议进行解析的方法和工具。
在此声明下次解析方法已经申请了公司专利了,但是工具可以提供免费使用。如果使用上有任何问题,在文章下留言。或者有问题的解析数据可以留言。
《GDJ 089-2018 应急广播大喇叭系统技术规范》这个规范也已经在2018年底就已经公开了,并不是保密的文件了。
进入正题,解析的思路就是使用JSON格式套技术规范中的格式。从而,简化解析代码,通过配置来解析出目标数据,让十六进制的原始数据解析出一目了然的格式。
举个例子:
协议中的白名单更新长下面这样:
这种十六进制的数据在网络传输中相当于密文,如果没有预先知道格式,对一些未知长度的数据的定义就是先定义一个字节的长度,然后紧接跟着这个数据N字节。对定长的数据解析就简单了,这里就不详细说。
白名单对应的配置表如下:
{
"protocol_type" : "0C",
"名单总数": "1",
"list": {
"操纵类型":"1",
"号码长度":"1",
"号码":"n",
"姓名长度":"1",
"姓名":"n",
"许可类型":"1",
"授权区域码个数":"1",
"一个授权区域码的长度":"1",
"list2":
{
"授权区域码":"n"
}
}
}
用定长的数据跟着n表示,后面数据的长度。
解析出来的结果就是:
附录A,D,E的解析JSON我都做好放工具里面了,直接把数据贴在左边点击解析即可,工具会自动过滤0x,逗号,空格等字符解析数据。记得贴的要是十六进制数据
工具下载地址:https://download.csdn.net/download/much0726/15534688 (1.24.1版本,更新了直接选择协议解析的功能)
部分数据包例子:https://download.csdn.net/download/much0726/15534425