山海易绘EzMatics
实时定位消息服务系统V2.2
二次开发手册
(接口协议)
北京山海经纬信息技术有限公司
2011年6月
本手册内容改动及版本更新将不再另行通知。本手册的范例中所使用的人名、公司名以及数据,如果没有特别指明,均属虚构。对于本手册、及本手册涉及的技术和产品,北京山海经纬信息技术有限公司拥有其专利、商标、著作权或其它知识产权,除非得到北京山海经纬信息技术有限公司的书面许可,本手册不授予这些专利、商标、著作权或其它知识产权的许可。
版权所有 C(2004-2010)
北京山海经纬信息技术有限公司保留所有权利。
● 山海易绘是北京山海经纬信息技术有限公司的注册商标。
● 其它标牌和产品名称是其各自公司的商标或注册商标。
● 山海易绘EzMatics产品的一切有关权利属于北京山海经纬信息技术有限公司所有。
● 本手册中所涉及的软件产品及其后续升级产品均由北京山海经纬信息技术有限公司制作并负责全权销售。
如果您对本产品有任何建议和疑问,请与以下地址联系:
北京山海经纬信息技术有限公司产品服务部
地 址:北京市海淀区苏州街29号维亚大厦801室
邮 编:100080
传 真:(010)82612775
电 话:(010)82616439 82616316 82616319
E-mail:support@easymap
目 录
1 消息接入流程 1
1.1 TCP接入流程 2
1.2 UDP接入流程 3
2 接口定义说明 4
2.1 接口类型 4
2.2 接口参数 4
2.3 类型说明 7
1 消息接入流程
用户可采用“TCP协议”(或“UDP协议”)通信方式进行定位信号接入(如图11定位消息接入流程图[TCP]所示)。
注:
1) 在通信环境良好的情况下,建议采用UDP方式发送数据;
2) TCP接入默认端口号为“6607”;
3) UDP接入默认端口号为“9989”。
1.1 TCP接入流程
图11定位消息接入流程图[TCP]
具体步骤说明:
1. EzMatics后台服务作为服务器端,其它接入端为客户端;
2. 客户端主动连接服务器,并建立SOCKET通信连接;
3. 客户端向服务端发送登录认证报文数据;
4. 服务器端在接收到登录报文数据后,将进行认证处理。如果成功,则发送通过认证消息,否则向客户端发送认证失败消息;
5. 客户端在接收到服务器端“认证成功”的消息后,即向服务器发送指定格式的通信报文数据;
6. 服务器端在建立同客户端的连接通信后,如果在一段时间内仍未接收到客户端发送的定位报文数据,则会主动向该客户端发送心跳检测报文命令。客户端在接受到心跳指令后,需要应答服务器的心跳命令。如果服务器端在发送心跳命令后的一定时间内(如1分钟),仍未接收到客户端的心跳回馈命令,则会主动断开同客户端的连接。
7. 客户端在断开同服务器的通信连接时,需要发送断开连接命令,然后断开连接。
注:如果客户端同服务器端的连接失败,则需要客户端发起重新连接请求。服务器不负责重新连接。
1.2 UDP接入流程
图12定位消息接入流程图[UDP]
具体步骤说明:
客户端无需认证等交互信息,直接向服务器指定的端的发送定位报文数据就可
1.3 UDP分发流程
图13定位消息分发流程图[UDP]
具体步骤说明:
消息服务能主动向指定的目标通过UDP协议发送定位消息数据。
2 接口定义说明
2.1 接口类型
接口类型:SOCKET协议。
2.2 接口参数
以下协议对“TCP”和“UDP”方式都通用。
1) 通信数据包定义
数据头 | 数据体 | |||
标志头 | 命令标志 | 版本号 | 包体大小 | 数据内容 |
2Byte | 2Byte | 2byte | 4Byte | nByte |
其中 包体长度只包括“数据体长度”,不包括“包头”和“包尾部分”。
2) 数据包头定义格式
参数描述 | 大小 | 类型 | 值 | 说明 |
标志头 | 2 | Unsigned short | 0xAAAA | 报文头标志 |
命令字 | 2 | Unsigned short | 0xBBBB | 登录系统命令字 |
0xBBCC | 登录应答命令字 | |||
0xCCCC | 定位数据命令字 | |||
0xEEEE | 心跳检测命令字 | |||
0xFFFF | 断开连接命令字 | |||
0xDDDD | 报警或自定义消息 | |||
版本号 | 2 | Unsigned short | 0x2200 | 第一个字节固定为:0x22表示协议版本; 第二个字节0x00表示协议加密情况[暂未用] |
包体大小 | 4 | int | 可变 | 网络字节序 |
3) 登录包体定义【该接口只用于TCP接入方式】
命令字(CommandID) | 0xBBBB | |||
协议包长度(字节) | 50 | |||
包体(BODY) | ||||
字段名称 | 字节大小 | 类型 | 备注 | |
认证编码 | 50 | char | 实际长度不足50字节时,右补二进制0 | |
4) 登录应答包体【该接口只用于TCP接入方式】
命令字(CommandID) | 0xBBCC | ||
协议包长度(字节) | 52 | ||
包体(BODY) | |||
字段名称 | 字节大小 | 类型 | 备注 |
认证结果 | 2 | Unsigned short | 0x0001 : 登录成功 0x0000 : 登录失败 |
描述 | 50 | char | 登录描述信息 |
5) 心跳检测包体【该接口只用于TCP接入方式】
命令字(CommandID) | 0xEEEE | ||
协议包长度(字节) | 0 | ||
包体(BODY) | |||
字段名称 | 字节大小 | 类型 | 备注 |
6) 断开连接包体【该接口只用于TCP接入方式】
命令字(CommandID) | 0xFFFF | ||
协议包长度(字节) | 0 | ||
包体(BODY) | |||
字段名称 | 字节大小 | 类型 | 备注 |
7) 定位消息包体【该接口TCP和 UDP通用】
命令字(CommandID) | 0xCCCC | ||||
协议包长度(字节) | 51 + n | ||||
包体(BODY) | |||||
字段名称 | 字节大小 | 类型 | 备注 | ||
终端编号 | 20 | char | 实际长度不足20字节时,右补二进制0 | ||
经度 | 8 | double | 例: 119.12313 | ||
纬度 | 8 | double | 例: 34.232443 | ||
速度 | 2 | unsigned short | 单位:米/秒 该值采用了网络字节序 | ||
方向 | 2 | unsigned short | 以正北方向为0角度,顺时针方向偏转该值采用了网络字节序 | ||
高程 | 2 | unsigned short | 单位:米 该值采用了网络字节序 | ||
精度 | 2 | unsigned short | 1. 0xFFFF:无效定位。 2. 无此项值设置为: 0x0000填充,否则按正常精度值填充。 3.单位:米。 该值采用了网络字节序 | ||
时间 | 年 | 2 | Unsigned short | 该值采用了网络字节序 | |
月 | 1 | byte | |||
日 | 1 | byte | |||
时 | 1 | byte | |||
分 | 1 | byte | |||
秒 | 1 | byte | |||
备用字段 | n < 1024 | char | 该项非必须,如果没有该字段内容,则包体长度不计算该部分 | ||
2.3 UDP转发报文
同接入的定位报文格式一致。
包体(BODY) | ||||
字段名称 | 字节大小 | 类型 | 备注 | |
标志头 | 2 | Unsigned short | 固定为0xAAAA | |
命令字 | 2 | Unsigned short | 固定为:0xCCCC | |
版本标志 socket通信报文格式 | 2 | Unsigned short | 固定为:0x2200 | |
包体大小 | 4 | int | 51+N (N标志备注字段大小) 该值采用了网络字节序 | |
终端编号 | 20 | char | 实际长度不足20字节时,右补二进制0 | |
经度 | 8 | double | 例: 119.12313 | |
纬度 | 8 | double | 例: 34.232443 | |
速度 | 2 | unsigned short | 单位:米/秒,无此项按:0x0000填充 该值采用了网络字节序 | |
方向 | 2 | unsigned short | 以正北方向为0角度,顺时针方向偏转,无此项按:0x0000填充 该值采用了网络字节序 | |
高程 | 2 | unsigned short | 单位:米,无此项按:0x0000填充 该值采用了网络字节序 | |
精度 | 2 | unsigned short | 1. 0xFFFF:无效定位。 2. 无此项值设置为: 0x0000填充,否则按正常精度值填充。 3.单位:米。 该值采用了网络字节序 | |
时间 | 年 | 2 | Unsigned short | 该值采用了网络字节序 |
月 | 1 | byte | ||
日 | 1 | byte | ||
时 | 1 | byte | ||
分 | 1 | byte | ||
秒 | 1 | byte | ||
备用字段 | N< 1024 | char | 该项非必须,如果没有该字段内容,则包体长度不计算该部分 | |
2.4 其他说明
类型 | 类型说明 |
Double | 8字节双精度型 |
Int | 4字节整型 ,采用网络字节序 |
Unsigned short | 无符号2 字节整型,采用网络字节序 |
Byte | 单字节整型 |
char | 单字节字符型 |
如果采用结构体(VC)定义消息接入消息,则需要 建立一个字节的对齐。
#pragma pack(push, 1)
….
#pragma pack(pop)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论