Skip to content

将数据到达计数与连接状态改为 SharedData 全局指标 #10

Description

@coderabbitai

背景

当前 RadarApp::update_connection_status 会在每次 egui 刷新时无条件将状态设置为“已连接”并递增 data_count。这使 UI 的包计数、最后活动时间和 Rerun 帧序列反映的是 UI 刷新频率,而不是真实的串口/ZMQ 数据到达。

该问题在本次 SharedData 数据链路迁移中确认有效,但应通过全局共享计数器解决,不在 src/app/connection.rs 单独维护。

需要修改

  • SharedData 或与其绑定的共享状态中维护全局的数据到达版本号和/或最后更新时间戳。
  • 由实际写入数据的串口解析端与 ZMQ 订阅端,在成功更新 SharedData 后推进该指标。
  • RadarApp::update_connection_status 仅在指标发生变化时:
    • 标记为已连接;
    • 更新 UI 展示的包/数据计数;
    • 刷新“Last live”时间;
    • 使用数据版本设置 Rerun 帧序列并调用日志记录。
  • 指标在既有超时窗口内未更新时,将连接状态回退为未连接。
  • 避免将 egui 的约 100ms 重绘周期计入数据包数量或当作数据版本。

影响范围

  • src/shared_data.rs
  • src/serial/serial_parser.rs
  • src/zmq/zmq.rs
  • src/app/connection.rs
  • 相关状态/UI 展示及 Rerun 调用点

验收标准

  • 空闲或断流时,包计数不随 UI 重绘增长,连接状态会在超时后显示为未连接。
  • 每次实际成功写入共享数据时,全局版本号或更新时间会更新。
  • 有新数据时,UI 的包计数和最后活动时间更新,Rerun 帧序列使用数据版本而不是 UI 帧号。
  • 实现不引入 Arc<Mutex<...>> 嵌套持锁或死锁风险。

关联

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions