3.4 KiB
3.4 KiB
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。
常用命令
# 安装依赖
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.instanceCh34Platform- 抽象平台接口,定义所有方法签名,继承自PlatformInterfaceMethodChannelCh34- 平台接口的具体实现,通过 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代替 - 所有方法需添加方法级注释
- 遵循高内聚低耦合设计原则