a
This commit is contained in:
@@ -0,0 +1,324 @@
|
||||
# 设备参数管理
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp)
|
||||
- [CtrlProtocolDef.h](file://h/CtrlProtocolDef.h)
|
||||
- [DialShowDevParam.h](file://h/DialShowDevParam.h)
|
||||
- [DevOperator.h](file://h/DevOperator.h)
|
||||
- [devmngframe.h](file://h/devmngframe.h)
|
||||
- [DevManager.h](file://h/DevManager.h)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [核心功能概述](#核心功能概述)
|
||||
3. [UI结构与数据绑定](#ui结构与数据绑定)
|
||||
4. [消息处理链分析](#消息处理链分析)
|
||||
5. [参数读取、修改与持久化机制](#参数读取修改与持久化机制)
|
||||
6. [用户操作指南](#用户操作指南)
|
||||
7. [开发者扩展指南](#开发者扩展指南)
|
||||
8. [安全访问与异常处理](#安全访问与异常处理)
|
||||
9. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
设备参数管理功能是Geomative Studio系统中的核心模块之一,负责设备基本信息查看、运行参数配置和固件升级流程。该功能通过DialShowDevParam对话框提供用户界面,结合CDevMngFrame的消息处理机制和DevOperator类的操作接口,实现了对设备参数的全面管理。系统支持参数查询、配置修改、设备注册/注销等操作,并提供了安全访问控制和异常处理策略。
|
||||
|
||||
## 核心功能概述
|
||||
设备参数管理模块主要包含以下功能:
|
||||
- 设备基本信息查看:显示设备序列号、硬件/软件版本、温度、电池电压等信息
|
||||
- 运行参数配置:配置电源频率、电缆类型、接地电阻阈值、迭代次数等运行参数
|
||||
- 固件升级流程:支持设备固件的在线升级
|
||||
- 参数持久化:将修改后的参数保存到设备和云端
|
||||
- 安全验证:在关键操作前进行用户确认和参数合法性验证
|
||||
|
||||
该模块通过STSynDevParam数据结构统一管理设备参数,确保了数据的一致性和完整性。
|
||||
|
||||
**Section sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L1-L500)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L1-L800)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L1-L800)
|
||||
|
||||
## UI结构与数据绑定
|
||||
### DialShowDevParam对话框UI结构
|
||||
DialShowDevParam对话框采用标准的MFC对话框设计,包含以下主要控件:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["DialShowDevParam对话框"] --> B["基本信息显示区"]
|
||||
A --> C["可配置参数区"]
|
||||
A --> D["操作按钮区"]
|
||||
B --> B1["设备SN: 编辑框"]
|
||||
B --> B2["硬件版本: 编辑框"]
|
||||
B --> B3["软件版本: 编辑框"]
|
||||
B --> B4["温度: 编辑框"]
|
||||
B --> B5["电池电压: 编辑框"]
|
||||
C --> C1["电源频率: 下拉框"]
|
||||
C --> C2["电缆类型: 下拉框"]
|
||||
C --> C3["接地电阻阈值: 编辑框"]
|
||||
C --> C4["电量报警: 下拉框"]
|
||||
C --> C5["迭代次数: 编辑框"]
|
||||
C --> C6["最大下发点数: 编辑框"]
|
||||
D --> D1["配置设备参数按钮"]
|
||||
D --> D2["检查服务器信息按钮"]
|
||||
D --> D3["关闭按钮"]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L52-L251)
|
||||
- [DialShowDevParam.h](file://h/DialShowDevParam.h#L1-L50)
|
||||
|
||||
### 数据绑定机制
|
||||
DialShowDevParam类通过以下机制实现UI与数据的绑定:
|
||||
|
||||
1. **初始化绑定**:在OnInitDialog方法中,将STSynDevParam结构体中的数据绑定到相应的UI控件
|
||||
2. **双向同步**:支持从UI读取数据到结构体,以及从结构体更新UI显示
|
||||
3. **状态管理**:通过m_iOperStatus变量管理编辑状态,区分查看模式和编辑模式
|
||||
|
||||
数据绑定的关键代码路径:
|
||||
- 初始化数据绑定:`DialShowDevParam::OnInitDialog()`
|
||||
- 控件数据映射:`DDX_Control`宏定义
|
||||
- 状态切换逻辑:`OnButtonCfgDevParam()`方法
|
||||
|
||||
**Section sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L52-L251)
|
||||
- [DialShowDevParam.h](file://h/DialShowDevParam.h#L49)
|
||||
|
||||
## 消息处理链分析
|
||||
### CDevMngFrame::OnModifyDeviceParameter消息处理链
|
||||
CDevMngFrame类的OnModifyDeviceParameter方法是设备参数修改的入口点,其处理链如下:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 用户 as 用户
|
||||
participant CDevMngFrame as CDevMngFrame
|
||||
participant DevOperator as CDevOperator
|
||||
participant Device as CDevice
|
||||
participant DialShowDevParam as CDialShowDevParam
|
||||
用户->>CDevMngFrame : 点击"修改设备参数"
|
||||
CDevMngFrame->>DevOperator : ModifyDeviceParameter()
|
||||
DevOperator->>Device : GetDeviceByID()
|
||||
Device->>Device : ModifyParameter()
|
||||
Device->>DialShowDevParam : 创建对话框实例
|
||||
DialShowDevParam->>DialShowDevParam : SetDevParam()
|
||||
DialShowDevParam->>用户 : 显示参数配置对话框
|
||||
用户->>DialShowDevParam : 修改参数并确认
|
||||
DialShowDevParam->>CDevMngFrame : DoModal()返回IDOK
|
||||
CDevMngFrame->>网络 : 发送参数修改请求
|
||||
CDevMngFrame->>云端 : 上传设备信息
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L533-L537)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L435-L461)
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L268-L403)
|
||||
|
||||
### 消息处理流程详解
|
||||
1. **用户触发**:用户在设备管理界面点击"修改设备参数"菜单项
|
||||
2. **框架处理**:CDevMngFrame接收到IDM_OP_DE_REG_O_MP命令消息
|
||||
3. **操作委托**:调用DevOperator的ModifyDeviceParameter方法
|
||||
4. **设备获取**:通过设备句柄获取对应的CDevice实例
|
||||
5. **参数修改**:调用设备实例的ModifyParameter方法
|
||||
6. **对话框显示**:创建并显示DialShowDevParam对话框
|
||||
7. **结果处理**:根据用户操作结果决定是否发送参数修改请求
|
||||
|
||||
**Section sources**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L92-L93)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L435-L461)
|
||||
|
||||
## 参数读取修改与持久化机制
|
||||
### 参数数据结构
|
||||
设备参数通过STSynDevParam结构体进行管理,主要包含以下字段:
|
||||
|
||||
| 字段名 | 类型 | 描述 | 范围 |
|
||||
|-------|------|------|------|
|
||||
| uiMachineID | UINT32 | 设备机器ID | 无限制 |
|
||||
| ucHWVer[2] | BYTE | 硬件版本 | 0-99 |
|
||||
| ucSWVer[4] | BYTE | 软件版本 | 0-99 |
|
||||
| fTemperature | float | 温度 | 0.0-150.0℃ |
|
||||
| fBatteryVol | float | 电池电压 | 0.0-10.0V |
|
||||
| ucPowerFreq | BYTE | 电源频率 | 0(50Hz), 1(60Hz) |
|
||||
| ucCableType | BYTE | 电缆类型 | 0-2 |
|
||||
| iGrThreshold | int | 接地电阻阈值 | 0-30000Ω |
|
||||
| ucBatteryAlarm | BYTE | 电量报警 | 0(关闭), 1(开启) |
|
||||
| ucStacking | BYTE | 迭代次数 | 0-255 |
|
||||
| ucChannelNum | BYTE | 通道数 | 无限制 |
|
||||
| ucDownLoadNum | BYTE | 最大下发点数 | 通道数-20 |
|
||||
|
||||
**Diagram sources**
|
||||
- [CtrlProtocolDef.h](file://h/CtrlProtocolDef.h#L78)
|
||||
- [DialShowDevParam.h](file://h/DialShowDevParam.h#L49)
|
||||
|
||||
### 参数读取流程
|
||||
参数读取主要通过以下步骤实现:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始] --> B[选择目标设备]
|
||||
B --> C[发送同步请求 EN_CTRL_SYN_DEV_PARAM]
|
||||
C --> D{网络请求成功?}
|
||||
D --> |是| E[接收STSynDevParam数据]
|
||||
D --> |否| F[显示错误信息]
|
||||
E --> G[字节序转换]
|
||||
G --> H[温度/电压范围验证]
|
||||
H --> I[创建DialShowDevParam实例]
|
||||
I --> J[调用SetDevParam方法]
|
||||
J --> K[显示参数对话框]
|
||||
K --> L[结束]
|
||||
F --> L
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L670-L723)
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L442-L495)
|
||||
|
||||
### 参数修改与持久化
|
||||
参数修改和持久化过程包含客户端验证、设备更新和云端同步三个阶段:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[用户修改参数] --> B[客户端验证]
|
||||
B --> C{验证通过?}
|
||||
C --> |否| D[显示错误提示]
|
||||
C --> |是| E[准备STModifyDevParam结构]
|
||||
E --> F[发送EN_CTRL_SET_DEV_PARAM命令]
|
||||
F --> G{设备响应成功?}
|
||||
G --> |否| H[显示设置失败]
|
||||
G --> |是| I[更新本地缓存]
|
||||
I --> J[上传到云端]
|
||||
J --> K[更新UI显示]
|
||||
K --> L[完成]
|
||||
D --> L
|
||||
H --> L
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L421-L532)
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L268-L403)
|
||||
|
||||
**Section sources**
|
||||
- [CtrlProtocolDef.h](file://h/CtrlProtocolDef.h#L78-L89)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L421-L532)
|
||||
|
||||
## 用户操作指南
|
||||
### 参数查询操作
|
||||
1. 在设备管理界面选择目标设备
|
||||
2. 右键点击设备或通过菜单选择"查看设备参数"
|
||||
3. 系统自动从设备读取参数并显示在对话框中
|
||||
4. 查看设备基本信息和运行参数
|
||||
|
||||
### 配置修改操作
|
||||
1. 在设备管理界面选择目标设备
|
||||
2. 点击"修改设备参数"菜单项
|
||||
3. 在弹出的对话框中修改所需参数
|
||||
4. 点击"下发"按钮提交修改
|
||||
5. 系统会提示确认操作,确认后参数将被发送到设备
|
||||
|
||||
### 设备注册/注销操作
|
||||
**设备注册流程:**
|
||||
1. 点击"注册新设备"菜单项
|
||||
2. 系统自动检测并注册新设备
|
||||
3. 注册完成后设备将出现在设备列表中
|
||||
|
||||
**设备注销流程:**
|
||||
1. 选择要注销的设备
|
||||
2. 点击"注销设备"菜单项
|
||||
3. 确认注销操作
|
||||
4. 设备将从系统中移除
|
||||
|
||||
**Section sources**
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L533-L561)
|
||||
- [DevOperator.cpp](file://cpp/Operator/DevOperator.cpp#L435-L482)
|
||||
|
||||
## 开发者扩展指南
|
||||
### 添加新的参数配置项
|
||||
要添加新的参数配置项,需要执行以下步骤:
|
||||
|
||||
1. **扩展数据结构**:在STSynDevParam结构体中添加新字段
|
||||
2. **更新UI界面**:在DialShowDevParam对话框中添加相应的控件
|
||||
3. **实现数据绑定**:在OnInitDialog和OnButtonCfgDevParam方法中添加数据绑定逻辑
|
||||
4. **更新协议**:确保新参数在网络传输中正确序列化和反序列化
|
||||
|
||||
示例代码路径:
|
||||
- 数据结构定义:`CtrlProtocolDef.h`
|
||||
- UI控件定义:`DialShowDevParam.h`
|
||||
- 数据绑定实现:`DialShowDevParam.cpp`
|
||||
|
||||
### 扩展设备参数模型
|
||||
扩展STSynDevParam模型的步骤:
|
||||
|
||||
1. 在`CtrlProtocolDef.h`中修改STSynDevParam结构体
|
||||
2. 更新所有使用该结构体的类和方法
|
||||
3. 确保字节序转换函数支持新字段
|
||||
4. 更新网络协议版本号以确保兼容性
|
||||
|
||||
### 参数变更验证与回调机制
|
||||
系统提供了多层次的参数验证机制:
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class ParameterValidator {
|
||||
+ValidatePowerFreq(BYTE freq) bool
|
||||
+ValidateCableType(BYTE type) bool
|
||||
+ValidateGrThreshold(int threshold) bool
|
||||
+ValidateStacking(BYTE stacking) bool
|
||||
+ValidateDownLoadNum(BYTE num, BYTE channelNum) bool
|
||||
}
|
||||
class ParameterCallback {
|
||||
+OnBeforeModify(STSynDevParam* param) bool
|
||||
+OnAfterModify(STSynDevParam* param) void
|
||||
+OnModifyFailed(STSynDevParam* param, int errorCode) void
|
||||
}
|
||||
ParameterValidator <|-- DeviceParameterValidator
|
||||
ParameterCallback <|-- DeviceParameterCallback
|
||||
DeviceParameterValidator --> DeviceParameterCallback : "uses"
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L296-L379)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L433-L444)
|
||||
|
||||
**Section sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L296-L379)
|
||||
|
||||
## 安全访问与异常处理
|
||||
### 安全访问策略
|
||||
系统通过以下机制确保设备参数操作的安全性:
|
||||
|
||||
1. **操作确认**:在关键操作前要求用户确认
|
||||
2. **参数验证**:对所有输入参数进行范围和合法性验证
|
||||
3. **状态检查**:确保设备处于可操作状态
|
||||
4. **权限控制**:某些操作需要管理员权限
|
||||
|
||||
### 异常处理机制
|
||||
系统实现了完善的异常处理策略:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[异常发生] --> B{异常类型}
|
||||
B --> C[网络异常]
|
||||
B --> D[参数验证异常]
|
||||
B --> E[设备响应异常]
|
||||
B --> F[其他异常]
|
||||
C --> G[显示连接中断提示]
|
||||
D --> H[显示具体参数错误]
|
||||
E --> I[显示设备响应错误]
|
||||
F --> J[记录日志并提示]
|
||||
G --> K[结束]
|
||||
H --> K
|
||||
I --> K
|
||||
J --> K
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L296-L379)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L442-L495)
|
||||
|
||||
**Section sources**
|
||||
- [DialShowDevParam.cpp](file://cpp/Views/DialShowDevParam.cpp#L296-L379)
|
||||
- [devmngframe.cpp](file://cpp/Views/devmngframe.cpp#L442-L495)
|
||||
|
||||
## 结论
|
||||
设备参数管理功能通过DialShowDevParam对话框、CDevMngFrame消息处理链和DevOperator操作类的协同工作,实现了对设备参数的全面管理。系统提供了友好的用户界面、可靠的数据持久化机制和安全的访问控制策略。开发者可以通过扩展STSynDevParam数据结构和相应的验证回调机制来添加新的参数配置项,满足不断变化的业务需求。
|
||||
Reference in New Issue
Block a user