UWB Reader¶
简介¶
UWB Reader 是一个专为 UWB 交通/门禁应用场景设计的调试与数据读取工具。它模拟或连接 "进站 (Enter)" 和 "出站 (Exit)" 两个读卡节点,实时解析并展示 UWB 标签/卡片的交易数据、余额信息及加密状态。
核心作用¶
- 双通道监控:同时管理两个串口连接(进站端和出站端),独立接收数据。
- 业务数据解析:
- 解析交通行业代码(公交、地铁等)。
- 解析交易金额、余额、卡号、POS ID 等关键业务字段。
- 加密/解密验证:集成 ECB/DES 算法,用于验证数据包的安全性与正确性。
- 日志与调试:实时展示十六进制原始数据与解析后的业务含义,支持日志导出。
架构设计¶
模块划分¶
- UI 层 (
qt_main.py):- 采用左右分栏布局,分别对应进站和出站数据。
- 提供串口参数配置(波特率支持高达 3Mbps)。
- 使用自定义样式表 (
styles.qss风格) 美化界面。
- 服务层 (
uwb_service.py):- UWBService 类:核心控制器。
- 串口管理:使用
serial库维护两个独立的串口连接。 - 数据解析:实现
update_read_data_res等方法,将十六进制流转换为可读的业务对象。 - 状态回调:通过 Signal/Callback 机制将底层数据变化通知 UI 层。
- 算法层 (
Ecb_Des.py):- 封装加密算法,用于处理安全相关的通信协议。
数据流¶
- 连接:用户点击 "OPEN",
UWBService开启后台线程监听串口。 - 接收:后台线程持续读取串口 buffer。
- 解析:识别协议帧头/帧尾,提取 Payload。调用
calculate_DCS校验数据完整性。 - 展示:通过
ServiceBridge信号触发 UI 更新,在日志框中追加格式化的交易记录。
关键文件¶
qt_main.py: 界面实现。uwb_service.py: 业务逻辑、串口通信与协议解析。Ecb_Des.py: 加密算法支持。