刷卡串口单读取线程修复记录

记录日期:2026-08-26

项目仓库:/Users/liang/AndroidStudioProjects/CusumptionMachine

实施分支:simplify_menu_pay

问题与风险

伟邦和优卡特刷卡器原实现由每个页面或弹框直接打开物理串口并创建阻塞读取线程。业务关闭时仅调用 interrupt()、关闭串口和清空回调,设备驱动不能保证阻塞中的 InputStream.read() 立即退出。下一次业务重新打开串口后,旧线程可能继续与新线程竞争同一张卡的数据,导致刷卡器有反应但当前页面没有收到卡号。

原实现还假定串口一次 read() 必定返回一张卡的完整数据帧,未处理半包、粘包和帧头前噪声。

修复方案

影响文件

自动验证

真机验收要求

交付边界