From 967d06ce1e46f8a417d441e535cd118be2781eb3 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Thu, 21 May 2026 15:47:56 +0800 Subject: [PATCH] =?UTF-8?q?docs(serial):=20=E6=9B=B4=E6=96=B0=20ScaleManag?= =?UTF-8?q?er=20=E7=B1=BB=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 同步典型用法为当前链式 start() 写法 - 职责说明补充 Channel 发送队列描述 - release() 说明补充"清空队列" Co-Authored-By: Claude Sonnet 4.6 --- .../shelves/serial/ScaleManager.kt | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/serial/ScaleManager.kt b/app/src/main/java/com/shuwei/intelligent/shelves/serial/ScaleManager.kt index ec8cb74..e6aa076 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/serial/ScaleManager.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/serial/ScaleManager.kt @@ -29,37 +29,33 @@ import java.util.Locale import java.util.TimeZone /** - * 称重控制板协议管理器(SDK 入口) + * 称重控制板管理器(单例入口) * * 职责: - * - 管理串口连接(open/startReceive/release) + * - 管理串口连接生命周期(start/release) + * - 通过内部发送队列(Channel)保证指令按顺序写入串口 * - 接收串口原始分片数据,自动拼装帧并分发到对应回调 * - 内置各命令的自动应答逻辑(心跳/对时/卡号等) - * - 提供链式回调注册、常用指令构建、资源释放 + * - 提供链式回调注册 和 常用指令构建 * * 典型用法: * ```kotlin - * // 初始化并注册回调 - * ScaleManager - * .init(deviceId = App.deviceId, activateMap = ACTIVE_MAP) - * .onHeartbeat { frame, data -> - * data.weights.forEach { Log.d("Scale", "秤${it.index}: ${it.grams}g") } - * } - * .onLog { msg -> Log.d("Scale", msg) } - * - * // 打开串口并启动接收 * lifecycleScope.launch { - * if (ScaleManager.open()) { - * ScaleManager.startReceive { data -> - * // 主线程前置钩子,处理看门狗等副作用 + * ScaleManager + * .init(activateCode = ACTIVE_MAP[deviceId] ?: "") + * .onHeartbeat { _, data -> + * data.weights.forEach { Log.d("Scale", "秤${it.index}: ${it.grams}g") } + * } + * .onLog { msg -> Log.d("Scale", msg) } + * .start { data -> + * // 主线程前置钩子,处理看门狗计时等副作用 * } - * } * } * * // 主动发送指令 * ScaleManager.sendCmd(ScaleManager.buildGetStatusCmd()) * - * // 页面销毁时释放 + * // 页面销毁时释放(关闭串口 + 清空队列 + 清理回调) * runBlocking { ScaleManager.release() } * ``` */