Java实现符合交通部标JT808和JT1078协议服务器的思路
“两客一危一重货”车辆运输安全是当前道路运输安全管理工作的重中之重,相应的车辆GPS定位监控平台是监控“两客一危一重货”车辆运输安全的重要平台。本系统结合交通部JT808、JT1078等协议标准,提供Java开发车载视频定位监控系统的开发思路。
一:JT808协议解析和服务器搭建。
JT808协议分为2011版、2013版、2019版本。市面上大多是2013版,少数2019版。2013和2019版本的最大区别是报文固定头部把手机号从原来的6字节BCD码改成了10字节BCD码。
2013版报文头:
2019版报文头:
对于TCP报文的解析,消息头可以使用公共组件,通过版本标记解析不同版本的消息头。消息体用每个消息自定义的解析格式。
public abstract class JTMessage {protected String msgId;//消息编号protected String tid;//终端IDprotected String msgNo;//消息流水protected int version;//版本号protected int isPack;//分包
解析报文头:
//解析报文头ReadByteFromHex reader = new ReadByteFromHex(msg);//=============解析消息头开始=============reader.readByte(1);// 7EString msgId = reader.readByte(2);// 消息idString msgBodyAttr = reader.readByte(2);// 消息体属性int msgBodyInt = Integer.parseInt(msgBodyAttr, 16);boolean isVersion = (msgBodyInt & 0x4000) > 0;// 是否有版本号 取第13位是否为1 0x4000二进制是0100000000000000int version = 0; //2019版本开始从1递增if (isVersion) {version = Integer.parseInt(reader.readByte(1), 16); // 版本号}//如果版本号大于0 则手机号为10位String tid = version > 0 ? reader.readByte(10) : reader.readByte(6);// 手机号,当做idString msgNo = reader.readByte(2);// 消息流水// 是否分包boolean isPack = (msgBodyInt & 0x2000) > 0;// 是否分包 取第13位是否为1 0x2000二进制是0010000000000000int packTotal = 0;int packNum = 0;if (isPack) {// 如果有分包则多读4个字节packTotal = Integer.parseInt(reader.readByte(2), 16);packNum = Integer.parseInt(reader.readByte(2), 16);}boolean isRSA = (msgBodyInt & 0x400) > 0;// 消息体是否过RSA算法加密; 取第13位是否为1 0x400二进制是0000010000000000//=============解析消息头结束=============
解析消息体:
//=============解析消息体开始=============String bodyHex = reader.readByte(msgBodyInt & 0x3ff); // 消息体属性前10位是消息体长度 0x3ff二进制是0000001111111111if ("0200".equals(msgId)) {//位置上报JTMessage t0200 = new T0200(tid, msgNo);t0200.decodeBody(bodyHex);return t0200;} else if ("0002".equals(msgId)) {//心跳JTMessage t0202 = new T0002(tid, msgNo);t0202.decodeBody(bodyHex);return t0202;} else if ("0003".equals(msgId)) {//注销JTMessage t0003 = new T0003(tid, msgNo);t0003.decodeBody(bodyHex);return t0003;} else if ("0100".equals(msgId)) {//注册JTMessage t0100 = new T0100(tid, msgNo);t0100.decodeBody(bodyHex);return t0100;} else if ("0102".equals(msgId)) {//鉴权JTMessage t0102 = new T0102(tid, msgNo);t0102.decodeBody(bodyHex);return t0102;} else if ("0001".equals(msgId)) {//终端通用应答JTMessage t0001 = new T0001(tid, msgNo);t0001.decodeBody(bodyHex);return t0001;} else if ("0704".equals(msgId)) {//定位数据批量上传JTMessage t0704 = new T0704(tid, msgNo);t0704.decodeBody(bodyHex);return t0704;}//=============解析消息体结束=============
二、设备上报流程:
注意,设备数据大批量上报的情况下,服务器需要支持高并发,netty作为天然的高并发框架,可以用作JT808服务器的接入点。
三、JT1078服务器的搭建流程:
1078服务器就是一个流媒体服务器,要处理的功能是接收设备上报的视频数据,解析成浏览器能够播放的格式,并通过websocket或者http协议发送到浏览器,浏览器解码观看视频。
下面是系统demo演示地址:gps.cachtek.com
Java实现符合交通部标JT808和JT1078协议服务器的思路相关推荐
- 交通部标JT808及JT1078车辆定位与视频监控平台开源对比
1.GPS部标软件平台和视频软件平台 技术支持:个人 或 不详 联系QQ:2379423771 演示地址:没有演示地址,只有博客网址:http://www.jt808.com/ 最早的GPS定位平台商 ...
- 部标JT808 JT/T808协议网关
项目介绍 基于Netty,实现JT808 JT/T808部标协议的消息处理,与编码解码: 使用SpringBoot + MyBatis提供数据入库.Web接口服务: 协议部分不依赖Spring,可移除 ...
- 基于java spring框架开发部标1078视频监控平台精华文章索引
部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面 ...
- SpringBoot+Netty构建高并发稳健的部标JT808网关
应很多朋友的要求,今天分享一下如何使用SpringBoot和Netty构建高并发稳健的JT808网关,并且是兼容JT808-2011和JT808-2019的网关,此网关已经有多个客户在商用. JT80 ...
- java毕业设计智能交通管控系统Mybatis+系统+数据库+调试部署
java毕业设计智能交通管控系统Mybatis+系统+数据库+调试部署 java毕业设计智能交通管控系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...
- java计算机毕业设计交通非现场执法系统源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计交通非现场执法系统源码+mysql数据库+系统+lw文 java计算机毕业设计交通非现场执法系统源码+mysql数据库+系统+lw文档+部署 档+部署 本源码技术栈: 项目架构: ...
- java毕业设计OTET交通在线查询购票系统Mybatis+系统+数据库+调试部署
java毕业设计OTET交通在线查询购票系统Mybatis+系统+数据库+调试部署 java毕业设计OTET交通在线查询购票系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S ...
- java计算机毕业设计交通非现场执法系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计交通非现场执法系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计交通非现场执法系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构 ...
- 基于JAVA智能道路交通管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
基于JAVA智能道路交通管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA智能道路交通管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: ...
最新文章
- iOS UITextField输入框随键盘弹出界面上移
- 《Pro ASP.NET MVC 3 Framework》学习笔记之九【Ninject的使用-下】
- Linux-iptables命令
- BZOJ 4247 挂饰 背包DP
- Oracle10g/11g数据库性能的诊断和监控方法论
- xmlhttprequest level 2
- 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上
- css3新增特性集合贴
- Makefile:宏定义EXTRA_CFLAGS += -D 与CONFIG_ =y
- Linux用管道移动文件夹,linux常用命令(示例代码)
- 学习笔记(五)——相关系数及Excel实现相关分析操作
- 【转】WinRAR软件许可框
- 一文读懂nginx gzip
- 基于Proteus学习单片机系列(三)——按键
- org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body
- 【数据可视化】python/pyecharts 画地图(热力图)(世界地图,省市地图,区县地图)、动态流向图
- BUUCTF刷题——metasequoia_2020_samsara
- 转速/线速度/角速度计算FC
- 舒米,又夺冠了。。。。。
- immutable.js中文文档