43 lines
2.7 KiB
Markdown
43 lines
2.7 KiB
Markdown
|
|
# [OPEN] serial-gateway-download
|
||
|
|
|
||
|
|
## 问题描述
|
||
|
|
- 连接 2.4G 网关后,终端设备没有接收到数据。
|
||
|
|
- “下载本场”功能没有作用。
|
||
|
|
- 需要参照参考项目 `Jump_window/Form1` 的逻辑排查并修复。
|
||
|
|
|
||
|
|
## 当前症状
|
||
|
|
- 后端可以打开串口。
|
||
|
|
- 终端设备未见有效接收结果。
|
||
|
|
- 需要确认串口收发、协议解析、下载本场发送顺序是否与旧版一致。
|
||
|
|
|
||
|
|
## 假设
|
||
|
|
1. 打开的串口不是网关真实串口。
|
||
|
|
2. 下载本场的发送帧内容或顺序与旧版 Form1 不一致。
|
||
|
|
3. 接收解析规则与设备协议不匹配,导致有效帧被丢弃。
|
||
|
|
4. 场次/设备地址映射与旧版不一致,数据下载到了错误地址。
|
||
|
|
5. 前端触发了接口,但后端未实际执行关键串口发送链路。
|
||
|
|
|
||
|
|
## 计划
|
||
|
|
1. 对照参考项目 Form1 收发逻辑。
|
||
|
|
2. 给串口打开、串口发送、串口接收解析、下载本场流程加运行时埋点。
|
||
|
|
3. 复现下载本场与接收数据流程。
|
||
|
|
4. 基于日志证据确定根因后再做最小修复。
|
||
|
|
|
||
|
|
## 证据
|
||
|
|
- 用户确认秩序册中的 `001.002.003.033.074` 这类字段是“终端设备通信地址”。
|
||
|
|
- 用户反馈模板 `秩序册1场2人_模板 .xlsx` 中,`003.002.003.005.052` 属于赵其三,但计数落到了李胜席。
|
||
|
|
- 实际读取模板表后,原始顺序是:李胜席 -> `001.002.003.023.200`,赵其三 -> `003.002.003.005.052`,秩序册解析顺序本身正确。
|
||
|
|
- 旧版 `Form1` 接收逻辑直接使用 `MyJumper[PerChangCi, ReceivedByte[2]]`,说明设备回传索引是当前场次内的 0 基槽位。
|
||
|
|
- 当前新后端默认把 participant `DeviceId` 设为 `slotIndex + 1`,前端也传了 `1/2/3...`,因此第二个手柄回传索引 `1` 会被映射到第一个人。
|
||
|
|
- 旧版 `Form1.button2_Click` 的下载顺序为:`06 06` -> `FF 13 04 00 03` -> `0D 0D` -> 姓名 -> RFID -> `30` -> `0A 0A`。
|
||
|
|
- 修复前日志缺少 `55FF130400030000000000AA`,且没有帧间等待与发送前清缓存。
|
||
|
|
- 修复后日志已出现 `55FF130400030000000000AA`,且发送时间间隔符合旧版 `100ms/50ms`。
|
||
|
|
- 当前运行日志仍显示打开端口为 `COM1`,且暂无接收日志,说明“错误串口/网关未响应”仍是剩余风险。
|
||
|
|
|
||
|
|
## 已实施修复
|
||
|
|
1. 下载本场发送顺序改为对齐 `Form1.button2_Click`。
|
||
|
|
2. 每帧发送前执行清接收缓存,发送后按旧版加入延时。
|
||
|
|
3. 前端不再默认自动选择第一个串口,避免误开 `COM1`。
|
||
|
|
4. 前端秩序册解析新增“通信地址/手柄地址/设备地址/终端地址”字段识别,并将该字段传入后端下载地址帧。
|
||
|
|
5. 后端 participant 默认设备号改为当前场次 0 基槽位,前端移除错误的 1 基 `deviceId` 覆盖,修正计数错位问题。
|