Files
petwash/PetWashControl/UI_IMPLEMENTATION.md
GukSang.Jin 9c66b6cd82
2026-03-03 16:55:02 +08:00

204 lines
5.4 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.
# 无人自动洗宠机 WPF 界面实现说明
## 概述
本项目实现了符合技术设计文档要求的深蓝科技风格WPF界面包含完整的用户交互流程和视觉设计。
## 设计特点
### 1. 深蓝科技风格
- **背景色**: #0F3A7D (深蓝色渐变)
- **文字色**: #E8F0FF (浅灰白色,高对比度)
- **强调色**: #00D4FF (青蓝色,用于按钮和数据显示)
- **成功色**: #00FF88 (绿色,用于正常状态)
- **警告色**: #FFB800 (橙色)
- **错误色**: #FF4444 (红色)
### 2. 视觉效果
- LED指示灯效果带发光阴影
- 科技感按钮(带青蓝色光晕)
- 数字显示采用等宽字体Consolas
- 所有面板带有微光边框效果
### 3. 界面布局
#### 待机界面 (IdleView)
- 显示系统标题
- 硬件状态指示(水泵、加热、风干、门锁)
- 实时数据显示(水温、水位、运行时间)
- 大型"点击开始"按钮
- 底部状态栏
#### 支付界面 (PaymentView)
- 套餐列表展示
- 每个套餐显示:名称、描述、时长、价格
- 点击套餐卡片即可选择
- 返回按钮
#### 洗护进度界面 (WashingView)
- 当前步骤大字显示
- 剩余时间倒计时
- 总体进度条(带发光效果)
- 流程步骤列表(显示当前进行到哪一步)
- 底部实时数据(水温、水位、门状态)
- 紧急停止按钮
## 技术实现
### 1. MVVM架构
- **View**: MainWindow.xaml
- **ViewModel**: MainViewModel.cs
- **Model**: Package, Order
### 2. 视图切换
使用事件机制实现多页面切换:
```csharp
public event Action<string>? ViewChanged;
```
三个主要视图:
- Idle待机
- Payment支付
- Washing洗护中
### 3. 数据绑定
所有UI元素通过数据绑定连接到ViewModel
- `Packages` - 套餐列表
- `StatusMessage` - 状态消息
- `IsDoorOpen` - 门状态
- `IsWashing` - 洗护状态
- `WashProgress` - 洗护进度
- `CurrentStep` - 当前步骤
- `RemainingTime` - 剩余时间
### 4. 洗护流程模拟
```csharp
private async Task SimulateWashingProcessAsync()
{
var steps = new[]
{
("第一次冲水", 120),
("沐浴露喷洒", 30),
("第二次冲水", 180),
("香波喷洒", 30),
("第三次冲水", 180),
("热风吹毛", 300),
("冷热风混合", 120)
};
// ... 执行流程
}
```
## 使用流程
### 用户操作流程
1. **待机界面** → 点击"点击开始"
2. **支付界面** → 选择套餐 → 确认支付
3. **返回待机** → 放入宠物 → 系统提示门已打开
4. **关门** → 自动切换到洗护界面
5. **洗护进度** → 显示实时进度和步骤
6. **完成** → 提示取出宠物 → 返回待机
### 开发者操作
1. 启动后端API服务PetWash.Api
2. 启动MQTT服务器可选
3. 运行WPF应用程序
4. 系统自动初始化并连接服务
## 样式资源
所有样式定义在 `Resources/Styles.xaml`
### 按钮样式
- `TechButton` - 主要按钮(带发光效果)
- `SecondaryTechButton` - 次要按钮(透明背景)
### 面板样式
- `TechPanel` - 科技风面板(带边框和阴影)
### 文本样式
- `TitleTextBlock` - 标题36pt带发光
- `SubtitleTextBlock` - 副标题22pt
- `BodyTextBlock` - 正文16pt
- `DataTextBlock` - 数据显示28pt等宽字体
- `DigitalDisplay` - 数字显示48pt带发光
### 其他样式
- `LEDIndicator` - LED指示灯
- `TechProgressBar` - 进度条
## 响应式设计
### 屏幕尺寸
- 默认: 1024x800 (适合7-10寸工控屏)
- 全屏无边框模式
- 所有触摸元素 ≥ 60x60px
### 字体大小
- 标题: 36pt
- 副标题: 22pt
- 正文: 16pt
- 数据: 28-48pt
## 扩展功能
### 待实现功能
1. **参数设置界面** - 配置洗护参数
2. **故障诊断界面** - 显示故障日志和诊断信息
3. **二维码支付** - 集成真实支付系统
4. **实时传感器数据** - 连接真实硬件传感器
5. **远程监控** - 云端数据上传
### 建议改进
1. 添加动画效果(页面切换、进度条)
2. 添加声音提示
3. 多语言支持
4. 用户偏好设置
5. 历史订单查询
## 文件结构
```
PetWashControl/
├── Views/
│ ├── MainWindow.xaml # 主界面
│ └── MainWindow.xaml.cs # 主界面代码
├── ViewModels/
│ └── MainViewModel.cs # 主视图模型
├── Models/
│ ├── Package.cs # 套餐模型
│ └── Order.cs # 订单模型
├── Services/
│ ├── ApiService.cs # API服务
│ ├── MqttClientService.cs # MQTT服务
│ ├── ConfigurationService.cs # 配置服务
│ └── LogService.cs # 日志服务
├── Resources/
│ └── Styles.xaml # 样式资源
├── Converters/
│ └── BoolToStatusConverter.cs # 值转换器
└── App.xaml # 应用程序入口
```
## 依赖项
- .NET 8.0
- CommunityToolkit.Mvvm
- MQTTnet
- System.Text.Json
## 运行要求
- Windows 10/11
- .NET 8.0 Runtime
- 分辨率: 1024x800 或更高
- 触摸屏支持(可选)
## 调试模式
在开发模式下支付流程会弹出确认对话框而不是显示二维码洗护流程会加速执行100ms/秒而不是1000ms/秒)。
## 许可证
本项目遵循技术设计文档规范,用于无人自动洗宠机智能控制系统。