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