a
This commit is contained in:
@@ -0,0 +1,291 @@
|
||||
# 设备管理界面
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp)
|
||||
- [devmngframe.h](file://h/devmngframe.h)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp)
|
||||
- [appdevview.h](file://h/appdevview.h)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp)
|
||||
- [appdevolview.h](file://h/appdevolview.h)
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp)
|
||||
- [navdevview.h](file://h/navdevview.h)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp)
|
||||
- [DevOperator.h](file://h/DevOperator.h)
|
||||
- [appdevdetaillistview.cpp](file://cpp/Views/appdevdetaillistview.cpp)
|
||||
- [appdevoldetaillistview.cpp](file://cpp/Views/appdevoldetaillistview.cpp)
|
||||
- [appdevolgrlistview.cpp](file://cpp/ProblemZone/appdevolgrlistview.cpp)
|
||||
- [appdevolacview.cpp](file://cpp/Views/appdevolacview.cpp)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概述](#架构概述)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖分析](#依赖分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
设备管理界面是Geomative Studio软件中的一个核心功能模块,负责设备的连接状态监控、串口配置、PLC状态查询与参数显示。该界面通过`devmngframe`框架与多个视图(如`appdevview`、`appdevolview`)协同工作,为用户提供设备列表、详细信息面板和实时状态窗口。用户可以通过该界面执行设备发现、参数查看与状态诊断等操作。对于开发者而言,该框架提供了扩展设备信息展示、添加新的诊断功能或集成新型硬件协议的接口。
|
||||
|
||||
## 项目结构
|
||||
设备管理界面的相关文件主要分布在`cpp/Views`和`h`目录下。`devmngframe.cpp`和`devmngframe.h`定义了设备管理框架的核心逻辑,而`appdevview.cpp`、`appdevolview.cpp`等文件则实现了具体的应用视图。`DevOperator.cpp`和`DevOperator.h`提供了设备操作的业务逻辑,包括设备注册、参数修改和状态查询等功能。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "视图层"
|
||||
devmngframe["devmngframe (设备管理框架)"]
|
||||
appdevview["appdevview (应用设备视图)"]
|
||||
appdevolview["appdevolview (在线设备视图)"]
|
||||
navdevview["navdevview (导航设备视图)"]
|
||||
end
|
||||
subgraph "业务逻辑层"
|
||||
DevOperator["DevOperator (设备操作器)"]
|
||||
end
|
||||
subgraph "数据模型"
|
||||
Device["Device (设备类)"]
|
||||
end
|
||||
devmngframe --> appdevview
|
||||
devmngframe --> appdevolview
|
||||
devmngframe --> navdevview
|
||||
devmngframe --> DevOperator
|
||||
DevOperator --> Device
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
**章节来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
## 核心组件
|
||||
设备管理界面的核心组件包括`CDevMngFrame`、`CAppDevView`、`CAppDevOLView`和`CNavDevView`。`CDevMngFrame`是设备管理框架的主窗口,负责协调各个视图的显示和交互。`CAppDevView`和`CAppDevOLView`分别用于显示离线和在线设备的详细信息,而`CNavDevView`则提供设备的导航树视图。`CDevOperator`类封装了设备操作的业务逻辑,如设备注册、参数修改和状态查询。
|
||||
|
||||
**章节来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
## 架构概述
|
||||
设备管理界面采用MVC(Model-View-Controller)架构模式。`CDevMngFrame`作为控制器,负责协调视图和模型之间的交互。`CAppDevView`、`CAppDevOLView`和`CNavDevView`作为视图,负责显示设备信息和用户界面。`CDevOperator`和`CDevice`作为模型,负责处理设备数据和业务逻辑。这种架构使得界面逻辑与业务逻辑分离,提高了代码的可维护性和可扩展性。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class CDevMngFrame {
|
||||
+CView* m_pAppDevView
|
||||
+CView* m_pNavDevView
|
||||
+CDevOperator* m_pDevOperator
|
||||
+ShowAppView(DWORD, UINT)
|
||||
+OnModifyDeviceParameter()
|
||||
+OnRegisterNewDevice()
|
||||
}
|
||||
class CAppDevView {
|
||||
+CView* m_pDevDetailListView
|
||||
+CView* m_pDevContentListView
|
||||
}
|
||||
class CAppDevOLView {
|
||||
+CView* m_pDevOLDetailListView
|
||||
+CView* m_pDevOLGRListView
|
||||
+CView* m_pDevOLACListView
|
||||
}
|
||||
class CNavDevView {
|
||||
+CTreeCtrl m_devTree
|
||||
}
|
||||
class CDevOperator {
|
||||
+CStateProcessor m_stateProcessor
|
||||
+CHandleProcessor m_handleProcessor
|
||||
+InitialNavDevView(CNavDevView*)
|
||||
+ShowFLDeviceInfo(DWORD, CView*)
|
||||
+ShowOLDeviceInfo(DWORD, CView*)
|
||||
+ModifyDeviceParameter(CNavDevView*, CListCtrl&)
|
||||
}
|
||||
class CDevice {
|
||||
+CString m_szDevSN
|
||||
+UINT m_uState
|
||||
+DWORD m_dwID
|
||||
+ShowOLDetailInfo(CListCtrl&)
|
||||
+ShowGRInfo(CListCtrl&)
|
||||
+ShowACInfo(CListCtrl&)
|
||||
}
|
||||
CDevMngFrame --> CAppDevView : "包含"
|
||||
CDevMngFrame --> CAppDevOLView : "包含"
|
||||
CDevMngFrame --> CNavDevView : "包含"
|
||||
CDevMngFrame --> CDevOperator : "使用"
|
||||
CDevOperator --> CDevice : "操作"
|
||||
CAppDevView --> CDevice : "显示"
|
||||
CAppDevOLView --> CDevice : "显示"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### CDevMngFrame 分析
|
||||
`CDevMngFrame`是设备管理框架的主窗口类,继承自`CMDIChildWnd`。它负责创建和管理设备管理界面的布局,包括导航视图和应用视图。通过`OnCreateClient`方法,它使用`CSplitterWnd`将窗口分割为左右两部分,左侧为`CNavDevView`,右侧为`CAppDevView`或`CAppDevOLView`。`ShowAppView`方法根据设备状态动态切换右侧视图。
|
||||
|
||||
#### 类图
|
||||
```mermaid
|
||||
classDiagram
|
||||
class CDevMngFrame {
|
||||
+CView* m_pAppDevView
|
||||
+CView* m_pNavDevView
|
||||
+CDevOperator* m_pDevOperator
|
||||
+CSplitterWnd m_splitter
|
||||
+ShowAppView(DWORD, UINT)
|
||||
+OnMDIActivate(BOOL, CWnd*, CWnd*)
|
||||
+OnClose()
|
||||
}
|
||||
CDevMngFrame --|> CMDIChildWnd
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [devmngframe.h](file://h/devmngframe.h#L1-L108)
|
||||
|
||||
#### 消息处理流程
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 用户
|
||||
participant CDevMngFrame
|
||||
participant CDevOperator
|
||||
participant CDevice
|
||||
用户->>CDevMngFrame : 选择设备
|
||||
CDevMngFrame->>CDevMngFrame : OnSelchangedNavDevTree
|
||||
CDevMngFrame->>CDevMngFrame : OnSchedule
|
||||
CDevMngFrame->>CDevOperator : ShowOLDeviceInfo 或 ShowFLDeviceInfo
|
||||
CDevOperator->>CDevice : 获取设备信息
|
||||
CDevice-->>CDevOperator : 返回设备信息
|
||||
CDevOperator-->>CDevMngFrame : 更新视图
|
||||
CDevMngFrame-->>用户 : 显示设备详细信息
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
**章节来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
### CAppDevView 与 CAppDevOLView 分析
|
||||
`CAppDevView`和`CAppDevOLView`分别用于显示离线和在线设备的详细信息。`CAppDevView`包含`CAppDevDetailListView`和`CAppDataTdListView`,用于显示设备基本信息和测试数据。`CAppDevOLView`包含`CAppDevOLDetailListView`、`CAppDevOLGRListView`和`CAppDevOLACView`,用于显示在线设备的详细信息、接地电阻和交流信息。
|
||||
|
||||
#### 布局流程图
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([创建视图]) --> CreateSplitter["创建分割窗口"]
|
||||
CreateSplitter --> CreateDetail["创建详细信息列表"]
|
||||
CreateDetail --> CreateContent["创建内容列表"]
|
||||
CreateContent --> SetStyle["设置列表样式"]
|
||||
SetStyle --> InsertColumns["插入列表列"]
|
||||
InsertColumns --> InsertItems["插入列表项"]
|
||||
InsertItems --> End([视图创建完成])
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
|
||||
**章节来源**
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
|
||||
### CNavDevView 分析
|
||||
`CNavDevView`提供设备的导航树视图,用户可以通过树形结构浏览和选择设备。它通过`CTreeCtrl`控件实现树形视图,并在`OnInitialUpdate`方法中初始化树的样式。`OnRclickNavDevTree`方法处理右键点击事件,弹出上下文菜单。
|
||||
|
||||
#### 交互流程图
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A([用户右键点击设备]) --> B{是否在设备上?}
|
||||
B --> |是| C[选择设备]
|
||||
C --> D[获取设备句柄和状态]
|
||||
D --> E[发送调度消息]
|
||||
E --> F[更新应用视图]
|
||||
F --> G[显示设备详细信息]
|
||||
B --> |否| H[无操作]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
- [navdevview.h](file://h/navdevview.h#L1-L70)
|
||||
|
||||
**章节来源**
|
||||
- [navdevview.cpp](file://cpp/Views/navdevview.cpp#L1-L180)
|
||||
|
||||
### CDevOperator 分析
|
||||
`CDevOperator`类封装了设备操作的业务逻辑,包括设备注册、参数修改和状态查询。它通过`InitialNavDevView`方法初始化导航视图,通过`ShowOLDeviceInfo`和`ShowFLDeviceInfo`方法显示在线和离线设备的详细信息。`ModifyDeviceParameter`方法用于修改设备参数。
|
||||
|
||||
#### 业务逻辑流程图
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([修改设备参数]) --> GetSelection["获取选中设备"]
|
||||
GetSelection --> GetHandle["获取设备句柄"]
|
||||
GetHandle --> GetID["获取设备ID"]
|
||||
GetID --> GetDevice["获取设备对象"]
|
||||
GetDevice --> ModifyParam["修改设备参数"]
|
||||
ModifyParam --> ShowInfo["更新视图显示"]
|
||||
ShowInfo --> End([参数修改完成])
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
- [DevOperator.h](file://h/DevOperator.h#L1-L59)
|
||||
|
||||
**章节来源**
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
## 依赖分析
|
||||
设备管理界面的组件之间存在紧密的依赖关系。`CDevMngFrame`依赖于`CDevOperator`来执行设备操作,`CDevOperator`又依赖于`CDevice`来获取设备信息。视图组件如`CAppDevView`和`CAppDevOLView`依赖于`CDevOperator`来更新显示内容。这种依赖关系通过指针成员变量和方法调用实现。
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
CDevMngFrame --> CDevOperator
|
||||
CDevOperator --> CDevice
|
||||
CDevMngFrame --> CNavDevView
|
||||
CDevMngFrame --> CAppDevView
|
||||
CDevMngFrame --> CAppDevOLView
|
||||
CAppDevView --> CDevice
|
||||
CAppDevOLView --> CDevice
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
- [appdevview.cpp](file://cpp/Views/appdevview.cpp#L1-L102)
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
|
||||
**章节来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L1806)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L1604)
|
||||
|
||||
## 性能考虑
|
||||
设备管理界面在处理大量设备时可能会遇到性能瓶颈。建议在初始化导航视图时,采用异步加载的方式,避免阻塞UI线程。此外,对于频繁更新的实时状态数据,可以采用定时器机制,定期刷新视图,而不是实时更新,以减少CPU和内存的消耗。
|
||||
|
||||
## 故障排除指南
|
||||
当设备管理界面无法正常显示设备信息时,首先检查设备连接状态和串口配置。如果设备在线但无法通信,可以尝试重启设备或重新插拔串口线。如果问题仍然存在,可以使用`OnGetAnlyseInfo`功能获取诊断信息,分析日志文件以定位问题。
|
||||
|
||||
**章节来源**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L600-L640)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L609-L639)
|
||||
|
||||
## 结论
|
||||
设备管理界面通过`devmngframe`框架与多个视图协同工作,为用户提供了一个功能丰富的设备管理环境。其MVC架构设计使得界面逻辑与业务逻辑分离,便于维护和扩展。开发者可以通过扩展`CDevOperator`类来添加新的诊断功能或集成新型硬件协议,满足不断变化的需求。
|
||||
Reference in New Issue
Block a user