using HMI.Core.Manager;
|
using HMI.UI.Util;
|
using PLCHelper;
|
using System.ComponentModel;
|
using System.Runtime.CompilerServices;
|
using System.Timers;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace Plugin.BurnIn
|
{
|
/// <summary>
|
/// Cooler.xaml 的交互逻辑
|
/// </summary>
|
public partial class Cooler : UserControl, INotifyPropertyChanged
|
{
|
#region ...
|
public virtual event PropertyChangedEventHandler PropertyChanged;
|
|
protected virtual void Set([CallerMemberName] string name = null)
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
}
|
|
protected void Set<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
|
{
|
old = @new;
|
if (propertyName != null)
|
{
|
Set(propertyName);
|
}
|
}
|
#endregion
|
|
public int index { get; private set; }
|
|
public string Title { get; set; }
|
|
private System.Timers.Timer timer;
|
|
public Cooler(int index)
|
{
|
DataContext = this;
|
this.index = index;
|
this.Title = $"第{index + 1}路水冷机";
|
InitializeComponent();
|
}
|
|
private ushort status;
|
public ushort Status
|
{
|
get => status;
|
set
|
{
|
Set(ref status, value);
|
}
|
}
|
|
private int totalTime;
|
|
private string labelContent = "吹水中";
|
public string LabelContent
|
{
|
get => labelContent;
|
set
|
{
|
Set(ref labelContent, value);
|
}
|
}
|
|
private void InitTimer(int time)
|
{
|
if (time <= 0)
|
{
|
time = 240;
|
}
|
totalTime = time;
|
LabelContent = $"吹水中\r\n剩{totalTime}s...";
|
timer = new System.Timers.Timer();
|
timer.Interval = 1000;
|
timer.Elapsed += Timer_Elapsed;
|
timer.Enabled = true;
|
}
|
|
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
|
{
|
try
|
{
|
timer.AutoReset = false;
|
if (totalTime > 0)
|
{
|
totalTime -= 1;
|
LabelContent = $"吹水中\r\n剩{totalTime}s...";
|
}
|
else
|
{
|
if (S7Context.WriteData("", $"Cooler{index + 1}_Status", 0, out string errMsg))
|
{
|
Status = 0;
|
Dispatcher.Invoke(() =>
|
{
|
startBtn.IsEnabled = true;
|
});
|
}
|
else
|
{
|
Dispatcher.Invoke(() =>
|
{
|
ToastHelper.Error(errMsg);
|
});
|
}
|
Release();
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
finally
|
{
|
if (timer?.Enabled == true) timer.AutoReset = true;
|
}
|
}
|
|
private void Start_Click(object sender, RoutedEventArgs e)
|
{
|
if (timer != null) return;
|
var btn = sender as Button;
|
|
int totalTime = 240;
|
|
try
|
{
|
var p = ParameterManager.GetCommonParameterByName("吹水时间")?.Value;
|
if (!string.IsNullOrEmpty(p)) totalTime = int.Parse(p);
|
}
|
catch (Exception ex)
|
{
|
|
}
|
|
if (MsgBoxHelper2.WarnChoose($"第 [{index + 1}] 路水冷机确定要{btn.Content}吗?") == MessageBoxResult.OK)
|
{
|
try
|
{
|
if (S7Context.WriteData("", $"Cooler{index + 1}_Status", 2, out string errMsg))
|
{
|
Status = 2;
|
InitTimer(totalTime);
|
btn.IsEnabled = false;
|
}
|
else
|
{
|
ToastHelper.Error(errMsg);
|
}
|
}
|
catch (Exception ex)
|
{
|
ToastHelper.Error(ex.Message);
|
}
|
}
|
}
|
|
private void Stop_Click(object sender, RoutedEventArgs e)
|
{
|
var btn = sender as Button;
|
|
if (MsgBoxHelper2.WarnChoose($"第 [{index + 1}] 路水冷机确定要{btn.Content}吗?") == MessageBoxResult.OK)
|
{
|
try
|
{
|
if (timer != null)
|
{
|
timer.Enabled = false;
|
timer.Dispose();
|
timer = null;
|
}
|
|
if (S7Context.WriteData("", $"Cooler{index + 1}_Status", 0, out string errMsg))
|
{
|
Status = 0;
|
startBtn.IsEnabled = true;
|
}
|
else
|
{
|
ToastHelper.Error(errMsg);
|
}
|
}
|
catch (Exception ex)
|
{
|
ToastHelper.Error(ex.Message);
|
}
|
}
|
}
|
|
public void Release()
|
{
|
if (timer != null)
|
{
|
timer.Enabled = false;
|
timer.Dispose();
|
timer = null;
|
}
|
}
|
}
|
}
|