交通标准 808 解析软件二次开发包 v1.2.2 发布
介绍
这个二次开发包是基于作者之前做过项目的源码改造的,那个时候使用不是很标准,仅仅是解析车辆定位数据, 并没有实现所有的内容。现在有时间终于可以重构一下原来的项目源码。
版本特性
20200512 v1.2.2
- 💥 兼容交通标准808协议的2011、2013、2019版本
- 💥 基于 Spring 系列框架,充分利用 Spring 的优势,改写扩展都很简单(自定义消息包处理器)
- 💢 修复报警和状态解析的异常
20200503 v1.0.1
- 💥 处理分包粘包
- 💥 兼容交通标准808协议的2011、2013版本
- 💥 超长指令分包下发(一般是超过1K)
- 💥 分包处理(上传信息分包会合并解析)
如何开发
- 完整开发视频请访问重构录屏
- 基于开发包进行二次开发请访问直播录屏
- 详细说明请访问我的博客
- 最小化启动项目已经开源,欢迎访问
- 作者 JDK 使用的是 openJDK 12 版本,还没有在其他 JDK 版本进行测试。
下面是基于maven简短的开发使用步骤,详细还请访问直播录屏
- 创建新的 spring boot 项目的 pom 文件,并添加以下依赖:
<dependency> <groupId>com.zhoyq</groupId> <artifactId>spring-boot-starter-jt808</artifactId> <version>1.2.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
建议使用 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
注解即可。 当然也可以使用这种方式定义协议之外的消息,比如使用保留的消息位定义用户自己的消息类型。
注意:鉴权的逻辑还没有开放,未鉴权只能访问终端注册和终端鉴权两个包处理器。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
CAT 0.3.0 版本发布,新增签名与验签功能、DSA 算法和梅森旋转算法
CAT,全称 Cryptographic Algorithm Tool,是一款小巧的 Java 加密与解密算法调用工具包。 此次版本主要更新内容: 1. 国密 SM2 加密与解密功能新增签名与验签功能: 2.新增DSA算法,包含签名算法:SHA1withDSA, SHA224withDSA, SHA256withDSA; 3.新增梅森旋转算法,用法请参考维基百科。 梅森旋转算法(Mersenne twister)是一个伪随机数发生算法。由松本真和西村拓士在1997年开发,基于有限二进制字段上的矩阵线性递归。可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷。 整个算法主要分为三个阶段: 第一阶段:获得基础的梅森旋转链; 第二阶段:对于旋转链进行旋转算法; 第三阶段:对于旋转算法所得的结果进行处理; 算法实现的过程中,参数的选取取决于梅森素数,故此得名。 PS: 哪位大虾有祖冲之算法的加密与解密过程源码,请贡献一下,非常感谢!
- 下一篇
Schedulis V1.0.0 发布--开源的金融级工作流调度方案
Schedulis 是微众银行基于 LinkedIn 的开源项目 Azkaban 开发的一款工作流任务调度系统,用于解决金融级场景下,大量批量作业任务的复杂依赖、灵活调度。 开源链接: gitee地址: https://gitee.com/WeBank/Schedulis ; github地址:https://github.com/WeBankFinTech/Schedulis 01 Schedulis 是什么? Schedulis 是一个分布式工作流任务调度系统。其支持常规的 Command Shell 和 Linkis(HadoopMR、 Hive、Spark、Sqoop、 Python)大数据任务;同时还支持特色的数据检查和工作流之间的依赖任务,支持完善的告警和工作流执行策略;提供多种类型的参数设置,动态全局变量和简单易用的 UI;该调度系统还具备高性能,高可用(去中心化多调度中心和多执行器)和多租户资源隔离等金融级特性;现已被集成到数据应用开发门户 DataSphere Studio。 02 为什么需要 Schedulis? 大数据平台中承载着大量多样的数据处理任务,如何才能...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果