# YKCProtocol **Repository Path**: debuggerSun/ykcprotocol ## Basic Information - **Project Name**: YKCProtocol - **Description**: 云快充1.5 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2024-12-06 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云充电桩通信协议服务 基于 Netty 的物联网充电桩通信协议服务实现。 ## 项目简介 该项目实现了与充电桩设备的 TCP 通信协议,支持设备注册、心跳检测、实时数据读取、充电控制、费用管理等功能。采用 Netty 框架构建高性能的异步通信服务。 ## 技术栈 - Java 8+ - Netty 4.x - Spring Boot 2.x - Lombok ## 核心组件 ### 1. 通信编解码器 - `ChargingYunDecoder` - 充电协议数据解码器,支持自定义二进制协议解析 - `ChargingYunEncoder` - 充电协议数据编码器 - `MessageDecoder` - 基于长度字段的帧解码器 ### 2. 服务器核心 - `NettyServer` - Netty 服务器启动类,管理 boss 和 worker 事件循环组 - `NettyServerChannelInitializer` - 通道初始化配置 - `NettyServerHandler` - 通道处理器,处理客户端连接和消息 ### 3. 数据模型 | 类名 | 说明 | |------|------| | `NettyMessage` | 协议消息封装类 | | `ChargingOrder` | 充电订单信息 | | `Operator` | 运营商信息 | | `UserOrderDto` | 用户订单数据传输对象 | ### 4. 协议常量 - `FrameTypeConstant` - 帧类型定义(登录、心跳、充电控制、费用查询等) - `DataMapKeyConstant` - 数据Map键值常量 - `NettyConstant` - Netty通用常量 ### 5. 枚举定义 - `FrameTypeEnum` - 帧类型枚举 - `PileStatusEnum` - 充电桩状态枚举 - `StartChargingErrorEnum` - 充电启动错误枚举 - `DeviceErrorEnum` - 设备错误枚举 ## 支持的协议功能 - 设备登录与认证 - 心跳保活 - 实时数据读取 - 充电启动/停止 - 费用模型下发 - 离线数据同步 - OTA远程升级 - 定时任务配置 - 设备重启远程控制 ## 配置说明 在 `application.yml` 中配置服务器端口: ```yaml netty: port: 9000 ``` FTP升级配置: ```yaml ftp-server: downloadTimeout: 30000 ``` ## 快速开始 1. 克隆项目 2. 配置 `application-dev.yml` 中的数据库连接 3. 执行 mvn package 构建 4. 运行 Application 启动类 ```bash mvn clean package java -jar target/*.jar ``` ## 目录结构 ``` src/main/java/com/zhitan/netty/ ├── Application.java # Spring Boot 启动类 ├── ChannelRepository.java # 通道仓储管理 ├── constant/ # 常量定义 ├── decoder/ # 编解码器 ├── enums/ # 枚举定义 ├── server/ # Netty服务器 ├── service/ # 业务处理服务 └── util/ # 工具类 ``` ## 注意事项 - 设备编号长度默认为10位 - 交易单号长度默认为20位 - 采用 CRC16Modbus 校验 - 支持分包传输,最大包索引可配置