代码改变世界

基于部标JT/T 808协议及数据格式的GPS服务器 开发

2013-05-01 17:14  GPS视频平台产品经理  阅读(21845)  评论(1编辑  收藏  举报

基于部标JT/T808协议及数据格式的GPS服务器 开发 

 2011年5月10日中国交通通信信息中心下发了《印发道路运输车辆卫星定位系统平台和道路运输车辆卫星定位系统车载终端标准符合性审查办法(试行)的通知》。通知要求,系统平台和车载终端应当分别满足《平台要求》和《终端要求》,同时分别满足《道路运输车辆卫星定位系统平台数据交换》和《道路运输车辆卫星定位系统终端通讯协议及数据格式》的要求。系统平台和车载终端,应按照本办法通过标准符合性审查。不符合标准的,不得用于道路运输车辆动态监管工作。《道路运输车辆卫星定位系统平台和道路运输车辆卫星定位系统车载终端标准》简称部标,部标包括《道路运输车辆卫星定位系统平台技术要求》(JT/T796-2011,简称《平台部标》)和《 道路运输车辆卫星定位系统车载终端技术要求》(JT/T794-2011,简称《终端部标》)。至此,关于系统平台和车载终端必须符合部标的政策性文件正式出台。而对应硬件终端标准的通信协议标准JT/T808-2011和JT/T809-2011协议也随之出台。

部标808和809的出台,统一了产品的标准,统一了平台与终端之间的通讯协议,对于GPS运营商而言,只要平台支持部标,那可以选择任意一家的GPS车载终端,也不会受厂商的制约,GPS运营商在市场竞争过程中将更看重产品的质量及服务,从而也间接地促进市场上产品的稳定性和可靠性。

但是开发部标GPS服务器是一个繁琐苦逼的活,有各种各样的GPS终端需要兼容和支持,现在交通部颁发了统一的标准协议和数据格式,大部分车辆的GPS终端都需要支持,软件也需要支持,否则可能在市场准入的时候就遇到麻烦。

我们开发了一个支持JT/T 808-2011数据格式的健壮的GPS服务器,提供下载。数据库版本支持Mysql, Sqlserver和Oracle等关系数据库,可以直接拿来做服务器连接前段GPS客户端和报表开发。

需要JT 808 源码+808模拟测试终端+压力测试工具 的请联系我购买1200元(2379423771@qq.com), Java版本,基于Netty框架的,参见:

基于Java Netty框架构建高性能的部标808协议的GPS服务器

基于Mina框架的参见:基于Java Mina框架的部标GPS服务器

T 808源码很完整,已通过交管平台接入,可以直接使用。如果自己来写,可能需要很长时间的编写,由于需要结合终端或模拟终端进行测试,很多测试用例很难测试,如拍照,多媒体上传,行车记录仪数据上传等等,很容易走弯路,浪费了大量的时间,建议直接购买808源码省时省力。而通过808模拟测试终端可以模拟硬件设备的上传行为通过TCP或UDP发送数据,帮助检验我们的程序是否正确的实现了808协议。

C#版的模拟终端开发-》部标808协议模拟终端的设计和开发

809转发服务器的设计,参见:基于JT/T809-2011的(已过检)GPS平台数据交换及转发服务器

 

基于Asp.NET MVC框架+SignalR +ActiveMQ + Ali OSS 服务构建苏标主动安全智能防控平台


试用版,没有指令下发和报警分析及入库功能。如果没有安装.NET4.0 runtime ,将不能运行,.NET4 runtime 安装请到微软网站 : http://www.microsoft.com/zh-cn/download/details.aspx?id=17718

1.支持TCP和UDP两种传输协议, 完整实现808协议的所有命令和消息;主要功能有:

2.基于完成端口的异步通信模式,可以支持大规模运输车辆的终端并发上传GPS数据;

3.对于数据包和定位包及服务器终端连接状态进行在线实时监控,提供在线下发命令接口可以很方便的与终端进行交互,如拍照摄像等;

4.对于GPS数据包进行日志保存,便于调试跟踪。

5.开发语言采用C# .NET4.0框架, 数据库框架采用Nhibernate,这样便于数据库移植,可以支持Oracle, MySql和MS Sqlserver等多个数据库。

6.Socket服务器模型采用了基于SocketAsyncEventArgs的SocketServer.  SocketAsyncEventArgs是.net提供的关于异步socket类,封装了IOCP的使用,可以用它方便的实现非阻塞通信(non-blocking IO),同时采用对象池和缓冲区管理,大大减少了对象分配和垃圾收集的工作,对于Server性能和吞吐量有很大提升。单机测试可以并发支持上万个终端。在设计的时候,接收和发送均采用异步全双工通信的的形式,满足了GPS服务器大批量数据上传和大批量数据应答的特点,互不影响。

7.数据库版,自动分析GPS数据,形成报警记录,停车报表,油量记录和加油漏油记录、历史轨迹等多个丰富的报表,直接拿来就可以用。

 8.高性能的解析模块,在大规模连接的情况下,对于上传的数据包的粘包、断包仍然需要进行不差毫厘的解析,防止出现丢包的情况,这也是交通部平台过检所要求的:在5000和1万个终端连接的情况下,不允许出现连接中断、丢包的情况。

 主界面功能如下图所示,提供连接和数据包的视图,对于连接的终端可以批量下发各种命令。

 服务器提供了从终端控制、参数设置和行车记录仪及其他所有808规定的平台下发指令。可以对多个终端下发。

对于JT/T808协议文档中规定的所有协议,无论是终端上行还是平台下发,都提供了完整的实现。并进行了完整的测试。在多个GPS系统中得到了充分的使用。

 

GPS服务器连接的特点是基于长连接,高吞吐量的处理特点,

1.很多企业在设计的时候,基于TCP协议开发,服务器所承受的连接都是长连接。

2.由于808协议规定终端发上来的包除了应答包,都要进行应答,很多傻逼终端企业在开发的时候,死板的照抄808协议,不应答不行。这样就造成了大批量数据上传和大批量数据应答的情况。实际上定位上传的数据包完全不应该应答,心跳包就更没道理去进行应答了。

为了提高终端接入能力和数据分析、入库能力,将终端消息的处理分成独立的五级处理模块,每个处理模块都是异步独立的,每个模块内都含有独立的处理队列,互不影响,提高数据的吞吐量和系统的响应能力。

1)第一级:实时数据解析入库,入库能力决定了客户端所看到的实时数据是否延迟;

