1 Star 0 Fork 100

xiaohui886688 / 中国交通标准808协议解析二次开发包

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

交通标准808协议解析二次开发包

介绍

这个二次开发包是基于作者之前做过项目的源码改造的,那个时候使用不是很标准,仅仅是解析车辆定位数据, 并没有实现所有的内容。现在有时间终于可以重构一下原来的项目源码。

版本特性

20200512 v1.2.2

  • :boom: 兼容交通标准808协议的2011、2013、2019版本
  • :boom: 基于 Spring 系列框架,充分利用 Spring 的优势,改写扩展都很简单(自定义消息包处理器)
  • :anger: 修复报警和状态解析的异常

20200503 v1.0.1

  • :boom: 处理分包粘包
  • :boom: 兼容交通标准808协议的2011、2013版本
  • :boom: 超长指令分包下发(一般是超过1K)
  • :boom: 分包处理(上传信息分包会合并解析)

如何开发

  • 完整开发视频请访问重构录屏
  • 基于开发包进行二次开发请访问直播录屏
  • 详细说明请访问我的博客
  • 最小化启动项目已经开源,欢迎访问
  • 作者 JDK 使用的是 openJDK 12 版本,还没有在其他 JDK 版本进行测试。

下面是基于maven简短的开发使用步骤,详细还请访问直播录屏

  1. 创建新的 spring boot 项目的 pom 文件,并添加以下依赖:
<dependency>
    <groupId>com.zhoyq</groupId>
    <artifactId>spring-boot-starter-jt808</artifactId>
    <version>1.2.2</version>
</dependency>
  1. 新建启动类,并且配置不使用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);
    }
}
  1. 实现持久化接口,项目中已经有了基于 HashMap 的会话层的接口,仍需用户提供持久化的Bean。
import com.zhoyq.server.jt808.starter.service.DataService;

@Component
public class SimpleDataService implements DataService
  1. 然还有在 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

建议使用 mina 配置,因为作者之前写的工程就是基于 mina 写的,当然我也写了 netty 的版本。

至此,启动程序,祝生活愉快。

如何扩展

因为很多时候处理逻辑并不是那么严谨,还是有需要自定义一些常规逻辑所以开放了对于单条命令的扩展方式,本节目标是使用自定义心跳包扩展,放弃原有心跳包逻辑定义。 只需要定义一个类即可,如下:

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 注解即可。 当然也可以使用这种方式定义协议之外的消息,比如使用保留的消息位定义用户自己的消息类型。

注意:鉴权的逻辑还没有开放,未鉴权只能访问终端注册和终端鉴权两个包处理器。

授权

二次开发包使用 MIT 授权,大家随便用~

The MIT License (MIT) Copyright (c) 2020 zhoyq.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

中国交通标准808协议解析二次开发包 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/xiaohui886688/spring-boot-starter-jt808.git
git@gitee.com:xiaohui886688/spring-boot-starter-jt808.git
xiaohui886688
spring-boot-starter-jt808
中国交通标准808协议解析二次开发包
master

搜索帮助