using log4net;
|
using Plugin.DeviceDebug.Entity;
|
using System;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace Plugin.DeviceDebug.Panels
|
{
|
/// <summary>
|
/// PowerSupplyDebugPanel.xaml 的交互逻辑
|
/// </summary>
|
public partial class PowerSupplyDebugPanel : UserControl
|
{
|
private static readonly ILog log = LogManager.GetLogger(typeof(PowerSupplyDebugPanel));
|
|
/// <summary>
|
/// 是否为维护模式(控制输入可用性)
|
/// </summary>
|
public static readonly DependencyProperty IsMaintenanceModeProperty =
|
DependencyProperty.Register(nameof(IsMaintenanceMode), typeof(bool), typeof(PowerSupplyDebugPanel),
|
new PropertyMetadata(false));
|
|
public bool IsMaintenanceMode
|
{
|
get => (bool)GetValue(IsMaintenanceModeProperty);
|
set => SetValue(IsMaintenanceModeProperty, value);
|
}
|
|
/// <summary>
|
/// 命令执行事件
|
/// </summary>
|
public event EventHandler<DebugCommand> OnCommandExecute;
|
|
public PowerSupplyDebugPanel()
|
{
|
InitializeComponent();
|
}
|
|
/// <summary>
|
/// 更新实测值
|
/// </summary>
|
public void UpdateReadback(string voltage, string current, DateTime time)
|
{
|
try
|
{
|
measuredVoltage.Text = $"{voltage} V";
|
measuredCurrent.Text = $"{current} A";
|
lastUpdateTime.Text = time.ToString("yyyy-MM-dd HH:mm:ss");
|
}
|
catch (Exception ex)
|
{
|
log.Error("更新实测值失败", ex);
|
}
|
}
|
|
private void ApplyBtn_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (!IsMaintenanceMode)
|
{
|
MessageBox.Show("当前为只读模式,无法执行设置操作", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
return;
|
}
|
|
// 解析输入值
|
if (!double.TryParse(voltageInput.Text, out double voltage))
|
{
|
MessageBox.Show("电压值格式不正确", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
return;
|
}
|
|
if (!double.TryParse(currentInput.Text, out double currentLimit))
|
{
|
MessageBox.Show("电流值格式不正确", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
return;
|
}
|
|
bool output = outputToggle.IsChecked == true;
|
|
// 创建命令
|
var command = new PowerSetCommand
|
{
|
Voltage = voltage,
|
CurrentLimit = currentLimit,
|
Output = output
|
};
|
|
// 触发命令执行事件
|
OnCommandExecute?.Invoke(this, command);
|
|
log.Info($"发送电源设置命令: V={voltage}, I={currentLimit}, Output={output}");
|
}
|
catch (Exception ex)
|
{
|
log.Error("发送电源设置命令失败", ex);
|
MessageBox.Show($"发送命令失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
}
|
}
|
|
private void MeasureBtn_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
// 创建测量命令
|
var command = new PowerMeasureCommand();
|
|
// 触发命令执行事件
|
OnCommandExecute?.Invoke(this, command);
|
|
log.Info("发送电源测量命令");
|
}
|
catch (Exception ex)
|
{
|
log.Error("发送电源测量命令失败", ex);
|
MessageBox.Show($"发送命令失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
}
|
}
|
|
private void OutputToggle_Changed(object sender, RoutedEventArgs e)
|
{
|
// ToggleButton 状态变化时的视觉反馈已在 XAML Style 中处理
|
}
|
}
|
}
|