Files
geomative/GeomativeStudio/.qoder/repowiki/zh/content/用户界面指南/数据管理界面/实时数据监控.md
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

9.7 KiB

实时数据监控

**本文档引用的文件** - [DialListRealTimeMeasuData.cpp](file://cpp/Views/DialListRealTimeMeasuData.cpp) - [DialListRealTimeMeasuData.h](file://h/DialListRealTimeMeasuData.h) - [DialListRealTimeMeasuGR.cpp](file://cpp/Views/DialListRealTimeMeasuGR.cpp) - [DialListRealTimeMeasuGR.h](file://h/DialListRealTimeMeasuGR.h) - [DialRealTimeMeasureData.cpp](file://cpp/Views/DialRealTimeMeasureData.cpp) - [DialRealTimeMeasureData.h](file://h/DialRealTimeMeasureData.h) - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp) - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp) - [SComPort.cpp](file://cpp/Tools/SComPort.cpp) - [NetWorkOper.cpp](file://cpp/Tools/NetWorkOper.cpp)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

引言

本文档深入探讨Geomative Studio软件中实时数据监控功能的实现机制。重点分析DialListRealTimeMeasuData和DialListRealTimeMeasuGR对话框如何实现测量数据的动态刷新与图形化展示,阐述DialRealTimeMeasureData对话框与设备通信模块(SComPort、NetWorkOper)的数据交互流程,包括数据帧解析、状态更新和异常处理。同时,文档将描述appdatatdlistview和appdatatdgrlistview组件在高频数据更新场景下的性能优化策略,并为用户提供操作指南,为开发者提供技术扩展路径。

项目结构

实时数据监控功能主要分布在cpp/Views目录下的多个对话框实现文件中,这些文件与cpp/Tools目录下的通信模块紧密协作。核心的UI组件和数据处理逻辑被清晰地分离,形成了一个模块化的架构。

graph TB
subgraph "UI 层"
A[DialRealTimeMeasureData] --> B[DialListRealTimeMeasuData]
A --> C[DialListRealTimeMeasuGR]
end
subgraph "通信层"
D[NetWorkOper] --> E[SComPort]
end
subgraph "数据层"
F[appdatatdlistview]
G[appdatatdgrlistview]
end
A --> D
B --> F
C --> G

图表来源

章节来源

核心组件

实时数据监控系统由多个核心组件构成,它们协同工作以实现数据的采集、处理和展示。DialRealTimeMeasureData作为主控对话框,负责协调数据流和用户交互;DialListRealTimeMeasuData和DialListRealTimeMeasuGR分别负责测量数据和接地电阻数据的列表展示;SComPort和NetWorkOper则构成了底层的通信基础设施。

章节来源

架构概述

系统采用分层架构,将用户界面、业务逻辑和数据通信分离。主控对话框(DialRealTimeMeasureData)通过消息机制与子对话框(DialListRealTimeMeasuData/GR)进行通信,而通信模块(NetWorkOper)则通过异步线程处理网络和串口数据,确保UI的响应性。

graph TD
A[用户界面] --> |用户操作| B[主控对话框]
B --> |数据请求| C[通信模块]
C --> |串口/网络| D[测量设备]
D --> |实时数据| C
C --> |数据包| B
B --> |更新指令| E[数据展示组件]
E --> |刷新UI| A

图表来源

详细组件分析

DialListRealTimeMeasuData 对话框分析

该对话框负责实时测量数据的列表展示,支持动态数据刷新和多种更新模式。

动态数据刷新机制

DialListRealTimeMeasuData提供了三种数据更新方法,以适应不同的测量场景:

  • OnShowTdData: 用于初始化时的全量数据加载。
  • OnShowTdDataAppend: 用于在现有数据末尾追加新数据点。
  • OnShowTdDataUpdate: 用于单点测量或从当前位置开始测量时的增量更新。
classDiagram
class CDialListRealTimeMeasureData {
+SetSptType(int)
+SetTaskID(int)
+SetMeasuStatus(const bool*)
+ShowMeasuStatus(CString)
+OnShowTdData(vector<STTaskDetailBasicData>)
+OnShowTdDataAppend(vector<STTaskDetailBasicData>)
+OnShowTdDataUpdate(vector<STTaskDetailBasicData>)
-m_listData CListCtrl
-m_iSptType int
-m_strMeasuStatus CString
-m_pMeasuStatus const bool*
}

图表来源

章节来源

DialRealTimeMeasureData 与通信模块交互分析

该组件是实时数据监控的核心,负责与设备通信模块进行数据交互。

数据交互序列图

sequenceDiagram
participant UI as DialRealTimeMeasureData
participant Net as NetWorkOper
participant Dev as 测量设备
participant SCom as SComPort
UI->>Net : OnMeasureAll()
Net->>SCom : SendCtrlMsgDirect()
SCom->>Dev : 发送测量命令
Dev-->>SCom : 返回实时数据
SCom-->>Net : ReceiveDataDirectly()
Net->>UI : WM_NET_RECV_REAL_TIME_DATA
UI->>UI : 更新UI界面

图表来源

章节来源

appdatatdlistview 高频数据更新优化分析

该组件在处理高频数据更新时采用了多种性能优化策略。

性能优化流程图

flowchart TD
Start([开始数据更新]) --> CheckThread["检查是否在UI线程"]
CheckThread --> |是| UseTimer["使用定时器延迟更新"]
CheckThread --> |否| PostMessage["使用PostMessage跨线程通信"]
UseTimer --> UpdateUI["批量更新UI"]
PostMessage --> UpdateUI
UpdateUI --> End([结束])

图表来源

章节来源

依赖关系分析

系统各组件之间存在明确的依赖关系,形成了一个稳定的调用链。

graph LR
A[DialRealTimeMeasureData] --> B[DialListRealTimeMeasuData]
A --> C[DialListRealTimeMeasuGR]
A --> D[NetWorkOper]
D --> E[SComPort]
B --> F[appdatatdlistview]
C --> G[appdatatdgrlistview]

图表来源

章节来源

性能考虑

在高频数据更新场景下,系统采用了多种性能优化策略来确保UI的流畅性。

性能优化策略表

优化策略 实现方式 适用场景
双缓冲绘图 使用内存中的缓冲区进行绘制,完成后一次性刷新到屏幕 避免UI闪烁
增量更新 只更新发生变化的数据项,而非全量刷新 减少UI重绘开销
UI线程分离 将数据接收和处理放在独立线程,通过消息机制更新UI 保持UI响应性
批量操作 将多个小的更新操作合并为一次大的更新 减少系统调用次数

章节来源

故障排除指南

本节提供常见问题的解决方案和调试建议。

常见问题及解决方案

问题现象 可能原因 解决方案
数据无法刷新 通信连接中断 检查设备连接状态,重新建立连接
UI卡顿 高频数据更新导致 检查是否启用了性能优化策略
数据显示错误 数据帧解析异常 检查通信协议和数据格式
按钮无响应 状态机异常 检查按钮状态逻辑和状态转换

章节来源

结论

Geomative Studio的实时数据监控功能通过精心设计的分层架构和高效的通信机制,实现了稳定可靠的数据采集和展示。系统通过DialListRealTimeMeasuData和DialListRealTimeMeasuGR对话框提供了直观的数据可视化界面,利用DialRealTimeMeasureData与SComPort、NetWorkOper等通信模块的紧密协作确保了数据的实时性。在性能方面,appdatatdlistview和appdatatdgrlistview组件通过双缓冲、增量更新和UI线程分离等策略,有效应对了高频数据更新的挑战。该系统为用户提供了完整的实时监控解决方案,同时也为开发者提供了清晰的扩展接口。