2)第二级:报警分析并入库(包括32种808协议规定的报警、停车报警和路线偏移报警),报警分析只有快速分析才能快速的推送到前端客户端;

3)  第三级:消息应答和指令下发,应答可以有一定的延迟,而不影响整个系统性能。

4)第四级:报表统计,由于油量统计、里程统计、上线率统计,需要定时扫描数据库,生成每个时段的数据统计提供给报表查询使用.

5)第五级:日志记录和显示

如下图,采用终端模拟工具,自动生成静态车辆数据,自动进行并发连接、注册和鉴权后,开始定位数据上传。每个车辆的上传轨迹是独立不重复的,报警位和状态位定时反转,便于测试报警分析和入库能力。

这样经过五秒传一次的模拟的压力测试后,真实环境就不在话下了。如何进行压力测试参见:GPS部标监控平台-压力测试

 

 

提供WCF服务接口,使得客户端和其他第三方系统可以调用,从而能够对终端下发命令。

代码提供了命令接口和实时数据服务接口,可以很方便和PHP系统进行集成。

如下是部标平台的GIS客户端调用808GPS服务器的WCF服务接口,给终端下发各种命令:

如需购买GPS平台源码+文档+服务,可以联系我2379423771@qq.com。

Java平台,参见:

基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

基于Struts+Spring+Hibernate+Ibatis+Quartz+Mina框架构建部标监控平台

.NET平台,参见:基于Asp.NET MVC构建GPS部标平台

Cs客户端参见:GPS监控CS客户端设计