106 lines
3.4 KiB
Markdown
106 lines
3.4 KiB
Markdown
# CLAUDE.md
|
||
|
||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||
|
||
## 项目概述
|
||
|
||
这是一个 Flutter 插件项目,为 WCH CH34X 系列 USB 转串口芯片提供 Flutter 接口支持。支持的芯片型号:CH340/CH341/CH342/CH343/CH344/CH347/CH9101/CH9102/CH9103/CH9104/CH9143。
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 安装依赖
|
||
flutter pub get
|
||
|
||
# 运行所有测试
|
||
flutter test
|
||
|
||
# 运行单个测试文件
|
||
flutter test test/ch34_test.dart
|
||
flutter test test/ch34_method_channel_test.dart
|
||
|
||
# 代码分析(lint)
|
||
flutter analyze
|
||
|
||
# 格式化代码
|
||
dart format .
|
||
|
||
# 构建示例 APK
|
||
cd example && flutter build apk
|
||
|
||
# 运行示例应用
|
||
cd example && flutter run
|
||
```
|
||
|
||
## 代码架构
|
||
|
||
### 目录结构
|
||
|
||
```
|
||
lib/
|
||
├── ch34.dart # 主入口,导出所有公共 API
|
||
├── ch34_method_channel.dart # 顶层导出(向后兼容)
|
||
├── ch34_platform_interface.dart # 顶层导出(向后兼容)
|
||
└── src/
|
||
├── ch34_manager.dart # 公共 API 管理器(静态方法门面)
|
||
├── ch34_platform_interface.dart # 抽象平台接口定义
|
||
├── ch34_method_channel.dart # MethodChannel 实现 + 异常类
|
||
└── types/
|
||
└── ch34_types.dart # 所有类型和枚举定义
|
||
```
|
||
|
||
### 核心类
|
||
|
||
- **`Ch34Manager`** - 公共 API 入口,所有方法为静态,委托给 `Ch34Platform.instance`
|
||
- **`Ch34Platform`** - 抽象平台接口,定义所有方法签名,继承自 `PlatformInterface`
|
||
- **`MethodChannelCh34`** - 平台接口的具体实现,通过 MethodChannel 和 EventChannel 与 Android 原生端通信
|
||
- **`Ch34Exception`** - 插件自定义异常类
|
||
|
||
### 通信通道
|
||
|
||
| 通道类型 | 名称 | 用途 |
|
||
|---------|------|------|
|
||
| MethodChannel | `ch34` | 双向方法调用 |
|
||
| EventChannel | `ch34/data` | 串口数据推送 |
|
||
| EventChannel | `ch34/modem` | Modem 状态变化 |
|
||
| EventChannel | `ch34/usb_state` | USB 插拔状态 |
|
||
|
||
### Android 原生端
|
||
|
||
```
|
||
android/src/main/java/com/example/ch34/
|
||
├── Ch34Plugin.java # Flutter 插件主类,注册 MethodChannel/EventChannel
|
||
├── Ch34DataStreamHandler.java # 数据 EventChannel 的 StreamHandler
|
||
├── Ch34ModemStreamHandler.java # Modem EventChannel 的 StreamHandler
|
||
├── Ch34UsbStateStreamHandler.java # USB 状态 EventChannel 的 StreamHandler
|
||
└── Ch34TypeConverter.java # Dart/Java 类型转换工具
|
||
```
|
||
|
||
### 数据流
|
||
|
||
```
|
||
Flutter App → Ch34Manager → Ch34Platform.instance → MethodChannelCh34 → MethodChannel → Android (Ch34Plugin)
|
||
```
|
||
|
||
### 类型系统 (`ch34_types.dart`)
|
||
|
||
- **枚举**: `DataBits`, `StopBits`, `Parity`, `GpioDirection`, `GpioValue`, `SerialErrorType`
|
||
- **数据类**: `GpioStatus`, `SerialParameter`, `ChipMasterFrequency`, `ModemStatus`, `UsbDeviceInfo`
|
||
- 所有数据类提供 `fromMap`/`toMap` 方法用于平台间序列化
|
||
|
||
## 测试策略
|
||
|
||
- `test/ch34_test.dart` - 使用 Mock 平台实例测试 `Ch34Manager` 接口
|
||
- `test/ch34_method_channel_test.dart` - 使用 BinaryMessenger 模拟测试 MethodChannel 调用
|
||
- 测试遵循 flutter plugin 的标准测试模式
|
||
|
||
## 示例应用
|
||
|
||
`example/` 目录包含完整的示例应用,展示设备扫描、打开、数据发送/接收的基本流程。
|
||
|
||
## 用户约束
|
||
|
||
- Flutter 项目中禁止使用 `Get.snackbar`,使用 `easyloading` 代替
|
||
- 所有方法需添加方法级注释
|
||
- 遵循高内聚低耦合设计原则
|