终端通信协议一、消息格式1.消息头格式typedef struct _MSG_HEADER{unsigned short usCmd; //消息命令unsigned short usVersion; //协议版本unsigned long ulSessionID; //注册成功后由Server返回,以后的会话都需要携带unsigned long ulSerial; //由发起消息方生成,递增,返回相同的值unsigned long ulLength; //消息体长度unsigned short usStatus; //成功返回0,其他值请查错误码unsigned short usReserved; //保留字}MSG_HEADER;2.消息体通信协议消息是:消息头+消息体;每个消息请求都必须有一个应答消息,如果没有应答消息或者应答消息表示命令操作失败;二、消息命令#define MSG_LOGIN_REQ 0x0001 //终端登录请求#define MSG_LOGIN_RESP 0x8001 //登录应答#define MSG_LOGOFF_REQ 0x0002 //终端登出请求#define MSG_LOGOFF_RESP 0x8002 //登出应答#define MSG_KEEPALIVE_REQ 0x0003 //终端心跳请求#define MSG_KEEPALIVE_RESP 0x8003 //心跳应答#define MSG_GET_BASE_REQ 0x0004 //获取基本参数请求#define MSG_GET_BASE_RESP 0x8004 //获取基本参数应答#define MSG_SET_BASE_REQ 0x0005 //设置基本参数请求#define MSG_SET_BASE_RESP 0x8005 //设置基本参数应答#define MSG_SET_SYS_REQ 0x0006 //设置系统参数请求#define MSG_SET_SYS_RESP 0x8006 //设置系统参数应答#define MSG_GET_ANALYSIS_REQ 0x0007 //获取分析参数请求#define MSG_GET_ANALYSIS_RESP 0x8007 //获取分析参数应答#define MSG_SET_ANALYSIS_REQ 0x0008 //设置分析参数请求#define MSG_SET_ANALYSIS_RESP 0x8008 //设置分析参数应答#define MSG_GET_CHN_REQ 0x0009 //获取通道参数请求#define MSG_GET_CHN_RESP 0x8009 //获取通道参数应答#define MSG_SET_CHN_REQ 0x0010 //设置通道参数请求#define MSG_SET_CHN_RESP 0x8010 //设置通道参数应答#define MSG_GET_NET_REQ 0x0011 //获取网络参数请求#define MSG_GET_NET_RESP 0x8011 //获取网络参数应答#define MSG_SET_NET_REQ 0x0012 //设置网络参数请求#define MSG_SET_NET_RESP 0x8012 //设置网络参数应答#define MSG_GET_PT_REQ 0x0013 //获取平台参数请求#define MSG_GET_PT_RESP 0x8013 //获取平台参数应答#define MSG_SET_PT_REQ 0x0014 //设置平台参数请求#define MSG_SET_PT_RESP 0x8014 //设置平台参数应答三、消息体说明1.登录请求客户端向设备发送登录请求的消息,消息内容如下:typedef struct _stLoginRequest{unsigned int dwDeviceID; //该设备IDunsigned char ucChanNum; //该设备的视频通道数unsigned char ucDevType; //设备类型(客户端)unsigned short usReserved; //保留char szUserName[8]; //登录用户名char szPassword[8]; //登录密码}stLoginRequest;2.登录响应当设备收到客户端的登录请求后,响应该设备的登录结果;消息内容如下:typedef struct _stGeneralResp{unsigned short usResult; //结果(0/其他: 成功/失败原因)unsigned short usReserved; //保留} stGeneralResp;3.登出请求客户端登出时,应向设备发送一个登出请求,消息体为空;4.登出响应设备收到客户端登出,对客户端进行登出响应;5.心跳请求消息客户端登录设备成功后,在30s之内须向设备发送心跳请求;(设备收到心跳请求后,立即发送心跳响应,如果设备在规定的时间暂定为30s没有收到心跳响应,则认为该链路出现故障,断开此链路。
)消息内容为空;6.心跳响应消息设备收到客户端心跳请求后,立即发送心跳响应;消息内容为空;7.获取基本参数服务器向设备发送获取基本参数请求;消息内容为空;8.获取基本参数响应typedef struct _stBaseParamResp{unsigned short nResult; //结果(0:成功,1:失败)unsigned short nReserved; //保留BASEPARAM stBaseParam; //基本参数} stBaseParamResp;typedef struct _stBaseParam{char dwDeviceID[7];char byFormat;char szDevName[24];}BASEPARAM;9.设置基本参数服务器向设备发送设置基本参数请求;消息内容为BASEPARAM结构;8.设置基本参数响应设备对服务器发送的设置基本参数请求发送响应;消息内容stGeneralResp结构;9.设置系统参数(系统控制命令)typedef struct _stSysParam{unsigned short usReboot; //是否重启unsigned short nReserved; //保留} stSysParam;10.获取分析参数服务器向设备发送获取分析参数请求;消息内容为空;11.获取分析参数响应typedef struct _stAnalysisParamResp{unsigned short nResult; //结果(0:成功,1:失败)unsigned short nReserved; //保留stAnalysisParam param; //分析参数} stAnalysisParamResp;typedef struct _stAnalysisParam{unsigned short usDupcRemoveTimeout; //去重超时时间unsigned short usDupcRemoveScore; //去重阀值unsigned short usCmpPassScore; //比对通过阀值unsigned char ucTopPercentCut; //0-100 图片顶部切图百分比(为整数,且不能超过100)unsigned char ucBottomPercentCut; //图片底部切图百分比(为整数,且不能超过100)unsigned char ucDetectThreadCount; //检测线程数} stAnalysisParam;12.设置分析参数服务器向设备发送设置分析参数请求;消息内容为stAnalysisParam结构;13.设置分析参数响应设备对服务器发送的设置分析参数请求发送响应;消息内容stGeneralResp结构;14.获取通道参数服务器向设备发送获取分析参数请求;消息内容为空;15.获取通道参数响应typedef struct _stChannelParamResp{unsigned short nResult; //结果(0:成功,1:失败)unsigned short nReserved; //保留stChannelParam param[4]; //分析参数} stChannelParamResp;typedef struct _stChannelParam{unsigned int ulIP; //通道IPunsigned short usPort; //通道端口unsigned short usChn;char szName[32]; //通道名称char szUserName[8]; //登录用户名char szPassword[8]; //登录密码} stChannelParam;16.设置通道参数服务器向设备发送设置通道参数请求;消息内容为stAnalysisParam结构;typedef struct _stChannelParamReq{stChannelParam param[4]; //分析参数} stChannelParamReq;17.设置通道参数响应设备对服务器发送的设置通道参数请求发送响应;消息内容stGeneralResp结构;18.获取网络参数服务器向设备发送获取网络参数请求;消息内容为空;19.获取网络参数响应typedef struct _stNetworkParamResp{unsigned short nResult; //结果(0:成功,1:失败)unsigned short nReserved; //保留stNetworkParam param; //分析参数} stNetworkParamResp;typedef struct _stNetworkParam{unsigned int ulIP; //终端IPunsigned short usPort; //终端监听端口unsigned int ulNetMask; //终端子网掩码unsigned int ulGateway; //网关IPunsigned int ulDNS;char sz3GUser[32]; //登录用户名char sz3GPwd[32]; //登录密码} stNetworkParam;20.设置网络参数服务器向设备发送设置网络参数请求;消息内容为stNetworkParam结构;21.设置网络参数响应设备对服务器发送的设置网络参数请求发送响应;消息内容stGeneralResp结构;22.获取平台参数服务器向设备发送获取平台参数请求;消息内容为空;23.获取平台参数响应typedef struct _stPlatformParamResp{unsigned short nResult; //结果(0:成功,1:失败)unsigned short nReserved; //保留stPlatformParam param; //分析参数} stPlatformParamResp;typedef struct _stPlatformParam{unsigned int ulIP; //终端IPunsigned short usPort; //终端监听端口char szDevID[7]; //终端子网掩码char szUser[32]; //登录用户名char szPwd[32]; //登录密码} stPlatformParam;24.设置平台参数服务器向设备发送设置平台参数请求;消息内容为stPlatformParam结构;25.设置平台参数响应设备对服务器发送的设置平台参数请求发送响应;消息内容stGeneralResp结构;。