2026-03-25 21:34:41 +08:00
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
|
using MembranePoreTester.ViewModels;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
|
using MembranePoreTester.Models;
|
|
|
|
|
|
using MembranePoreTester.Services;
|
|
|
|
|
|
|
|
|
|
|
|
namespace MembranePoreTester.ViewModels
|
|
|
|
|
|
{
|
2026-04-01 20:33:23 +08:00
|
|
|
|
public partial class ParameterViewModel : ViewModelBase
|
2026-03-25 21:34:41 +08:00
|
|
|
|
{
|
|
|
|
|
|
private readonly IHardwareService _hardwareService;
|
|
|
|
|
|
|
|
|
|
|
|
// 设备数据模型(界面绑定用)
|
|
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
private DeviceDataModel _deviceData = new DeviceDataModel();
|
|
|
|
|
|
|
|
|
|
|
|
// 通信状态
|
|
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
private string _communicationStatus = "未连接";
|
|
|
|
|
|
|
|
|
|
|
|
// 状态颜色
|
|
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
private SolidColorBrush _statusColor = new SolidColorBrush(Colors.Red);
|
|
|
|
|
|
|
2026-04-01 20:33:23 +08:00
|
|
|
|
public ParameterViewModel()
|
2026-03-25 21:34:41 +08:00
|
|
|
|
{
|
|
|
|
|
|
// 注入硬件服务(实际项目中可用依赖注入)
|
|
|
|
|
|
_hardwareService = new HardwareService();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 保存参数到硬件
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void SaveParameters()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 用户实现:调用硬件服务将 DeviceData 中的参数写入设备
|
|
|
|
|
|
// _hardwareService.SaveDeviceData(DeviceData);
|
|
|
|
|
|
CommunicationStatus = "参数已保存";
|
|
|
|
|
|
StatusColor = new SolidColorBrush(Colors.Green);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 从硬件读取参数
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void LoadParameters()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 用户实现:从硬件读取数据并更新 DeviceData
|
|
|
|
|
|
// var data = _hardwareService.LoadDeviceData();
|
|
|
|
|
|
// DeviceData = data;
|
|
|
|
|
|
CommunicationStatus = "参数已读取";
|
|
|
|
|
|
StatusColor = new SolidColorBrush(Colors.Green);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 复位
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void Reset()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 用户实现:调用硬件复位
|
|
|
|
|
|
// _hardwareService.Reset();
|
|
|
|
|
|
CommunicationStatus = "复位指令已发送";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 左眼开
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void OpenLeftEye()
|
|
|
|
|
|
{
|
|
|
|
|
|
// _hardwareService.OpenLeftEye();
|
|
|
|
|
|
CommunicationStatus = "左眼开启指令已发送";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 右眼开
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void OpenRightEye()
|
|
|
|
|
|
{
|
|
|
|
|
|
// _hardwareService.OpenRightEye();
|
|
|
|
|
|
CommunicationStatus = "右眼开启指令已发送";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 反转
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void Reverse()
|
|
|
|
|
|
{
|
|
|
|
|
|
// _hardwareService.ReverseMotor();
|
|
|
|
|
|
CommunicationStatus = "反转指令已发送";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 正转
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void Forward()
|
|
|
|
|
|
{
|
|
|
|
|
|
// _hardwareService.ForwardMotor();
|
|
|
|
|
|
CommunicationStatus = "正转指令已发送";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 导航命令(供用户自行实现页面跳转)
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void NavigateHome()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 用户实现:切换到主页视图
|
|
|
|
|
|
CommunicationStatus = "导航至主页";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void NavigateTest()
|
|
|
|
|
|
{
|
|
|
|
|
|
CommunicationStatus = "导航至测试界面";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void NavigateDataRecord()
|
|
|
|
|
|
{
|
|
|
|
|
|
CommunicationStatus = "导航至数据记录";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void NavigateRecordScreen()
|
|
|
|
|
|
{
|
|
|
|
|
|
CommunicationStatus = "导航至记录画面";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|