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() } * ``` */