中国交通标准808协议解析二次开发包
Java
Java
共103个文件
java: 96
md: 2
xml: 2
gitignore: 1
COPYRIGHT: 1
LICENSE: 1
中国交通标准808协议解析二次开发包
交通标准808协议解析二次开发包
介绍
这个二次开发包是基于作者之前做过项目的源码改造的,那个时候使用不是很标准,仅仅是解析车辆定位数据,
并没有实现所有的内容。现在有时间终于可以重构一下原来的项目源码。
版本特性
20210409 v1.3.2 v1.3.2-jdk1.8
将消息包流水号 分配给各个连接处理
修复内置缓存内存泄露的风险
修复分包消息处理问题
ResHelper 下发消息 支持协议 2019
精简部分重复代码
20201004 v1.3.1 v1.3.1-jdk1.8
更新 JDK 版本到 15
更新 SpringBoot 版本到 2.3.4.RELEASE
0x0801 添加多媒体数据、定位数据以及多媒体实体数据之间的关联(非兼容性更新)
20200704 v1.2.5 v1.2.5-jdk1.8
修复消息读取逻辑 (B站网友 果子狸猫么么 反馈)
20200701 v1.2.4 v1.2.4-jdk1.8
增加配置 auth 以及 authMsgId 用于控制权限
调整代码,更新依赖,更新JDK到14
20200629 v1.2.3-jdk1.8
提供 JDK 1.8 版本的支持
20200512 v1.2.2
兼容交通标准808协议的2011、2013、2019版本
基于 Spring 系列框架,充分利用 Spring 的优势,改写扩展都很简单(自定义消息包处理器)
修复报警和状态解析的异常
20200503 v1.0.1
处理分包粘包
兼容交通标准808协议的2011、2013版本
超长指令分包下发(一般是超过1K)
分包处理(上传信息分包会合并解析)
版本升级
1.2.x 升级 1.3.2
DataService 接口有变动,重新实现 terminalLocation、mediaPackage 两个方法即可。
连个接口增加了参数 mediaId,用于 0x0801 多媒体数据上传 时,连接多媒体消息、定位数据以及实体数据。
如何开发
完整开发视频请访问重构录屏
基于开发包进行二次开发请访问直播录屏
详细说明请访问我的博客
最小化启动项目已经开源,欢迎访问
作者 JDK 使用的是 openJDK 15 版本,同时还提供 openJDK 1.8 编译版本,还没有在其他 JDK 版本进行测试。
下面是基于maven简短的开发使用步骤,详细还请访问直播录屏
创建新的 spring boot 项目的 pom 文件,并添加以下依赖:
<dependency>
<groupId>com.zhoyq</groupId>
<artifactId>spring-boot-starter-jt808</artifactId>
<version>1.3.2</version>
</dependency>
新建启动类,并且配置不使用Web容器(当然有需要也可以使用)。添加 @EnableJt808Server 注解。
@SpringBootApplication
@EnableJt808Server
public class Application {
public static void main (String[] args) {
var app = new SpringApplication(Application.class);
// 不使用web容器 仅启动jt808服务
app.setWebApplicationType(WebApplicationType.NONE);
app.run(args);
}
}
实现持久化接口,项目中已经有了基于 HashMap 的会话层的接口,仍需用户提供持久化的Bean。
import com.zhoyq.server.jt808.starter.service.DataService;
@Component
public class SimpleDataService implements DataService{}
然还有在 application.yml 中添加配置:
jt808:
enabled: true
use: mina
protocol: tcp
port: 10001
processCount: 2
corePoolSize: 1
maximumPoolSize: 10
# 单位毫秒
keepAliveTime: 1000
# 单位秒
idleTime: 10
idleCount: 6
readBufferSize: 2048
packageLength: 1024
threadCorePoolSize: 1
threadMaximumPoolSize: 10
# 单位毫秒
threadKeepAliveTime: 1000
masterSize: 1
slaveSize: 10
tcpNoDelay: true
keepAlive: true
auth: true
authMsgId: "0100,0102"
至此,启动程序,祝生活愉快。
如何扩展
因为很多时候处理逻辑并不是那么严谨,还是有需要自定义一些常规逻辑所以开放了对于单条命令的扩展方式,本节目标是使用自定义心跳包扩展,放弃原有心跳包逻辑定义。
只需要定义一个类即可,如下:
import com.zhoyq.server.jt808.starter.core.Jt808Pack;
import com.zhoyq.server.jt808.starter.core.PackHandler;
import com.zhoyq.server.jt808.starter.helper.ResHelper;
import lombok.extern.slf4j.Slf4j;
/**
* 0x0002 终端心跳
*/
@Slf4j
@Jt808Pack(msgId = 0x0002)
public class HeartbeatPackHandler implements PackHandler {
@Override
public byte[] handle(byte[] phoneNum, byte[] streamNum, byte[] msgId, byte[] msgBody) {
log.info("new heartbeat.");
return ResHelper.getPlatAnswer(phoneNum, streamNum, msgId, (byte) 0x00);
}
}
当然,应答需要自己组织,开发包里也提供了工具类 ResHelper,只要定义好类,实现 PackHandler 接口并且使用 @Jt808Pack 注解即可。
当然也可以使用这种方式定义协议之外的消息,比如使用保留的消息位定义用户自己的消息类型。
FAQ
我下载了最小化程序并启动但是发送定位信息却没有反应?
答:首先,程序本身实现了鉴权逻辑,在没有进行终端注册和鉴权的情况下只接受这两个消息,并且返回失败应答;
其次,第一次进行终端注册的时候,会调用 DataService.terminalRegister 进行终端注册,此时返回的字符串就是鉴权码,
鉴权码会被缓存(推荐使用redis,使用默认的 hashmap 会在重启后丢失鉴权信息),并在终端鉴权时使用,
如果没有实现 DataService.terminalRegister 这部分逻辑,也会导致失败应答;
最后,我在 1.2.4 版本之后加入了权限控制可选配置 auth 和 authMagId 选项,auth 代表是否检查权限,authMsgId 代表
权限开启时,可以不需要权限就访问的消息ID。这样就可以自己控制需要的权限了。
我启动了程序,如何下发指令呢?
// ...
import com.zhoyq.server.jt808.starter.core.SessionManagement;
@RestController
public class TestController {
private SessionManagement session;
public TestController(SessionManagement session) {
this.session = session;
}
@GetMapping("/test")
public String test(String sim, byte[] data) {
// data 是不包含校验码以及转义的数据 因为发送之前会自动添加校验码以及转义数据
session.write(sim, data);
return "下发指令成功";
}
}
程序更新规则是怎么样的?
目前的规则就是按照版本滚动更新,旧版本(包含发布版本)不会提供升级补丁或者更新pr,作者升级会考虑兼容性,也会给出解决方案,
所以还是手动升级到最新版本比较好。另外,新的PR可以提交到 develop 分支 ( 如果能提交到 github 就更好了 ),其他分支(已经固定)暂时不接受 PR 提交。
致谢
感谢 B站网友 果子狸猫么么 反馈的功能性BUG
感谢 GITHUB网友 大黄蜂coder 反馈的BUG
感谢 GITEE网友 杨顾 反馈的修改意见和BUG
授权
二次开发包使用 MIT 授权
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是一个基于Java的中国交通标准808协议解析二次开发包设计,使用Java语言开发,包含103个文件。主要文件类型包括96个Java源文件、2个Markdown文档、2个XML文件、1个gitignore文件、1个COPYRIGHT文件和1个LICENSE文件。该项目提供了一个中国交通标准808协议的解析二次开发包,适合用于个人学习和实践Java开发技术。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的中国交通标准808协议解析二次开发包设计源码 (103个子文件)
COPYRIGHT 696B
.gitignore 342B
Jt808Helper.java 39KB
ResHelper.java 28KB
Analyzer.java 27KB
HandlerWrapper.java 12KB
Handler0x0100.java 7KB
ByteArrHelper.java 6KB
Coder.java 6KB
DataService.java 5KB
RsaHelper.java 5KB
Jt808NettyServer.java 5KB
SimpleDataServiceAdapter.java 5KB
Jt808NettyDecoder.java 4KB
Handler0x0102.java 4KB
Jt808MinaServer.java 4KB
AlarmInfo.java 4KB
Handler0x0801.java 4KB
Jt808Starter.java 3KB
HandlerWrapperTest.java 3KB
HashMapCacheService.java 3KB
StatusInfo.java 3KB
PackHandlerManagement.java 3KB
TerminalProperty.java 3KB
Handler0x0005.java 3KB
CacheService.java 3KB
GzipHelper.java 3KB
Handler0x0704.java 3KB
Handler0x0001.java 3KB
MinaSessionHandler.java 2KB
Handler0x0702.java 2KB
Jt808Config.java 2KB
Handler0x0303.java 2KB
Handler0x0201.java 2KB
Handler0x0A00.java 2KB
Const.java 2KB
Handler0x0800.java 2KB
Handler0x0003.java 2KB
Handler0x0901.java 2KB
Handler0x0802.java 2KB
Handler0x0608.java 2KB
Handler0x0200.java 2KB
Handler0x0900.java 2KB
Handler0x0107.java 2KB
Handler0x0805.java 2KB
Handler0x0104.java 2KB
Handler0x0705.java 2KB
Handler0x0302.java 2KB
BufferWrapper.java 2KB
Handler0x0500.java 2KB
Handler0x0301.java 2KB
Handler0x0700.java 2KB
Handler0x0108.java 2KB
SimpleBeanConfig.java 2KB
DtoHelper.java 2KB
Handler0x0701.java 2KB
Handler0x0002.java 2KB
SessionManagement.java 2KB
CustomThreadFactory.java 2KB
NettySessionHandler.java 2KB
DriverInfo.java 2KB
MediaInfo.java 2KB
Jt808Encoder.java 2KB
LocationInfo.java 2KB
Jt808CodecFactory.java 2KB
Jt808Decoder.java 2KB
Handler0x0004.java 1KB
NoSupportHandler.java 1KB
Jt808NettyEncoder.java 1KB
CanDataItem.java 1KB
DriverAlarmInfo.java 1KB
EnableJt808Server.java 1KB
RectangleArea.java 1KB
PackHandler.java 1KB
CanDataInfo.java 1KB
TurnPoint.java 1KB
PolygonArea.java 1KB
CameraInfo.java 1KB
CircleArea.java 1KB
Parameter.java 1KB
SendDataType.java 1KB
Jt808Server.java 1KB
TerminalUpdatePkg.java 1KB
Route.java 1KB
CanDataItemProcessor.java 1KB
StoredMediaDataUpload.java 1KB
Jt808Pack.java 1KB
TerminalParameterProcessor.java 1KB
Contact.java 1KB
SearchStoredMediaData.java 1KB
LocationAttachInfo.java 1KB
DataTransportInfo.java 1KB
InfoForOrder.java 1KB
SimAuthDto.java 1KB
CandidateAnswer.java 1KB
LocationAttacheProcessor.java 1008B
Event.java 1008B
Point.java 979B
LICENSE 1KB
ResHelper.md 27B
共 103 条
- 1
- 2
资源评论
沐知全栈开发
- 粉丝: 4739
- 资源: 3374
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功