gbt32950_2025_decoder_rs

Crates.iogbt32950_2025_decoder_rs
lib.rsgbt32950_2025_decoder_rs
version0.1.3
created_at2025-08-11 05:47:26.315598+00
updated_at2025-08-13 03:49:07.083506+00
descriptionA Rust implementation of GBT32950 decoder
homepage
repositoryhttps://gitee.com/awol2010ex/gbt32950_2025_decoder_rs
max_upload_size
id1789642
size136,791
(awol2005ex)

documentation

README

GBT32950-2025 协议解码器

Rust License

一个用 Rust 编写的 GBT32950-2025 协议解析器,用于解析符合国标 GBT32950-2025 的车辆数据通信协议。

项目简介

GBT32950-2025 是中国国家标准,定义了电动汽车远程服务与管理系统中车载终端与企业平台之间的通信协议。本项目提供了一个高效、安全的 Rust 实现,用于解析该协议的数据包。

该协议主要用于电动汽车的数据采集和远程监控,包括车辆状态、电池信息、电机状态、位置信息等。

功能特性

  • 解析 GBT32950-2025 协议数据包
  • 将解析结果转换为结构化数据(JSON 格式)
  • 支持多种数据类型:
    • 车辆登录/登出
    • 实时信息上报
    • 心跳包
    • 终端校时
    • 查询命令
    • 设置命令
    • 车载终端控制命令等
  • 完整的错误处理机制
  • 高性能和内存安全(基于 Rust 语言特性)

技术栈

  • Rust 2024 edition
  • Serde - 数据序列化/反序列化
  • Bytes - 高效字节处理
  • Thiserror - 错误处理
  • Chrono - 时间处理

安装

在你的 Cargo.toml 中添加依赖:

[dependencies]
gbt32950_2025_decoder_rs = "*"

使用示例

use gbt32950_2025_decoder_rs::Gbt32950Decoder;

fn main() {
    let decoder = Gbt32950Decoder::new();
    let hex_data = "2323.......";
    
    let result = decoder.decode(hex_data);
    let json_result = serde_json::to_string_pretty(&result).unwrap();
    println!("{}", json_result);
}

支持的协议类型

  • 车辆登录 (0x01)
  • 实时信息上报 (0x02)
  • 补发信息上报 (0x03)
  • 车辆登出 (0x04)
  • 心跳 (0x07)
  • 终端校时 (0x08)
  • 查询命令 (0x80)
  • 设置命令 (0x81)
  • 车载终端控制命令 (0x82)
  • 升级结果状态上报 (0xC1)
  • ECU升级结果 (0xC2)
  • 短信唤醒登出 (0xC3)
  • DTC数据上报 (0xC4)
  • T-BOX注册 (0xC5)
  • 唯一识别码 (0xC6)
  • ECU信息查询 (0xC7)
  • 唤醒方式 (0xC8)
  • 自定义报警 (0xC9)
  • 升级进度上报 (0xCA)
  • 通用报警 (0xCD)

构建和测试

# 构建项目
cargo build

# 运行测试
cargo test

# 运行示例(如果有)
cargo run

协议字段说明

本解码器支持解析以下主要数据字段:

  1. 整车数据

    • 车辆状态
    • 充电状态
    • 运行模式
    • 车速
    • 里程
    • 电压/电流
    • SOC (State of Charge)
  2. 驱动电机数据

    • 电机状态
    • 控制器温度
    • 转速
    • 转矩
    • 电压/电流
  3. 可充电储能装置数据

    • 单体电压
    • 温度信息
    • 总电压/电流
  4. 车辆位置数据

    • 经纬度
    • 定位状态
  5. 极值数据

    • 最高/最低电压
    • 最高/最低温度
  6. 报警数据

    • 故障代码
    • 报警等级

许可证

本项目采用 Apache 许可证 2.0。详见 LICENSE 文件。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

Commit count: 0

cargo fmt