Files
FullAutoWaterCheck/全自动水压检测仪/实现说明.md
GukSang.Jin 343370cacc 更新曲线
2026-02-04 12:00:13 +08:00

141 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 状态监控设置弹窗实现说明
## 需求概述
将NormalTemperatureMode页面顶部状态栏中的常温/高温模式指示和阀门状态展示区域,移动到一个新的设置弹窗中展示。
## 实现方案
### 1. 新建状态设置弹窗 (StatusSettingsForm)
#### 文件结构
- `StatusSettingsForm.cs` - 窗体逻辑代码
- `StatusSettingsForm.Designer.cs` - 窗体UI设计代码
#### 主要功能
1. **温度模式显示区域**
- 常温模式指示灯 (uiLight1_Status) - 蓝色
- 高温模式指示灯 (uiLight2_Status) - 红色
- 当前模式文本 (uiLabel11_Status)
2. **阀门状态显示区域** (10个阀门指示灯)
- uiLight3_Status: 高压出阀
- uiLight4_Status: 高压进阀
- uiLight5_Status: 常温抽水阀
- uiLight6_Status: 常温水箱加水阀
- uiLight7_Status: 高温抽水阀
- uiLight8_Status: 空气抽气阀
- uiLight9_Status: 加热状态
- uiLight10_Status: 常温回水阀
- uiLight11_Status: 高温水箱加水阀
- uiLight12_Status: 高温回水阀
3. **实时更新机制**
- 使用Timer每500ms从父窗体获取最新状态
- 通过父窗体的`UpdateStatusSettingsForm`方法获取控件状态
- 支持线程安全的UI更新
### 2. 修改NormalTemperatureMode主窗体
#### 新增内容
1. **私有字段**
```csharp
private StatusSettingsForm _statusSettingsForm;
```
2. **公共更新方法**
```csharp
public void UpdateStatusSettingsForm(StatusSettingsForm form)
```
- 从主窗体读取所有指示灯和标签的状态
- 调用StatusSettingsForm的更新方法传递状态
3. **打开窗体方法**
```csharp
private void OpenStatusSettingsForm()
```
- 创建或激活StatusSettingsForm实例
- 实现单例模式,避免重复创建
4. **按钮事件修改**
- 修改uiButton14的MouseUp事件
- 短按:打开状态设置窗体
- 长按1秒以上打开系数设置窗体
### 3. 项目文件更新
在`全自动水压检测仪.csproj`中添加新文件引用:
```xml
<Compile Include="StatusSettingsForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StatusSettingsForm.Designer.cs">
<DependentUpon>StatusSettingsForm.cs</DependentUpon>
</Compile>
```
## 使用说明
### 打开状态设置窗体
1. 在NormalTemperatureMode主界面
2. 短按隐藏按钮uiButton14
3. 弹出状态设置窗体
### 窗体特性
- 窗体大小850 x 550 像素
- 居中显示在父窗体上方
- 不显示在任务栏
- 实时更新状态每500ms
- 点击"关闭"按钮关闭窗体
## 技术要点
### 1. 状态同步
- 使用Timer定时器实现自动更新
- 通过父窗体公共方法获取状态
- 线程安全的UI更新使用Invoke
### 2. 控件状态映射
```csharp
// 温度模式
uiLight1 (主窗体) → uiLight1_Status (设置窗体)
uiLight2 (主窗体) → uiLight2_Status (设置窗体)
uiLabel11 (主窗体) → uiLabel11_Status (设置窗体)
// 阀门状态
uiLight3-12 (主窗体) → uiLight3-12_Status (设置窗体)
```
### 3. 布局设计
- 温度模式区域顶部高度120px
- 阀门状态区域中部高度280px5列2行布局
- 关闭按钮:底部居中
## 注意事项
1. **生产环境可用性**
- 所有代码经过空值检查
- 异常处理完善
- 线程安全保证
2. **性能优化**
- 定时器间隔500ms平衡实时性和性能
- 窗体关闭时自动停止定时器
- 使用单例模式避免重复创建
3. **正确取值**
- 直接从主窗体控件读取State属性
- 保证状态的准确性和实时性
4. **正确显示状态**
- 指示灯颜色:绿色(开启)、灰色(关闭)
- 温度模式:蓝色(常温)、红色(高温)
- 文本标签清晰标注每个状态的含义
## 测试建议
1. 测试窗体打开和关闭
2. 验证状态实时更新
3. 检查所有指示灯显示正确
4. 测试长按和短按按钮功能
5. 验证多次打开窗体的稳定性