去掉辅助餐盘识别变更记录

变更结论

已在 remove_tray_recognition 分支完成“程序设置 → 高级设置 → 去掉辅助餐盘识别”功能,并根据实机诊断完成串口生命周期修正。应用复用 YoukateHardwareManager 已持有的 /dev/ttyS5、115200连接发送14字节命令 3E5343414E30363030303035803C,不重复打开或关闭共享串口。

目标设备已确认 /dev/ttyS5 具备读写权限。代码构建和本地单元测试已通过;串口抓包、模块实际关闭效果、返回主页后的持续称重和断电保持情况仍需完成新版本实机验收。

需求与方案

项目实现
设置入口高级设置顶部增加“去掉辅助餐盘识别”
操作性质一次性硬件配置,不保存本地开关状态
串口/dev/ttyS5
波特率115200
命令3E 53 43 41 4E 30 36 30 30 30 30 35 80 3C
发送规则发送14个原始字节,不发送十六进制文本,不追加 CR/LF
安全控制确认弹框、执行中防重复、后台线程、失败提示、共享串口单一持有

项目文件变更

新增

修改

关键技术判断

未复用当前扫码调试弹窗,因为其串口、波特率选择控件没有接入实际打开逻辑。

当前 DeviceSDK 的 PC681ScaleManager 已确认默认映射为 /dev/ttyS5、115200。本次通过 YoukateHardwareManager 复用现有输出流,不直接创建第二个 SerialPort

实机崩溃缓冲区证明当前 SDK 的 SerialPort.close() 存在 JNI 字段不匹配,调用后会触发 NoSuchFieldErrorSIGABRT。因此串口按应用进程生命周期单一持有。

“命令发送成功”只表示输出流完成写入和刷新。需求未提供硬件确认回包,不能据此宣称模块已经应用配置。

验证结果

Debug 构建与本地单元测试

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) ./gradlew --no-daemon :app:assembleDebug :app:testDebugUnitTest

结果:BUILD SUCCESSFUL in 18s,28个任务中7个执行、21个为最新状态。

命令静态核对

待实机验收

  1. 确认串口参数为115200、8N1。
  2. 确认实际发送内容严格为14字节。
  3. 确认辅助餐盘识别关闭,主餐盘识别不受影响。
  4. 从设置页返回主页,确认称重监听恢复且只保留一个有效串口连接。
  5. 重启外部模块和整机,确认配置是否保持。
  6. 如协议存在确认回包,后续补充回包校验。

Git 状态