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.
		
		
		
		
		
			
		
			
				
					
					
						
							423 lines
						
					
					
						
							18 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							423 lines
						
					
					
						
							18 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 VncSharpWpf; | |
| 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; | |
| using SunlightCentralizedControlManagement_SCCM_.UserClass; | |
| using System.Net.NetworkInformation; | |
| 
 | |
| namespace SunlightCentralizedControlManagement_SCCM_.View | |
| { | |
|     /// <summary> | |
|     /// MonitorView.xaml 的交互逻辑 | |
|     /// </summary> | |
|     public partial class MonitorView : UserControl | |
|     { | |
|         public MonitorView() | |
|         { | |
|             //DataContext = new MainWindowViewModel(); | |
|             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 async Task<bool> PingTest(string ip) | |
|         { | |
|             bool result = false; | |
|             Ping pingSender = new Ping(); | |
| 
 | |
|             try | |
|             { | |
|                 PingReply reply = await pingSender.SendPingAsync(ip, 3000); | |
| 
 | |
|                 if (reply.Status == IPStatus.Success) | |
|                 { | |
|                     result = true; | |
|                 } | |
|             } | |
|             catch (PingException) | |
|             { | |
|                 result = false; | |
|             } | |
|             return result; | |
|         } | |
|         private async void ListViewItem_Screen(object sender, MouseButtonEventArgs e) | |
|         { | |
|             machines_info = 1; | |
|             log.Visibility = Visibility.Visible; | |
|             Picture.Visibility = Visibility.Collapsed; | |
| 
 | |
|             RemoteDesktopWpf remoteDesktopWpf = new RemoteDesktopWpf(); | |
|             Picture.Content = remoteDesktopWpf; | |
| 
 | |
| 
 | |
|             DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First(); | |
|             string host = drEmployee.Field<string>("IP"); | |
|             int port = Convert.ToInt16(drEmployee.Field<int>("PORT")); | |
|             string password = "123456";//drEmployee.Field<string>("SYSKEY"); | |
|  | |
|             if (await PingTest(host)) | |
|             { | |
|                 if (!remoteDesktopWpf.IsConnected) | |
|                 { | |
|                     try | |
|                     {                        | |
|                         remoteDesktopWpf.VncPort = port; | |
|                         remoteDesktopWpf.Passwd = password; | |
|                         remoteDesktopWpf.Connect(host, true, false); | |
|                     } | |
|                     catch (Exception ex) | |
|                     { | |
|                         LogGing.ERRDATA(ex); | |
|                     } | |
|                 } | |
|             } | |
|         }//远程 | |
|         private void ListViewItem_Receipt(object sender, MouseButtonEventArgs e) | |
|         { | |
|             machines_info = 2; | |
|             log.Visibility = Visibility.Visible; | |
|             Picture.Visibility = Visibility.Collapsed; | |
|             DyelotView dyelotView = new DyelotView(); | |
|             dyelotView.Dyelot(workOrder); | |
|             Picture.Content = dyelotView; | |
|         }//单据 | |
|         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", "ID='" + 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", "ID='" + 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", "ID='" + 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", "ID='" + 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", "ID='" + 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", "ID='" + 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", "ID='" + index + "'") + dat_821.ToJsonString()  | |
|                 }); | |
| 
 | |
|                 MainWindowViewModel.TechnologicalProcess_bool = true; | |
|             } | |
|         }//删除 | |
|  | |
|         public void CountDown() | |
|         { | |
|             DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick | |
|             { | |
|                 Interval = TimeSpan.FromSeconds(2)//秒 | |
|             }; | |
|             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", "ID='" + 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", "ID='" + index + "'") | |
|                             }); | |
|                         }//单据               | |
|  | |
|                         MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString | |
|                         { | |
|                             ID = index, | |
|                             DAT = "SC831" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") | |
|                         }); | |
|                     } | |
|                     else | |
|                     { | |
|                         MainWindowViewModel.MachineLOG = null; | |
|                         MainWindowViewModel.dt_TP.Clear(); | |
|                     }                   | |
|                 } | |
|                 catch (Exception )  | |
|                 { | |
|                     MainWindowViewModel.MachineLOG = null; | |
|                     MainWindowViewModel.dt_TP.Clear();  | |
|                 }//返回错误为空 | |
|             } | |
|         } | |
|         | |
|          | |
|     } | |
|     | |
| }
 | |
| 
 |