读卡器单次连接 100 轮寻卡读卡稳定性测试记录

项目 内容
测试日期 2026-08-23
测试时间 10:51:08–10:51:41 CST
目标轮次 最多 100 轮
连接方式 测试开始时连接一次,循环结束或首次失败后关闭一次
循环操作 寻卡 → 完整读卡
轮间间隔 每轮成功后等待 200ms
停止规则 任一阶段首次失败立即停止,不重试
Android 设备 F700_HW(RK3568)
读卡器 New-CAP 0005 / HID RF Picc Reader,VID 0610 / PID 2010
卡片 UID 92071FC9
启动模式 mode=singleConnectioninterCycleDelayMs=200
测试结果 第 1–36 轮通过,第 37 轮读卡阶段返回 CARD_REMOVED 并停止,未执行第 38–100 轮

1. 测试目标

验证此前偶发失败是否必须由“每轮重新打开和关闭 USB 读卡器”触发。本次把 USB 连接固定为一次:

连接读卡器(一次)
  → [寻卡 → 完整读卡 → 等待 200ms] × 最多 100
  → 关闭读卡器(一次)

测试过程中仍校验寻卡 UID 与读卡 UID 一致,并比较卡号、余额、主钱包消费计数、补助余额和补助计数。

2. 执行结果

指标 结果
计划上限 100 轮
实际尝试 37 轮
完整通过 36 轮
失败 1 轮
未执行 63 轮
USB 连接次数 1 次
USB 关闭次数 1 次(失败后的 finally 关闭)
已执行 200ms 间隔 36 次,共 7.2 秒
Android 仪器测试总时间 33.330 秒
START 到 FAIL 日志跨度 33.288 秒
首次失败轮次 第 37 轮

未达到 100 轮连续稳定通过。

3. 成功轮次数据与性能

第 1–36 轮数据完全一致:

字段 稳定值
UID 92071FC9
卡号 1705827
余额 604 分
主钱包消费计数 43
补助余额/计数 0 / 0

成功轮次耗时不含其后的 200ms:

指标 耗时
最小值 654ms
最大值 792ms
平均值 715.33ms
中位数 693ms
P95 792ms
前 10 轮平均 693.6ms
后 10 轮平均 693.0ms

4. 第 37 轮失败定位

项目 内容
失败阶段 readCard → readBaseData → activateExpected
上层错误 CARD_REMOVED
错误信息 The card was removed before the read completed
该轮耗时 251ms
失败前最近成功 第 36 轮,耗时 693ms
USB 状态 测试后 F700-HW 在线,读卡器 0610:2010 仍可枚举

调用顺序说明:

第 37 轮
  ├─ 外层 findCard()                         成功
  └─ readCard()
       ├─ readCard 内部 findCard()            已越过,未抛错
       └─ readBaseData()
            └─ activateExpected()             激活响应判定无卡,抛 CARD_REMOVED

因为测试日志的阶段已经从 findCard 切换为 readCard,且堆栈位于 readBaseData.activateExpected,所以不是该轮最初寻卡失败,而是同一轮稍后的射频重新激活没有识别到卡片。

5. 对“频繁打开和关闭”假设的判断

本次原始日志只出现一次 CONNECTED、一次最终 DISCONNECTED,Android 的 UsbDeviceConnectionJNI: close 也只出现一次。尽管没有逐轮重新连接,第 37 轮仍出现射频无卡判断。

因此当前可以得出:

6. 逐轮记录

轮次 结果 单轮耗时(ms) UID 余额(分) 消费计数 说明
1 通过 705 92071FC9 604 43 寻卡、完整读卡成功
2 通过 692 92071FC9 604 43 寻卡、完整读卡成功
3 通过 692 92071FC9 604 43 寻卡、完整读卡成功
4 通过 692 92071FC9 604 43 寻卡、完整读卡成功
5 通过 692 92071FC9 604 43 寻卡、完整读卡成功
6 通过 692 92071FC9 604 43 寻卡、完整读卡成功
7 通过 693 92071FC9 604 43 寻卡、完整读卡成功
8 通过 692 92071FC9 604 43 寻卡、完整读卡成功
9 通过 693 92071FC9 604 43 寻卡、完整读卡成功
10 通过 693 92071FC9 604 43 寻卡、完整读卡成功
11 通过 693 92071FC9 604 43 寻卡、完整读卡成功
12 通过 726 92071FC9 604 43 寻卡、完整读卡成功
13 通过 748 92071FC9 604 43 寻卡、完整读卡成功
14 通过 748 92071FC9 604 43 寻卡、完整读卡成功
15 通过 748 92071FC9 604 43 寻卡、完整读卡成功
16 通过 748 92071FC9 604 43 寻卡、完整读卡成功
17 通过 760 92071FC9 604 43 寻卡、完整读卡成功
18 通过 792 92071FC9 604 43 寻卡、完整读卡成功
19 通过 792 92071FC9 604 43 寻卡、完整读卡成功
20 通过 792 92071FC9 604 43 寻卡、完整读卡成功
21 通过 792 92071FC9 604 43 寻卡、完整读卡成功
22 通过 792 92071FC9 604 43 寻卡、完整读卡成功
23 通过 726 92071FC9 604 43 寻卡、完整读卡成功
24 通过 682 92071FC9 604 43 寻卡、完整读卡成功
25 通过 654 92071FC9 604 43 寻卡、完整读卡成功
26 通过 693 92071FC9 604 43 寻卡、完整读卡成功
27 通过 693 92071FC9 604 43 寻卡、完整读卡成功
28 通过 693 92071FC9 604 43 寻卡、完整读卡成功
29 通过 693 92071FC9 604 43 寻卡、完整读卡成功
30 通过 693 92071FC9 604 43 寻卡、完整读卡成功
31 通过 693 92071FC9 604 43 寻卡、完整读卡成功
32 通过 693 92071FC9 604 43 寻卡、完整读卡成功
33 通过 693 92071FC9 604 43 寻卡、完整读卡成功
34 通过 693 92071FC9 604 43 寻卡、完整读卡成功
35 通过 693 92071FC9 604 43 寻卡、完整读卡成功
36 通过 693 92071FC9 604 43 寻卡、完整读卡成功
37 失败并停止 251 - - - readCard / CARD_REMOVED / The card was removed before the read completed

7. 原始数据

8. 正式结论

本次单次连接测试未通过:第 1–36 轮成功,第 37 轮在完整读卡的基础数据阶段重新激活卡片时返回 CARD_REMOVED,测试关闭读卡器并停止。该结果证明取消逐轮 USB 打开/关闭仍会出现射频失联,因而“频繁打开和关闭”不能作为完整根因。