12 KiB
设备参数管理
**本文档引用的文件** - [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)目录
简介
设备参数管理功能是Geomative Studio系统中的核心模块之一,负责设备基本信息查看、运行参数配置和固件升级流程。该功能通过DialShowDevParam对话框提供用户界面,结合CDevMngFrame的消息处理机制和DevOperator类的操作接口,实现了对设备参数的全面管理。系统支持参数查询、配置修改、设备注册/注销等操作,并提供了安全访问控制和异常处理策略。
核心功能概述
设备参数管理模块主要包含以下功能:
- 设备基本信息查看:显示设备序列号、硬件/软件版本、温度、电池电压等信息
- 运行参数配置:配置电源频率、电缆类型、接地电阻阈值、迭代次数等运行参数
- 固件升级流程:支持设备固件的在线升级
- 参数持久化:将修改后的参数保存到设备和云端
- 安全验证:在关键操作前进行用户确认和参数合法性验证
该模块通过STSynDevParam数据结构统一管理设备参数,确保了数据的一致性和完整性。
Section sources
UI结构与数据绑定
DialShowDevParam对话框UI结构
DialShowDevParam对话框采用标准的MFC对话框设计,包含以下主要控件:
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类通过以下机制实现UI与数据的绑定:
- 初始化绑定:在OnInitDialog方法中,将STSynDevParam结构体中的数据绑定到相应的UI控件
- 双向同步:支持从UI读取数据到结构体,以及从结构体更新UI显示
- 状态管理:通过m_iOperStatus变量管理编辑状态,区分查看模式和编辑模式
数据绑定的关键代码路径:
- 初始化数据绑定:
DialShowDevParam::OnInitDialog() - 控件数据映射:
DDX_Control宏定义 - 状态切换逻辑:
OnButtonCfgDevParam()方法
Section sources
消息处理链分析
CDevMngFrame::OnModifyDeviceParameter消息处理链
CDevMngFrame类的OnModifyDeviceParameter方法是设备参数修改的入口点,其处理链如下:
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
消息处理流程详解
- 用户触发:用户在设备管理界面点击"修改设备参数"菜单项
- 框架处理:CDevMngFrame接收到IDM_OP_DE_REG_O_MP命令消息
- 操作委托:调用DevOperator的ModifyDeviceParameter方法
- 设备获取:通过设备句柄获取对应的CDevice实例
- 参数修改:调用设备实例的ModifyParameter方法
- 对话框显示:创建并显示DialShowDevParam对话框
- 结果处理:根据用户操作结果决定是否发送参数修改请求
Section sources
参数读取修改与持久化机制
参数数据结构
设备参数通过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
参数读取流程
参数读取主要通过以下步骤实现:
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
参数修改与持久化
参数修改和持久化过程包含客户端验证、设备更新和云端同步三个阶段:
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
Section sources
用户操作指南
参数查询操作
- 在设备管理界面选择目标设备
- 右键点击设备或通过菜单选择"查看设备参数"
- 系统自动从设备读取参数并显示在对话框中
- 查看设备基本信息和运行参数
配置修改操作
- 在设备管理界面选择目标设备
- 点击"修改设备参数"菜单项
- 在弹出的对话框中修改所需参数
- 点击"下发"按钮提交修改
- 系统会提示确认操作,确认后参数将被发送到设备
设备注册/注销操作
设备注册流程:
- 点击"注册新设备"菜单项
- 系统自动检测并注册新设备
- 注册完成后设备将出现在设备列表中
设备注销流程:
- 选择要注销的设备
- 点击"注销设备"菜单项
- 确认注销操作
- 设备将从系统中移除
Section sources
开发者扩展指南
添加新的参数配置项
要添加新的参数配置项,需要执行以下步骤:
- 扩展数据结构:在STSynDevParam结构体中添加新字段
- 更新UI界面:在DialShowDevParam对话框中添加相应的控件
- 实现数据绑定:在OnInitDialog和OnButtonCfgDevParam方法中添加数据绑定逻辑
- 更新协议:确保新参数在网络传输中正确序列化和反序列化
示例代码路径:
- 数据结构定义:
CtrlProtocolDef.h - UI控件定义:
DialShowDevParam.h - 数据绑定实现:
DialShowDevParam.cpp
扩展设备参数模型
扩展STSynDevParam模型的步骤:
- 在
CtrlProtocolDef.h中修改STSynDevParam结构体 - 更新所有使用该结构体的类和方法
- 确保字节序转换函数支持新字段
- 更新网络协议版本号以确保兼容性
参数变更验证与回调机制
系统提供了多层次的参数验证机制:
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
Section sources
安全访问与异常处理
安全访问策略
系统通过以下机制确保设备参数操作的安全性:
- 操作确认:在关键操作前要求用户确认
- 参数验证:对所有输入参数进行范围和合法性验证
- 状态检查:确保设备处于可操作状态
- 权限控制:某些操作需要管理员权限
异常处理机制
系统实现了完善的异常处理策略:
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
Section sources
结论
设备参数管理功能通过DialShowDevParam对话框、CDevMngFrame消息处理链和DevOperator操作类的协同工作,实现了对设备参数的全面管理。系统提供了友好的用户界面、可靠的数据持久化机制和安全的访问控制策略。开发者可以通过扩展STSynDevParam数据结构和相应的验证回调机制来添加新的参数配置项,满足不断变化的业务需求。