using Panuon.WPF.UI;
|
using PLCHelper;
|
using System.Timers;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace Plugin.BurnIn
|
{
|
/// <summary>
|
/// CoolerStatus.xaml 的交互逻辑
|
/// </summary>
|
public partial class CoolerStatus : WindowX
|
{
|
private int ovenIndex;
|
private int columns;
|
private System.Timers.Timer timer;
|
private List<Cooler> coolers = new List<Cooler>();
|
|
public CoolerStatus(int ovenIndex, int columns, string title)
|
{
|
DataContext = this;
|
this.ovenIndex = ovenIndex;
|
this.columns = columns;
|
Title = title;
|
timer = new System.Timers.Timer();
|
timer.Interval = 1000;
|
timer.Elapsed += Timer_Elapsed;
|
InitializeComponent();
|
RefreshUI();
|
RefreshStatus();
|
}
|
|
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
|
{
|
RefreshStatus();
|
}
|
|
private void RefreshStatus()
|
{
|
foreach (var cooler in coolers)
|
{
|
try
|
{
|
if (S7Context.GetData("", $"Cooler{cooler.index + 1}_Status", out object val))
|
{
|
cooler.Dispatcher.Invoke(() =>
|
{
|
cooler.Status = (ushort)val;
|
});
|
}
|
}
|
catch (Exception ex)
|
{
|
|
}
|
}
|
}
|
|
private void RefreshUI()
|
{
|
mainGrid.Children.Clear();
|
mainGrid.ColumnDefinitions.Clear();
|
|
for (int i = 0; i < this.columns; i++)
|
{
|
ColumnDefinition newCol = new ColumnDefinition();
|
newCol.Width = new GridLength(1, GridUnitType.Star);
|
mainGrid.ColumnDefinitions.Add(newCol);
|
var cooler = new Cooler(ovenIndex * columns + i);
|
Grid.SetColumn(cooler, i);
|
mainGrid.Children.Add(cooler);
|
coolers.Add(cooler);
|
}
|
}
|
|
private void WindowX_Closed(object sender, EventArgs e)
|
{
|
timer.Enabled = false;
|
timer.Dispose();
|
|
foreach (var cooler in coolers)
|
{
|
cooler.Release();
|
}
|
}
|
|
private void WindowX_Loaded(object sender, RoutedEventArgs e)
|
{
|
timer.Enabled = true;
|
this.Loaded -= WindowX_Loaded;
|
}
|
}
|
}
|