Skip to content

xiamaocheng/jt809-master-new

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

出租车调度系统 JT/T 809 协议实现

介绍

基于交通运输部 JT/T 809-2019 道路运输车辆卫星定位系统平台数据交换协议 实现的出租车调度系统,支持车辆动态信息交互、实时监控调度、跨平台数据对接等功能。适用于网约车平台、出租车公司及交通监管部门的车辆调度场景。

协议特性

  • 完整支持809协议2019版报文格式
  • 支持身份认证(0x1001)、车辆注册(0x1200)、实时定位上报(0x1202)等核心指令
  • 实现数据加密(DES/3DES/AES可选)与校验和验证
  • 支持主链路(监管平台→企业平台)和从链路(企业平台→监管平台)双向通信

软件架构

├── src
│   ├── communication     # 通信层(TCP长连接管理)
│   ├── protocol_parser   # 协议解析(消息头/体构造、CRC校验)
│   ├── business_logic    # 业务处理(车辆状态机、调度算法)
│   ├── security          # 安全模块(加密算法实现)
│   └── config            # 配置管理(接入码、平台ID等)
├── test                  # 协议模拟测试工具
└── docs                  # 协议文档与数据字典

安装教程

  1. 环境要求

    JDK 1.8+、Maven 3.6+、MySQL 5.7+
  2. 编译部署

    git clone https://gitee.com/your-repo/taxi-809.git
    mvn clean package
    cp target/taxi-scheduler.jar /opt/app
  3. 配置修改

    # application.properties
    jtt809.access_code=3101150001        # 接入码(需向监管平台申请)
    jtt809.platform_id=000012345678      # 12位企业平台编号
    jtt809.encrypt_type=aes             # 加密方式(none/des/aes)
    jtt809.server_port=2121             # 主链路服务端口

使用说明

  1. 启动主链路服务

    java -jar taxi-scheduler.jar --mode=server
    • 监听监管平台连接请求
    • 自动完成身份认证(RSA交换会话密钥)
  2. 上报车辆定位

    // 示例代码:构造1202报文
    JT809MessageBuilder builder = new JT809MessageBuilder()
        .setMsgId(0x1202)
        .addParam("vehicle_no", "沪A12345")
        .addParam("lng", 121.4737)
        .addParam("lat", 31.2304)
        .addParam("speed", 45.2);
    byte[] packet = builder.buildEncryptedPacket();
  3. 处理调度指令

    @Jt809Handler(msgId = 0x1300)
    public void handleDispatchCommand(Channel channel, byte[] packet) {
        DispatchOrder order = ProtocolParser.parse(packet);
        // 推送至司机终端APP
        pushToDriver(order.getDriverId(), order.toJson()); 
    }

协议实现细节

消息结构示例(十六进制)

5B 00 00 00 38 00 00 1B 1A 10 01 00 00 00 00 00 00 00 00 31 30 30 31 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5D
  • 起始符 5B + 数据头(消息长度、报文序列号、业务类型等)
  • 数据体(动态长度,加密后二进制数据)
  • 校验码(CRC16-CCITT) + 结束符 5D

通信流程

sequenceDiagram
    企业平台->>监管平台: 主链路连接请求(0x1001)
    监管平台-->>企业平台: 返回应答(0x1002)
    企业平台->>监管平台: 车辆注册信息(0x1200)
    监管平台->>企业平台: 下发调度指令(0x1300)
    企业平台-->>监管平台: 指令执行结果(0x1301)
Loading

安全机制

  1. 身份认证:通过RSA交换会话密钥
  2. 数据加密:支持DES(默认)/AES两种模式
    // 加密示例
    byte[] encrypted = CryptoUtils.aesEncrypt(
        plainText.getBytes(), 
        sessionKey.getBytes(), 
        "CBC/PKCS5Padding"
    );
  3. 完整性校验:每包数据包含CRC校验码

常见问题

Q1:如何处理消息重发?
A:实现报文序列号校验,在protocol_parser模块维护已处理消息ID的缓存窗口

Q2:如何调试协议报文?
A:使用test目录下的模拟工具:

java -jar simulator.jar -mode client -type 0x1202

参与贡献

  1. Fork 本仓库并创建特性分支(如Feat_encrypt_optimize
  2. 提交代码时需附带协议单元测试
  3. 提交 Pull Request 时描述具体协议功能点

提示:实际部署前需向当地交通委申请正式接入码,测试阶段可使用0000000000作为临时接入码
完整协议文档参考《JT/T 809-2019 道路运输车辆卫星定位系统平台数据交换》第四章

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages