通信命令分类090116.docx
《通信命令分类090116.docx》由会员分享,可在线阅读,更多相关《通信命令分类090116.docx(83页珍藏版)》请在冰豆网上搜索。
![通信命令分类090116.docx](https://file1.bdocx.com/fileroot1/2023-4/21/b5dbb079-64d4-4c6f-b193-944f4312dc3a/b5dbb079-64d4-4c6f-b193-944f4312dc3a1.gif)
通信命令分类090116
1.命令格式设计
大部分报文由用户在BS端发起,然后设备端或者服务器端接收报文,并处理;
用户可以在BS端发起:
查询类,设置类,更新类和其他类;
设备端或者服务器端发起:
心跳类,注册类;
消息接收者(设备端和服务器)被动发起:
回复类;
命令头格式:
1-13为消息头部,任何消息必须包含这个部分;
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7(年两字节,月日时分秒各一个字节)
4-10
3
失效时间
7字节,
11-17
4
长度
4字节
18-21
5
消息类型
1字节
22
6
方向
1字节(1为上行)(0为下行)
23
7
下行消息目的地级别
1字节(Service程序向上报告是Service程序的级别)。
1=组;0=点位
24
8
域
25-28
9
组ID
4字节,上行时是发起者,下行时为目的地
29-32
10
点位ID
4字节,上行时是发起者,下行时为目的地
33-36
11
指令
1字节
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
1.1.校验段CheckMsg
暂时不管
1.2.发送时间SendTime
消息发送时,发送者本地时钟。
1.3.失效时间InvalidationTime
消息发送后,如果超过“失效时间”这个时间点,就丢弃掉;
新增:
+失效时间,即到了某个时间点,该报文如果还没有发出,或者发出去,还没有收到回复;就要失去效用,即需要丢弃;
1.4.长度Length
以字节数表示的消息的总长度,包括协议头部以及消息内容扩展。
1.5.消息类型MsgType
即命令分类,消息主要分为以下几个大类
消息类型
符号名
值
备注
心跳类
M_MSGTYPE_BASE
0x01
注册类
M_MSGTYPE_REGISTER
0x02
查询类
M_MSGTYPE_QUERY
0x03
设置类
M_MSGTYPE_SET
0x04
更新类
M_MSGTYPE_UPDATE
0x05
其他类
M_MSGTYPE_OTHER
0x06
回复报文
M_MSGTYPE_ANSWER
0x07
1.6.方向Direct
主要有3个方向,定义消息方向的目的是简化路由器对消息的处理。
Ø上行=1:
表示播放器向上级发送的消息,路由器直接向上转发。
Ø下行=0:
表示上级节点发送给播放器的消息,路由器根据具体的消息级别进行转发。
最新定义:
消息方向
符号名
值
备注
上行
M_DIRCTION_UP
0x01
下行
M_DIRECTION_DOWN
0x00
1.7.下行消息目的地级别Destination
表示接收该消息的组织。
路由器根据消息的级别和消息的域、组、节点等信息对消息进行路由。
3=目的地为:
中心服务器
2=目的地为:
域服务器
1=目的地为:
组服务器
0=目的地为:
点位(播放器)
目的地
符号名
值
备注
中心服务器
M_DESTINATION_CENTRAL
0x03
域服务器
M_DESTINATION_DOMAIN
0x02
组服务器
M_DESTINATION_GROUP
0x01
点位(播放器)
M_DESTINATION_SITE
0x00
任何其他值都认为是错误的。
1.8.域DomainID、组IDGroupID、点位IDNodeID:
Ø对于上行消息,域、组ID、点位ID表示消息的发出者的ID
如果节点是域服务器,则域<>0and组ID=0and点位ID=0
如果节点是组服务器,则域<>0and组ID<>0 and点位ID=0
如果节点是点位,则域<>0and组ID<>0 and点位ID<>0
Ø对于下行消息,域、组ID、点位ID表示消息的目的地
如果域<>0and组ID=0and点位ID=0,则消息发给域服务器。
但是需要具体分析消息的目的地。
如果域<>0and组ID<>0and点位ID=0,则组服务器是接收者。
但是需要具体分析消息的目的地。
如果节点是点位,则域<>0and组ID<>0 and点位ID<>0,这个时候目的地是确定的。
新增:
可能群发的命令,以及如何处理群发的任务;
1.如果需要群发,判断第6,7,8,9字段;
2.Sender需要判断是否群发,如果群发,则自己产生报文,群发;
3.群发的命令可能为查询类,更新类,其他类以及设置类中的设置时间,设置分辨率,设置关机;
4.如果群发,报文要注明群发至哪个级别,如:
群发到点位,则下行消息目的地为点位(0),域,组ID为相应内容,点位ID=0;
群发至组服务器,则下行消息目的地为组
(1),域,为相应内容,组ID=0,点位ID=0;
群发至域服务器,则下行消息目的地为域
(2),域=0,组ID=0,点位ID=0;
1.9.指令Instrution
指令需要与消息类型结合使用,用来判断消息的具体类别,及要调用相应的报文处理模块,采取的具体动作来处理。
符号名
值
说明
备注
CMD_BASE_HBEAT
0x01
心跳
CMD_BASE_HBREPORT
0x02
心跳报告
下级状态变化的报告报文
CMD_REG_REGISTER
0x00
注册
CMD_REG_LINK_TEST
0x01
连接测试
CMD_REG_LOGIN
0x02
播放器登陆
CMD_QUERY_DEVICE
0x01
查询设备端情况
CMD_QUERY_SERVER
0x02
查询服务器情况
CMD_SET_DATE_TIME
0x01
设置时间
CMD_SET_LOCALIP
0x02
设置本地IP
CMD_SET_CTRLIP
0x03
设置控制服务器IP
CMD_SET_FTPIP
0x04
设置FTP服务器IP
CMD_SET_RESOLUTION
0x05
设置分辨率
CMD_SET_PASSWORD
0x06
设置设备端密码
CMD_SET_DEV_RESET
0x07
设置设备/服务器重置(恢复出厂设置)
CMD_SET__DEV_INIT
0x08
设置设备/服务器初始化
CMD_SET_LOGGING
0x09
设备/服务器调试状态设定
CMD_SET_SAFETY
0x0A
安全设置(待定)
CMD_SET_PWRONOFF
0x0B
设置关机时间
CMD_UPD_FIRMWARE
0x00
更新固件
CMD_UPD_CONFIG
0x01
更新配置
CMD_UPD_PALYLIST
0x02
更新节目列表
CMD_UPD_SCROLL_TEXT
0x03
更新滚动字幕
CMD_UPD_LIST
0x04
更新列表信息
CMD_UPD_WEATHER
0x05
更新天气信息
CMD_UPD_IMMED_V
0x06
更新插播视频
CMD_UPD_IMMED_I
0x07
更新插播图片
CMD_UPD_IMMED_T
0x08
更新插播文字
CMD_UPD_LOGO
0x09
更新LOGO
OTHER_UPLD_OPERLOG
0x01
上载操作记录
OTHER_UPLD_PLAYREC
0x02
上载播放记录
OTHER_UPLD_FILELIST
0x03
上载本地文件列表
OTHER_UPLD_SYSTEM
0x04
上载系统运行记录
OTHER_DEL_FILE
0x05
删除指定文件
OTHER_PRGM_REG
0x06
文件入库
RECEIVE
0x01
收到报文回复
TASK_ERROR
0x02
任务出错回复
TASK_OVER
0x03
任务完成
DOWNLOAD_OVER
0x04
下载完成
QUERY_ANSWER_C
0x05
设备端查询回复
QUERY_ANSWER_S
0x06
服务器查询回复
具体的命令指令,见“命令格式详细”部分。
1.10.任务号TaskID
或者称为消息序列号。
A.任务号按层级编号,自动增长
——设备端0级1~9,999;
——接入/组1级10,000~19,999;
——路由/域2级20,000~29,999;
——中心3级30,000~39,999;
B.对于同一个任务号的应答,不管应答多少次,应答的任务号始终为任务发起端的任务号;
C.总是由发起者产生新任务号;
D.所有的任务号循环使用,到达最大后回头;
E.当进程退出:
——将任务号记录下来,再次启动时,将任务号+1处理;(推荐)
F.D.G..P.T,应该可以保证任务号唯一。
表一:
ActiveTask,所有未完成的任务在此记录(设备和服务器必须由这个列表来跟踪每个任务执行情况;如果一个任务执行完毕,比如获得最终应答,则从此表中删除);
表二:
TaskHistory,处理完毕的在此记录(所有接收到此报文的都有记录);
ActiveTask表需要定时序列化到硬盘,防止系统突然故障后数据丢失。
TaskHistory可以合并到系统的事件记录文件中。
G.因为新产生的任务号不会很多,一般不会出现一天就有重复任务号的情况;
H.心跳报文不考虑任务号(取0);
1.11.版本号Versions
用来标志命令格式的版本;100――――1.0目前的版本号。
1.12.消息内容扩展
消息的具体内容,每个命令的处理程序需要解析之,进行相应的处理,并反馈相应的消息。
具体参见“命令详解”部分。
目前只考虑了三级服务器,同时第二级、第三级也可能就是点位。
所以在配置文件及消息中需要区别两点:
节点的级别、节点的类型。
所有的报文处理的类需要从同一基类开始。
这些类需要实现一个共同的接口。
比如产生报文;解析报文;加解密等。
2.命令格式详细
1.心跳类(命名空间OLC)
新增考虑:
如果某段时间,比如:
组服务器发生故障,我的域服务器可以直接去访问到播放器;
这样,首先,域服务器要有各个点位的IP地址,密钥,主动连接到播放器,而且域服务器和点位之间要有链路可以到达;
心跳类的第10字段“指令”对照表
变量
值
说明
备注
HEART
0x01
心跳
HEARTREPORT
0x02
心跳报告
下级状态变化的报告报文
心跳类播放器状态
变量
值
说明
备注
PLAYING
0x01
播放
SLEEPING
0x02
休眠
POWEROFF
0x03
关机
播放器关机前,要发;
OFF_LINE
0x04
离线
不明问题
●心跳报文OnLine.cs
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
失效时间
7字节
11-17
4
长度
4字节
18-21
5
消息类型
=M_MSGTYPE_BASE
22
6
方向
=1
23
7
下行消息目的地级别
1字节
24
8
域
4字节,发起者
25-28
9
组ID
4字节,发起者
29-32
10
点位ID
4字节,发起者
33-36
11
指令
1字节=HEART
37
12
任务号
心跳不考虑任务号(0)
38-41
13
版本号
2字节
42—43
14
播放器状态
2字节=PLAYING/SLEEPING
44~45
心跳类:
(1)播放器每隔5或者10分钟把心跳报文传送给上级
(2)上级接收心跳报文后不转发,查找本地配置文件,找出自己的密钥,
(3)由解密算法把报文解密出来,验证前4个字节,如果是ABCD执行(4),否则执行(5)
(4)由一个监控程序把播放器的点位ID,状态,收到时系统的时间写入Link.xml文件中,执行(6)
(5)生成出错报文,将出错报文(解密出错),转发给消息来源地
(6)由另外一个监控程序不断的判断当前心跳时间和heart.xml文件中的播放器最迟发送过来的心跳相隔十分钟;
(7)如果连接测试不成功,服务器就向中心服务器发送一条报文修改播放器的状态,改为”离线”,生成出错报文,报告中心服务器。
否则执行(8)。
(8)服务器就向中心服务器发送一条报文修改播放器的状态,改为“有问题”。
●心跳状态报告报文HeartAlter.cs
用于服务器向上级报告自己下属的播放器状态发生改变;
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
失效时间
7字节
11-17
4
长度
4字节
18-21
5
消息类型
=M_MSGTYPE_BASE
22
6
方向
=1
23
7
下行消息目的地级别
1字节,0,
24
8
域
4字节,发起者
25-28
9
组ID
4字节,发起者
29-32
10
点位ID
4字节,发起者
33-36
11
指令
1字节=HEARTREPORT
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
14
点位ID
4字节
44-47
14
播放器状态
2字节=PLAYING/SLEEPING/POWEROFF/OFF_LINE
48~49
2.注册类(命名空间RGC)
注册类第10字段“指令”对照表:
变量
值
说明
备注
REGISTER
0x00
注册
LINK_TEST
0x01
连接测试
LOGIN
0x02
播放器登陆
●注册Register.cs
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
失效时间
7字节
11-17
4
长度
4字节
18-21
5
消息类型
1字节=M_MSGTYPE_REGISTER
22
6
方向
=1
23
7
下行消息目的地级别
1字节
24
8
域
4字节,上行时是发起者,下行时为目的地
25-28
9
组ID
4字节,上行时是发起者,下行时为目的地
29-32
10
点位ID
4字节,上行时是发起者,下行时为目的地
33-36
11
指令
1字节=REGISTER
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
14
用户账号
20字节
44—63
15
用户密码
20字节
64—83
16
携带消息内容
固件版本号等(考虑是否要增加其他内容)
84~
要求回复:
如果注册成功,则回复任务成功报文;否则回复,任务失败,及失败原因;
注册失败原因类别(账号密码错误,点位不存在等)
(1)收到报文后查找本地基本配置文件,找出自己的密钥
(2)由解密算法把报文解密出来,验证前4个字节,如果是ABCD执行(3),否则执行(7)
(3)收到报文后需要查找服务器的配置文件,来判断本机的类型。
如果本机服务器不是中心服务器,就要在配置文件中查找上级服务器的IP和端口向上转发,上级服务器接收后逐级转发,退出。
如果本机是中心服务器就进行注册执行第(4)步。
(4)读取配置文件,读出本机的域,组ID,点位ID,与报文的中的7,8,9字段“域”“组ID”“点位ID”是否一样;如果相同执行(5),否则执行(7)
(5)如果注册成功,执行(6),否则执行(7)
(6)回复任务成功报文,执行(8)
(7)生成出错报文,注册失败原因类别(解密不成功,账号密码错误,点位不存在等)
(8)查找配置文件,查找出消息来源地密钥,回复生成的报文,把回复的报文写入日志文件,退出
●连接测试LinkTest.cs
上级服务器发起,用于测试和下级的连接链路是否通,下级设备的连接链路是否存在.
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
11-17
4
长度
4字节
18-21
5
消息类型
1字节=M_MSGTYPE_REGISTER
22
6
方向
1字节(1为上行)(0为下行)
23
7
下行消息目的地级别
1字节2=域;1=组;0=点位
24
8
域
4字节,目的地
25-28
9
组ID
4字节,目的地
29-32
10
点位ID
4字节,目的地
33-36
11
指令
1字节=LINK_TEST
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
●登陆Login.cs
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
11-17
4
长度
4字节
18-21
5
消息类型
1字节=M_MSGTYPE_REGISTER
22
6
方向
1字节(1为上行)(0为下行)
23
7
下行消息目的地级别
1字节1=组;0=点位
24
8
域
4字节,发起者
25-28
9
组ID
4字节,发起者
29-32
10
点位ID
4字节,发起者
33-36
11
指令
1字节=LOGIN
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
14
用户名
20字节
44—63
15
密码
20字节
64--83
3.查询类(命名空间CONC)
查询类第10字段“指令”对照表:
变量
值
说明
备注
QUERY_SERVER
0x01
查询设备端情况
QUERY_CLIENT
0x02
查询服务器情况
●服务端查询SercersQuery.cs
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
失效时间
7字节
11-17
4
长度
4字节
18-21
5
消息类型
1字节=M_MSGTYPE_QUERY
22
6
方向
=0
23
7
下行消息目的地级别
1字节
24
8
域
4字节,目的地
25-28
9
组ID
4字节,目的地
29-32
10
点位ID
4字节,(空)
33-36
11
指令
1字节=QUERY_SERVER
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
●设备端查询ClientQuery.cs
查询服务器或者播放器的相关状况。
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节
4-10
3
失效时间
7字节
11-17
4
长度
4字节
18-21
5
消息类型
1字节=M_MSGTYPE_QUERY
22
6
方向
=0
23
7
下行消息目的地级别
1字节
24
8
域
4字节,目的地
25-28
9
组ID
4字节,目的地
29-32
10
点位ID
4字节,目的地
33-36
11
指令
1字节=QUERY_CLIENT
37
12
任务号
4字节
38-41
13
版本号
2字节
42—43
4.设置类(命名空间STC)
设置类,第10个字段“指令”对照表。
符号名
值
备注
CMD_SET_DATE_TIME
0x01
设置时间
CMD_SET_LOCALIP
0x02
设置本地IP
CMD_SET_CTRLIP
0x03
设置控制服务器IP
CMD_SET_FTPIP
0x04
设置FTP服务器IP
CMD_SET_RESOLUTION
0x05
设置分辨率
CMD_SET_PASSWORD
0x06
设置设备端密码
CMD_SET_RESTART
0x07
设置设备/服务器重置(恢复出厂设置)
CMD_SET_SAFETY_INT
0x08
设置设备/服务器初始化
CMD_SET_SAFETY_MODE
0x09
设备/服务器调试状态设定
CMD_SET_SAFE
0x0A
安全设置(待定)
CMD_SET_POWEROFF
0x0B
设置关机时间
●设置时间SetTime.cs
序号
名称
说明
内容
偏移
1
校验段
4字节
0-3
2
发送时间
7字节当前日期时间
4-10
3
失效时间
7字节
11-17
4
长度
18-21
5
消息类型
1字节=M_MSGTYPE_SET
22
6
方向
0
23
7
下行消息目的地级别
2=域;1=组;0=点位
24
8
域
播放器或服务器的域
25-28
9
组ID
29-32
10
点位ID
33-36
11
指令
1字节=CMD_SET_DATE_TIME
37
12
任务号
4字节
38-41
13
版本号
100
42—43
14
系统时间
发送时间,7字节
44-50
回复“设置成功报文”即可。
如出错,回复出错报文。
●设置IP(本地IPSetLocalIP.cs,控制服务器IPSetCtrIP.cs,FTP服务器IPSetFtpIP.cs)
同时要更新配置文件
序号
名称