Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

12 KiB
Raw Permalink Blame History

设备参数管理

**本文档引用的文件** - [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)

目录

  1. 简介
  2. 核心功能概述
  3. UI结构与数据绑定
  4. 消息处理链分析
  5. 参数读取、修改与持久化机制
  6. 用户操作指南
  7. 开发者扩展指南
  8. 安全访问与异常处理
  9. 结论

简介

设备参数管理功能是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与数据的绑定:

  1. 初始化绑定:在OnInitDialog方法中,将STSynDevParam结构体中的数据绑定到相应的UI控件
  2. 双向同步:支持从UI读取数据到结构体,以及从结构体更新UI显示
  3. 状态管理:通过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

消息处理流程详解

  1. 用户触发:用户在设备管理界面点击"修改设备参数"菜单项
  2. 框架处理CDevMngFrame接收到IDM_OP_DE_REG_O_MP命令消息
  3. 操作委托:调用DevOperator的ModifyDeviceParameter方法
  4. 设备获取:通过设备句柄获取对应的CDevice实例
  5. 参数修改:调用设备实例的ModifyParameter方法
  6. 对话框显示:创建并显示DialShowDevParam对话框
  7. 结果处理:根据用户操作结果决定是否发送参数修改请求

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

用户操作指南

参数查询操作

  1. 在设备管理界面选择目标设备
  2. 右键点击设备或通过菜单选择"查看设备参数"
  3. 系统自动从设备读取参数并显示在对话框中
  4. 查看设备基本信息和运行参数

配置修改操作

  1. 在设备管理界面选择目标设备
  2. 点击"修改设备参数"菜单项
  3. 在弹出的对话框中修改所需参数
  4. 点击"下发"按钮提交修改
  5. 系统会提示确认操作,确认后参数将被发送到设备

设备注册/注销操作

设备注册流程:

  1. 点击"注册新设备"菜单项
  2. 系统自动检测并注册新设备
  3. 注册完成后设备将出现在设备列表中

设备注销流程:

  1. 选择要注销的设备
  2. 点击"注销设备"菜单项
  3. 确认注销操作
  4. 设备将从系统中移除

Section sources

开发者扩展指南

添加新的参数配置项

要添加新的参数配置项,需要执行以下步骤:

  1. 扩展数据结构:在STSynDevParam结构体中添加新字段
  2. 更新UI界面:在DialShowDevParam对话框中添加相应的控件
  3. 实现数据绑定:在OnInitDialog和OnButtonCfgDevParam方法中添加数据绑定逻辑
  4. 更新协议:确保新参数在网络传输中正确序列化和反序列化

示例代码路径:

  • 数据结构定义:CtrlProtocolDef.h
  • UI控件定义:DialShowDevParam.h
  • 数据绑定实现:DialShowDevParam.cpp

扩展设备参数模型

扩展STSynDevParam模型的步骤:

  1. CtrlProtocolDef.h中修改STSynDevParam结构体
  2. 更新所有使用该结构体的类和方法
  3. 确保字节序转换函数支持新字段
  4. 更新网络协议版本号以确保兼容性

参数变更验证与回调机制

系统提供了多层次的参数验证机制:

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

安全访问与异常处理

安全访问策略

系统通过以下机制确保设备参数操作的安全性:

  1. 操作确认:在关键操作前要求用户确认
  2. 参数验证:对所有输入参数进行范围和合法性验证
  3. 状态检查:确保设备处于可操作状态
  4. 权限控制:某些操作需要管理员权限

异常处理机制

系统实现了完善的异常处理策略:

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数据结构和相应的验证回调机制来添加新的参数配置项,满足不断变化的业务需求。