读卡器 100 轮(500ms 轮间间隔)稳定性测试记录

项目 内容
测试日期 2026-08-23
测试时间 10:30:37–10:31:13 CST
目标轮次 最多 100 轮
轮间间隔 每轮关闭完成后等待 500ms,再连接下一轮;第 100 轮后不等待
停止规则 任一轮任一阶段首次失败,立即停止,不重试
Android 设备 F700_HW(RK3568)
读卡器 New-CAP 0005 / HID RF Picc Reader
USB 标识 VID 0x0610 / PID 0x2010
读卡卡片 UID 92071FC9,CPU 卡
测试入口 CardReaderStabilityInstrumentedTest
启动参数 interCycleDelayMs=500
测试结果 第 1–29 轮通过,第 30 轮失败并停止,未执行第 31–100 轮

1. 测试口径

每轮严格执行:

  1. 连接并初始化读卡器;
  2. 寻卡并取得 UID;
  3. 完整读卡,读取基础数据、主钱包和补助钱包;
  4. 校验寻卡 UID、读卡 UID 以及业务字段跨轮一致;
  5. 关闭并释放读卡器;
  6. 本轮成功后等待 500ms,再开始下一轮。

间隔位于“上一轮关闭成功”与“下一轮连接开始”之间。单轮 durationMs 不包含其后的 500ms;测试总耗时包含已实际发生的轮间等待。失败轮不再等待,也不执行重试。

2. 执行结果

指标 结果
计划上限 100 轮
实际尝试 30 轮
完整通过 29 轮
失败 1 轮
未执行 70 轮
通过轮次占计划 29%
首次失败轮次 第 30 轮
已执行 500ms 间隔 29 次,共 14.5 秒
失败后是否继续
Android 仪器测试总时间 36.607 秒
START 到 FAIL 日志跨度 36.577 秒

验收结论:未达到 100 轮连续稳定通过。 本次 500ms 轮间间隔没有消除此前观察到的偶发 APDU 短响应。

3. 成功轮次数据一致性

第 1–29 轮读取结果全部一致:

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

未观察到循环读取导致卡片余额或消费计数变化。

4. 成功轮次性能统计

统计范围为第 1–29 轮的完整周期,均不含其后的 500ms 等待:

指标 耗时
最小值 706 ms
最大值 808 ms
平均值 738.55 ms
中位数 710 ms
P95 808 ms
前 10 轮平均 768.5 ms
后 10 轮平均 735.0 ms

5. 首次失败记录

项目 内容
轮次 第 30 轮
失败阶段 readCard → readBaseData
失败命令 00 B0 96 80 35
命令用途 基础信息扩展记录第 2 段,当前业务字段不解析
原始逻辑响应 03 01(2 字节)
该轮耗时 602 ms
错误分类 PROTOCOL_ERROR
停止行为 捕获错误、关闭读卡器、终止测试
后续轮次 第 31–100 轮未执行

精确调用链:

readCard()
  └─ readBaseData()
       ├─ SELECT EC01                 已完成
       ├─ READ 00 B0 95 09 0B        已完成
       ├─ READ 00 B0 82 00 0E        已完成
       ├─ READ 00 B0 96 00 80        已完成
       └─ READ 00 B0 96 80 35        返回 03 01,失败并停止

正常 APDU 逻辑响应至少需要 SW1 + SW2 + CRC-A(2 bytes),最短为 4 字节。03 01 只有 2 字节,不能按当前 APDU 响应格式完成 CRC-A 和状态字校验,因此实现按协议错误终止;这两个字节的厂商正式语义目前未知。

6. 与前两次测试的对照

测试 轮间间隔 结果 首次失败位置
首次正式测试 0ms 32 轮通过,第 33 轮失败 补助钱包阶段,选择 EC01 时短响应;首次日志未记录原始字节
诊断复现 0ms 100/100 通过 未复现
本次正式测试 500ms 29 轮通过,第 30 轮失败 基础数据阶段,00B0968035 返回 0301

这组证据说明:

7. 逐轮记录

轮次 结果 单轮耗时(ms) UID 余额(分) 消费计数 说明
1 通过 800 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
2 通过 796 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
3 通过 808 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
4 通过 808 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
5 通过 808 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
6 通过 775 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
7 通过 730 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
8 通过 741 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
9 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
10 通过 709 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
11 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
12 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
13 通过 708 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
14 通过 708 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
15 通过 709 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
16 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
17 通过 709 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
18 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
19 通过 709 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
20 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
21 通过 710 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
22 通过 714 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
23 通过 706 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
24 通过 708 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
25 通过 721 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
26 通过 765 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
27 通过 765 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
28 通过 764 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
29 通过 787 92071FC9 604 43 连接、寻卡、完整读卡、关闭均成功
30 失败并停止 602 - - - readCard / PROTOCOL_ERROR / APDU response is too short for command 00B0968035: 0301 (2 bytes)

8. 原始数据

9. 正式结论

本次正式测试失败,不能声明“100 轮通过”。

有效结果为:在每轮关闭后等待 500ms 的条件下,第 1–29 轮完整通过;第 30 轮读取基础扩展记录时收到 0301 两字节短响应,测试按首次失败停止规则终止。该样本首次明确记录了失败命令和原始响应,证明增加 500ms 轮间间隔不能彻底规避问题。