跳转至

UWB Reader

简介

UWB Reader 是一个专为 UWB 交通/门禁应用场景设计的调试与数据读取工具。它模拟或连接 "进站 (Enter)" 和 "出站 (Exit)" 两个读卡节点,实时解析并展示 UWB 标签/卡片的交易数据、余额信息及加密状态。

核心作用

  1. 双通道监控:同时管理两个串口连接(进站端和出站端),独立接收数据。
  2. 业务数据解析
    • 解析交通行业代码(公交、地铁等)。
    • 解析交易金额、余额、卡号、POS ID 等关键业务字段。
  3. 加密/解密验证:集成 ECB/DES 算法,用于验证数据包的安全性与正确性。
  4. 日志与调试:实时展示十六进制原始数据与解析后的业务含义,支持日志导出。

架构设计

模块划分

  • UI 层 (qt_main.py):
    • 采用左右分栏布局,分别对应进站和出站数据。
    • 提供串口参数配置(波特率支持高达 3Mbps)。
    • 使用自定义样式表 (styles.qss 风格) 美化界面。
  • 服务层 (uwb_service.py):
    • UWBService 类:核心控制器。
    • 串口管理:使用 serial 库维护两个独立的串口连接。
    • 数据解析:实现 update_read_data_res 等方法,将十六进制流转换为可读的业务对象。
    • 状态回调:通过 Signal/Callback 机制将底层数据变化通知 UI 层。
  • 算法层 (Ecb_Des.py):
    • 封装加密算法,用于处理安全相关的通信协议。

数据流

  1. 连接:用户点击 "OPEN",UWBService 开启后台线程监听串口。
  2. 接收:后台线程持续读取串口 buffer。
  3. 解析:识别协议帧头/帧尾,提取 Payload。调用 calculate_DCS 校验数据完整性。
  4. 展示:通过 ServiceBridge 信号触发 UI 更新,在日志框中追加格式化的交易记录。

关键文件

  • qt_main.py: 界面实现。
  • uwb_service.py: 业务逻辑、串口通信与协议解析。
  • Ecb_Des.py: 加密算法支持。