新增 SDK 核心类: - ScaleProtocolConstants:协议常量(命令字节、帧偏移) - ScaleFrameParser:分片拼装、帧解析、BCD重量解析(修复旧代码 hex 误用问题) - ScaleFrame / ScaleWeight / HeartbeatData / StatusData:数据模型 - ScaleManager:单例入口,支持链式回调注册、自动应答、指令构建 - ScaleFrameParserTest:基于实际抓包数据的单元测试 业务层替换: - HomeActivity:移除 SerialProtocolHandler/SerialFrameParser,改用 ScaleManager 回调 - BaseActivity:sendCmd() 保持调用 SerialPortManager,与 ScaleManager.sendAction 独立 - ShelfActivity:秤置零、获取状态指令改用 ScaleManager 构建方法 Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
4.1 KiB
协议头 :4 字节 命令 :1 字节 标志 :1 字节 数据体 :不同命令不固定,详细见下方 协议尾 :2字节
协议头 :0xD6 0xDA 0xDE 0xDB 命令: ◼ 0x00:终端激活(终端发起) ◼ 0x01:心跳(终端发起) ◼ 0x81:心跳(终端发起,当终端发送此命令时需要服务端存储串口屏显示信息) ◼ 0x02:开锁(服务端发起) ◼ 0x03:获取状态(服务端发起) ◼ 0x04:秤置零(服务端发起) ◼ 0x06:秤标定(服务端发起) ◼ 0x05:卡号上发(终端发起) ◼ 0x07:价签设置(服务端发起) ◼ 0x08:串口屏(服务端发起) ◼ 0x09:语音播报(服务端发起) ◼ 0x0A:价签(第二块串口屏/透传)设置(服务端发起) ◼ 0x0B:操作记录上传(终端发起) ◼ 0x0C:对时(终端发起) ◼ 0x0E:终端位置上报(终端发起) ◼ 0x0F:温控器控制(服务端发起) ◼ 0x10:温控信息上报(终端发起) ◼ 0x11:临时参数设置(服务端发起)
固定数据体 :(终端ID :15 字节,固件版本 :5字节,命令次数 :1字节)
0x01心跳终端发起数据体内容格式: 秤数量 :1 字节 N个秤重量数据 :N x 4字节 物联卡号 :20 字节 锁1门状态 :1 字节 锁1锁状态 :1 字节 锁2门状态 :1 字节 锁2锁状态 :1 字节 温度 :1 字节 固定数据体 :(终端ID :15 字节,固件版本 :5字节,命令次数 :1字节)
0x03获取状态服务端响应数据体内容格式: 锁1锁状态 :1 字节 锁1门状态 :1 字节 锁2锁状态 :1 字节 锁2门状态 :1 字节 秤数量 :1 字节 N个秤重量数据 :N x 4字节 温度 :1 字节 固定数据体 :(终端ID :15 字节,固件版本 :5字节,命令次数 :1字节)
示例数据见下方----------------------------
旧设备10台秤心跳数据: D6DADEDB01010C0000000008000000020000800100008000000000010000800500008001000080030000800200008099180080721800800000000000000000000000000000000000000000010101015037414645333633333334333731373056322E313007FFFF
D6DADEDB01010C0900000027170000122500007511000001000000090000001100000012000000430000000800008000150080591500800000000000000000000000000000000000000000010100005031323136334238423134303233303456322E313112FFFF
新设备15台秤心跳数据: D6DADEDB0101189322000000000000053300001534000079230000611100000000000007000080030000000300000004000080010000000100008003000000180600004214008083130080741200800115008066130080501400800411008033120080631600800000000000000000000000000000000000000000010101015031463137334238423134303233303456322E313130FFFF
D6DADEDB0101181422000037110000823100009233000054000080100000000100000030240000050000000300008002000080050000802006000007000000441100004014008081130080721200800315008064130080521400809610008033120080631600800000000000000000000000000000000000000000010101015031463137334238423134303233303456322E313147FFFF
D6DADEDB0101180635000075190000842800000100008014000080060000800100008004000080050000801500008007000000080000800700008003000000050000008118008054180080231800801018008059170080221800809418008075320080761900800000000000000000000000000000000000000000010101015033453137334238423134303233303456322E313139FFFF
旧设备10台秤获取状态数据: D6DADEDB0302010100000C1100000027170000122500007711000001000000110000001300000012000000430000001000008000150080441500805031323136334238423134303233303456322E313113FFFF
新设备15台秤获取状态数据: D6DADEDB030201010101180635000077190000842800000100008014000080040000800100008004000080050000801500008007000000080000800900008005000000030000008118008054180080231800801018008059170080221800809418008079320080761900805033453137334238423134303233303456322E31313CFFFF
D6DADEDB030201010101181422000037110000783100009033000054000080100000000100000028240000070000000100008006000080030000801806000009000000461100004014008081130080721200800115008064130080501400809810008033120080651600805031463137334238423134303233303456322E31314AFFFF