using CommunityToolkit.Mvvm.ComponentModel;
|
using HslCommunication.Profinet.Siemens;
|
using PLCHelper;
|
using Plugin.CurrentSensorControl.Entity;
|
using System.Windows.Controls;
|
|
namespace Plugin.CurrentSensorControl
|
{
|
/// <summary>
|
/// BurnInOven.xaml 的交互逻辑
|
/// </summary>
|
[ObservableObject]
|
public partial class BurnInOven : UserControl
|
{
|
private BaseConfig config;
|
|
private static readonly string[] datas = new string[] { "_CoolerStatus", "_LEDLight", "_Req", "_SetTemp", "_SaveTemp", "_TempDown", "_TempUp", "_AvgTemp" };
|
|
[ObservableProperty]
|
private string header;
|
|
[ObservableProperty]
|
private string req;
|
[ObservableProperty]
|
private string reqStatus;
|
|
[ObservableProperty]
|
private string coolerStatus;
|
|
[ObservableProperty]
|
private string setTemp;
|
[ObservableProperty]
|
private string saveTemp;
|
[ObservableProperty]
|
private string tempDown;
|
[ObservableProperty]
|
private string tempUp;
|
[ObservableProperty]
|
private string avgTemp;
|
|
private bool lightStatus;
|
|
public bool LightStatus
|
{
|
get => lightStatus;
|
set
|
{
|
try
|
{
|
string name = $"Oven{ovenIndex + 1}_LEDLight";
|
if (S7Context.WriteData(api, name, value))
|
{
|
lightStatus = value;
|
OnPropertyChanged(nameof(lightStatus));
|
}
|
}
|
catch (Exception ex)
|
{
|
|
}
|
}
|
}
|
|
private int ovenIndex;
|
|
private SiemensS7Net api;
|
|
private int cellCount;
|
|
private BurnInCell[] cells;
|
|
public BurnInOven(int ovenIndex)
|
{
|
this.ovenIndex = ovenIndex;
|
config = BaseConfig.Instance;
|
this.cellCount = config.PositionCount;
|
this.cells = new BurnInCell[cellCount];
|
DataContext = this;
|
api = S7Context.Get($"1");
|
InitializeComponent();
|
InitGrid();
|
}
|
|
private void InitGrid()
|
{
|
mainGrid.Columns = config.PositionColumn;
|
for (int i = 0; i < cellCount; i++)
|
{
|
var cell = new BurnInCell(ovenIndex, i);
|
cells[i] = cell;
|
mainGrid.Children.Add(cell);
|
}
|
}
|
|
public void Refresh()
|
{
|
try
|
{
|
//Task[] allTask = new Task[cells.Length];
|
//for (int i = 0; i < cells.Length; i++)
|
//{
|
// var cell = cells[i];
|
// var task = Task.Factory.StartNew(() =>
|
// {
|
// cell.Refresh();
|
// });
|
// allTask[i] = task;
|
//}
|
//Task.WaitAll(allTask);
|
|
foreach (var cell in cells)
|
{
|
cell.Refresh();
|
}
|
|
string name;
|
object v;
|
foreach (var data in datas)
|
{
|
name = $"Oven{ovenIndex + 1}{data}";
|
if (S7Context.GetData(api, name, out v))
|
{
|
var val = v?.ToString();
|
if (data == "_LEDLight")
|
{
|
lightStatus = bool.Parse(val);
|
OnPropertyChanged("LightStatus");
|
}
|
else if (data == "_Req")
|
{
|
Req = val;
|
if (val == "0")
|
{
|
ReqStatus = "停止等待";
|
}
|
else if (val == "1")
|
{
|
ReqStatus = "加热启动";
|
}
|
else if (val == "2")
|
{
|
ReqStatus = "冷却启动";
|
}
|
}
|
else if (data == "_SetTemp")
|
{
|
SetTemp = val;
|
}
|
else if (data == "_SaveTemp")
|
{
|
SaveTemp = val;
|
}
|
else if (data == "_TempDown")
|
{
|
TempDown = val;
|
}
|
else if (data == "_TempUp")
|
{
|
TempUp = val;
|
}
|
else if (data == "_AvgTemp")
|
{
|
AvgTemp = val;
|
}
|
else if (data == "_CoolerStatus")
|
{
|
if (val == "1")
|
{
|
CoolerStatus = "运水";
|
}
|
else if (val == "2")
|
{
|
CoolerStatus = "吹水";
|
}
|
else if (val == "3")
|
{
|
CoolerStatus = "测压";
|
}
|
else if (val == "0")
|
{
|
CoolerStatus = "停止";
|
}
|
}
|
}
|
|
//;
|
//if (api.DoFctReadSingle(name, out string val, out _))
|
//{
|
// if (data == "_Req")
|
// {
|
// Req = val;
|
// if (val == "0")
|
// {
|
// ReqStatus = "停止等待";
|
// }
|
// else if (val == "1")
|
// {
|
// ReqStatus = "加热启动";
|
// }
|
// else if (val == "2")
|
// {
|
// ReqStatus = "冷却启动";
|
// }
|
// }
|
// else if (data == "_SetTemp")
|
// {
|
// SetTemp = val;
|
// }
|
// else if (data == "_SaveTemp")
|
// {
|
// SaveTemp = val;
|
// }
|
// else if (data == "_TempDown")
|
// {
|
// TempDown = val;
|
// }
|
// else if (data == "_TempUp")
|
// {
|
// TempUp = val;
|
// }
|
// else if (data == "_AvgTemp")
|
// {
|
// AvgTemp = val;
|
// }
|
//}
|
}
|
|
//if (api.Connec (out string errMsg))
|
//{
|
|
//}
|
//else
|
//{
|
// OPCContext.Connect($"Oven{ovenIndex}");
|
// Thread.Sleep(1000);
|
//}
|
}
|
catch (Exception ex)
|
{
|
|
}
|
}
|
|
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
|
{
|
var btn = sender as Button;
|
string name = $"Oven{ovenIndex + 1}_Cmd";
|
S7Context.WriteData(api, name, short.Parse(btn.Tag.ToString()));
|
//api.DoFctWriteSingle(name, btn.Tag.ToString(), out string errMsg);
|
}
|
|
private void Button_Click2(object sender, System.Windows.RoutedEventArgs e)
|
{
|
var btn = sender as Button;
|
string name = $"Oven{ovenIndex + 1}_CoolerStatus";
|
S7Context.WriteData(api, name, ushort.Parse(btn.Tag.ToString()));
|
//api.DoFctWriteSingle(name, btn.Tag.ToString(), out string errMsg);
|
}
|
}
|
}
|