You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

369 lines
16 KiB

using SkiaSharp;
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Xml.Linq;
using TouchSocket.Core;
using TouchSocket.Sockets;
using static SunlightCentralizedControlManagement_SCCM_.WindowsView.ViewStep;
using static System.Net.WebRequestMethods;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Rebar;
namespace SunlightCentralizedControlManagement_SCCM_.View
{
/// <summary>
/// MonitorView.xaml 的交互逻辑
/// </summary>
public partial class MonitorView : UserControl
{
public MonitorView()
{
InitializeComponent();
CountDown();
}
private string machine;
private string workOrder;
private string dyelot;
private int machines_info=0;
public static string Sys_log;
private void Griddata_SelectionChanged(object sender, SelectionChangedEventArgs e)//设备列表
{
Stop.IsEnabled = true;
Insert.IsEnabled = false;
edit.IsEnabled = false;
Paused.IsEnabled = false;
Resume.IsEnabled = false;
Delete.IsEnabled = false;
Jump.IsEnabled = false;
MainWindowViewModel.TechnologicalProcess_bool = true;
int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量
if (rownum != -1)//判断鼠标定位是否有效
{
machine = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
workOrder = (Griddata.Columns[2].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
dyelot = (Griddata.Columns[3].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
machin_LOG.Text = Properties.Resources.Machine + ":" + machine + " " + Properties.Resources.WorkOrder + ":" + workOrder;
}
}
private void Gridstep_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Paused.IsEnabled = true;
MainWindowViewModel.TechnologicalProcess_bool = false;
int rownum = Gridstep.SelectedIndex;//获取鼠标选中行并定义变量
if (rownum != -1)//判断鼠标定位是否有效
{
ID = (Gridstep.Columns[2].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第0列,
Numder = (Gridstep.Columns[3].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第1列,
P1 = (Gridstep.Columns[6].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第6列,
P2 = (Gridstep.Columns[7].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第7列,
P3 = (Gridstep.Columns[8].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第8列,
P4 = (Gridstep.Columns[9].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第9列,
P5 = (Gridstep.Columns[10].GetCellContent(Gridstep.Items[rownum]) as TextBlock).Text;//定位第10列,
}
}
private void ListViewItem_DyeingMachine(object sender, MouseButtonEventArgs e)
{
machines_info = 0;
log.Visibility = Visibility.Visible;
Picture.Visibility = Visibility.Collapsed;
}//信息
private void ListViewItem_Conveyor(object sender, MouseButtonEventArgs e)
{
machines_info = 1;
log.Visibility = Visibility.Visible;
Picture.Visibility = Visibility.Collapsed;
}//输送
private void ListViewItem_Receipt(object sender, MouseButtonEventArgs e)
{
machines_info = 2;
log.Visibility = Visibility.Visible;
Picture.Visibility = Visibility.Collapsed;
}//单据
private void ListViewItem_Curve(object sender, MouseButtonEventArgs e)
{
log.Visibility = Visibility.Collapsed;
Picture.Visibility = Visibility.Visible;
Picture.Content = new View.CurveDiagram(true, "", "", "", workOrder);
machines_info = 3;
}//曲线
private void ListViewItem_Resume(object sender, MouseButtonEventArgs e)
{
if (!string.IsNullOrEmpty(machine))
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "CONTINUE");
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
}
Insert.IsEnabled = false;
edit.IsEnabled = false;
Paused.IsEnabled = false;
Resume.IsEnabled = false;
Delete.IsEnabled = false;
Jump.IsEnabled = false;
MainWindowViewModel.TechnologicalProcess_bool = true;
}//恢复
private void ListViewItem_Paused(object sender, MouseButtonEventArgs e)
{
if (!string.IsNullOrEmpty(machine))
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "PAUSE");
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
}
Insert.IsEnabled = true;
edit.IsEnabled = true;
Paused.IsEnabled = true;
Resume.IsEnabled = true;
Delete.IsEnabled = true;
Jump.IsEnabled = true;
}//暂停
private void ListViewItem_Stop(object sender, MouseButtonEventArgs e)
{
if (!string.IsNullOrEmpty(machine))
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "STOP");
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
}
}//停止
private void ListViewItem_edit(object sender, MouseButtonEventArgs e)
{
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
ViewStep viewstop = new ViewStep(Numder, P1, P2, P3, P4, P5);
viewstop.data = ID;
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(edit_ButtonClicked);
viewstop.ShowDialog();
}//编辑
string Numder = null;
string ID = null;
string P1 = "0", P2 = "0", P3 = "0", P4 = "0", P5 = "0";
private void edit_ButtonClicked(object sender, AddressUpdateEventArgs e)//编辑返回结果
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "EDIT");
dat_821.Add("StepID", e.StepID);
dat_821.Add("StepName", e.StepNAME);
dat_821.Add("ParameterName", e.PNAME);
dat_821.Add("Parameter1", e.P1);
dat_821.Add("Parameter2", e.P2);
dat_821.Add("Parameter3", e.P3);
dat_821.Add("Parameter4", e.P4);
dat_821.Add("Parameter5", e.P5);
dat_821.Add("ID", ID);
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
MainWindowViewModel.TechnologicalProcess_bool = true;
}
private void ListViewItem_Jump(object sender, MouseButtonEventArgs e)
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "JUMP");
dat_821.Add("ID", ID);
dat_821.Add("Numder", Numder);
dat_821.Add("P1", P1);
dat_821.Add("P2", P2);
dat_821.Add("P3", P3);
dat_821.Add("P4", P4);
dat_821.Add("P5", P5);
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
MainWindowViewModel.TechnologicalProcess_bool = true;
}//跳步
private void ListViewItem_Insert(object sender, MouseButtonEventArgs e)
{
ViewStep viewstop = new ViewStep(null, "0", "0", "0", "0", "0");
viewstop.data = ID;
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Insert_ButtonClicked);
viewstop.ShowDialog();
}//插入
private void Insert_ButtonClicked(object sender, AddressUpdateEventArgs e)//cr返回结果
{
MainWindowViewModel.TechnologicalProcess_bool = true;
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "INSERT");
dat_821.Add("StepID", e.StepID);
dat_821.Add("StepName", e.StepNAME);
dat_821.Add("ParameterName", e.PNAME);
dat_821.Add("Parameter1", e.P1);
dat_821.Add("Parameter2", e.P2);
dat_821.Add("Parameter3", e.P3);
dat_821.Add("Parameter4", e.P4);
dat_821.Add("Parameter5", e.P5);
dat_821.Add("ID", ID);
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
}
private void ListViewItem_Delete(object sender, MouseButtonEventArgs e)
{
if (!string.IsNullOrEmpty(machine))
{
Dictionary<string, object> dat_821 = new Dictionary<string, object>();
dat_821.Clear();
dat_821.Add("INSTRUCTION", "DELETE");
dat_821.Add("ID", ID);
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString()
});
MainWindowViewModel.TechnologicalProcess_bool = true;
}
}//删除
public void CountDown()
{
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick
{
Interval = TimeSpan.FromSeconds(1.5)//秒
};
timer1s.Tick += Tick_Event_1S;
timer1s.Start();
}//时间周期初始化
int Time_D = 0;
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
{
if (Paused.IsEnabled)
{
if (!Resume.IsEnabled)
{
Time_D++;
if (Time_D > 10)
{
Paused.IsEnabled = false;
MainWindowViewModel.TechnologicalProcess_bool = true;
}
}
}
else
{
Time_D=0;
}
if (!string.IsNullOrEmpty(machine))
{
try
{
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
int State_ = Convert.ToInt16(drEmployee.Field<object>("State"));
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
if ((State_ == 101) || (State_ == 201) || (State_ == 202) || (State_ == 309))//获得细节信息
{
if (machines_info == 0)
{
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC832" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
});
}//信息
else if (machines_info == 1)
{
}//输送状态
else if (machines_info == 2)
{
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC833" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
});
}//单据
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
{
ID = index,
DAT = "SC831" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
});
}
else
{
MainWindowViewModel.MachineLOG = null;
MainWindowViewModel.dt_TP.Clear();
}
}
catch (Exception )
{
MainWindowViewModel.MachineLOG = null;
MainWindowViewModel.dt_TP.Clear();
}//返回错误为空
}
}
}
}