| using IWareCommon.Enum.Chaidie; | 
| using IWareCommon.Enum.Common; | 
| using IWareCommon.Enum.Rgv; | 
| using IWareCommon.Enum.Srm; | 
| using IWareCommon.Help; | 
| using SiemensWCS.ControlCenterService; | 
| using SiemensWCS.ORM; | 
| using SiemensWCS.Properties; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.ComponentModel; | 
| using System.Data; | 
| using System.Drawing; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading; | 
| using System.Threading.Tasks; | 
| using System.Windows.Forms; | 
|   | 
| namespace SiemensWCS | 
| { | 
|     public partial class WCSFrom : Form | 
|     { | 
|   | 
|         #region 线程 | 
|         const int cycleDelay = 1010;//各个线程的延迟毫秒数 | 
|         Thread tskGetSrm1Info;//获取堆垛机1信息的线程 | 
|         Thread tskGetSrm2Info;//获取堆垛机2信息的线程 | 
|         Thread tskSetSrmLable;//各种堆垛机工作状态的显示的控制线程  | 
|         Thread tskGetSrmConveyorInfo;//获取立库输送线的任务完成等信息的线程 | 
|         Thread tskSetSrmTransLable;//各种立库输送机工作状态的显示的控制线程  | 
|         Thread tskGetRgv1Info;//获取Rgv1信息的线程 | 
|         Thread tskGetRgv2Info;//获取Rgv2信息的线程 | 
|         Thread tskSetRgvLable;//各种Rgv工作状态的显示的控制线程  | 
|         Thread tskGetChaiDie1Info;//获取拆叠机1信息的线程 | 
|         Thread tskGetChaiDie2Info;//获取拆叠机2信息的线程 | 
|         Thread tskGetChaiDie3Info;//获取拆叠机3信息的线程 | 
|         Thread tskGetChaiDie4Info;//获取拆叠机4信息的线程 | 
|         Thread tskSetChaiDieLable;//各种拆叠机工作状态的显示的控制线程  | 
|         ControlCenterWcfServiceClient ccclient; | 
|         #endregion | 
|   | 
|         #region 设备变量 | 
|         public static SrmInfoEntity srm1Info, srm2Info; | 
|         public static ConveyorInfoEntity srmConveyorInfo; | 
|         public static RgvInfoEntity rgv1, rgv2; | 
|         public static ChaiDieInfoEntity chaidie1, chaidie2, chaidie3, chaidie4; | 
|         #endregion | 
|   | 
|         public WCSFrom() | 
|         { | 
|             InitializeComponent(); | 
|   | 
|             CheckForIllegalCrossThreadCalls = false; | 
|             srm1Info = new SrmInfoEntity(); | 
|             srm2Info = new SrmInfoEntity(); | 
|   | 
|             rgv1 = new RgvInfoEntity(); | 
|             rgv2 = new RgvInfoEntity(); | 
|   | 
|             chaidie1 = new ChaiDieInfoEntity(); | 
|             chaidie2 = new ChaiDieInfoEntity(); | 
|             chaidie3 = new ChaiDieInfoEntity(); | 
|             chaidie4 = new ChaiDieInfoEntity(); | 
|   | 
|             srmConveyorInfo = new ConveyorInfoEntity(); | 
|   | 
|             //各种工作状态的显示的控制 | 
|             tskSetSrmLable = new Thread(SrmRead_Label); | 
|             tskSetSrmLable.Start(); | 
|             tskGetSrm1Info = new Thread(GetSrm1Info); | 
|             tskGetSrm1Info.Start(); | 
|             tskGetSrm2Info = new Thread(GetSrm2Info); | 
|             tskGetSrm2Info.Start(); | 
|             tskGetSrmConveyorInfo = new Thread(GetSrmConveyorInfo); | 
|             tskGetSrmConveyorInfo.Start(); | 
|             tskSetSrmTransLable = new Thread(SetSrmTransLable); | 
|             tskSetSrmTransLable.Start(); | 
|             tskGetRgv1Info = new Thread(GetRgvInfo1); | 
|             tskGetRgv1Info.Start(); | 
|             tskGetRgv2Info = new Thread(GetRgvInfo2); | 
|             tskGetRgv2Info.Start(); | 
|             tskSetRgvLable = new Thread(SetRgvLable); | 
|             tskSetRgvLable.Start(); | 
|             tskGetChaiDie1Info = new Thread(GetChaiDie1Info); | 
|             tskGetChaiDie1Info.Start(); | 
|             tskGetChaiDie2Info = new Thread(GetChaiDie2Info); | 
|             tskGetChaiDie2Info.Start(); | 
|             tskGetChaiDie3Info = new Thread(GetChaiDie3Info); | 
|             tskGetChaiDie3Info.Start(); | 
|             tskGetChaiDie4Info = new Thread(GetChaiDie4Info); | 
|             tskGetChaiDie4Info.Start(); | 
|             tskSetChaiDieLable = new Thread(SetChaiDieLable); | 
|             tskSetChaiDieLable.Start(); | 
|         } | 
|   | 
|   | 
|         #region 堆垛机相关 | 
|         /// <summary> | 
|         /// 循环刷新1号堆垛机信息 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void GetSrm1Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         opcClinet.Open(); | 
|                         string msg = ""; | 
|                         srm1Info = opcClinet.GetStackInfo("Srm1", out msg); | 
|                     } | 
|                     Thread.Sleep(1010); | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 循环刷新2号堆垛机信息 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void GetSrm2Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         srm2Info = opcClinet.GetStackInfo("Srm2", out msg); | 
|                     } | 
|   | 
|                     Thread.Sleep(1010); | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 给前端UI中的SrmLable赋值 | 
|         /// </summary> | 
|         private void SrmRead_Label() | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(1010); | 
|                 try | 
|                 { | 
|                     SetSrm1UI(); | 
|   | 
|                     SetSrm2UI(); | 
|                 } | 
|                 catch (Exception ex) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "SrmRead_Label:{0}", ex.ToString()); | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 设置Srm2的UI | 
|         /// </summary> | 
|         private void SetSrm2UI() | 
|         { | 
|             lbSrm2Col.Text = "当前列:" + srm2Info.PosX; | 
|             lbSrm2Layer.Text = "当前层:" + srm2Info.PosY; | 
|   | 
|             lbSrm2WorkMode.Text = "设备模式:" + (srm2Info.Mode); | 
|             if (srm2Info.State != "7") | 
|                 lbSrm2WorkState.Text = "工作状态:" + srm2Info.State; | 
|             else | 
|                 lbSrm2WorkState.Text = "工作状态:报警空间但有货"; | 
|             //lbSrm2SourcePlace.Text = "起始位: " + srm2Info.WSourcePosX + srm2Info.WSourcePosY + srm2Info.WSourcePosZ; | 
|             lbSrm2SourcePlace.Text = "起始位: " + srm2Info.PosZmm + srm2Info.PosYmm + srm2Info.PosXmm; | 
|             lbSrm2ToPlace.Text = "目标位: " + srm2Info.WDestinationPosX + srm2Info.WDestinationPosY + srm2Info.WDestinationPosZ; | 
|             lbSrm2TaskId.Text = "任务号: " + srm2Info.TaskNo; | 
|             lab2TaskFinsh.Text = "任务是否完成: " + srm2Info.TaskFinish; | 
|             lab2Ack.Text = "任务是否接收成功: " + srm2Info.WAck; | 
|   | 
|             labSrm2Alerm.Text = "报警:" + srm2Info.Alarm; | 
|             labSrm2Heart.Text = "心跳:" + srm2Info.HandShake; | 
|             labSrm2IsOnLine.Text = "在线:" + srm2Info.IsOnline; | 
|             if (!srm2Info.Alarm && srm2Info.IsOnline)//正常状态 | 
|             { | 
|                 lbSrm2Alert.Text = string.Empty; | 
|                 lbSrm2Alert.ForeColor = Color.SkyBlue; | 
|                 lbSrm2Alert.BackColor = Color.Transparent; | 
|                 lbSrm2State.ForeColor = Color.Maroon; | 
|                 lbSrm2State.BackColor = Control.DefaultBackColor; | 
|             } | 
|             //处于报警状态下 | 
|             if (srm2Info.Alarm || !srm2Info.IsOnline) | 
|             { | 
|                 lbSrm2Alert.Text = srm2Info.AlarmNumber; | 
|                 lbSrm2Alert.ForeColor = Color.White; | 
|                 lbSrm2Alert.BackColor = Color.Red; | 
|                 lbSrm2State.ForeColor = Color.White; | 
|                 lbSrm2State.BackColor = Color.Red; | 
|             } | 
|         } | 
|   | 
|         private void SetSrm1UI() | 
|         { | 
|             lbSrm1Col.Text = "当前列:" + srm1Info.PosX; | 
|             lbSrm1Layer.Text = "当前层:" + srm1Info.PosY; | 
|   | 
|             lbSrm1WorkMode.Text = "设备模式:" + (srm1Info.Mode); | 
|             if (srm1Info.State != "7") | 
|                 lbSrm1WorkState.Text = "工作状态:" + srm1Info.State; | 
|             else | 
|                 lbSrm1WorkState.Text = "工作状态:报警空间但有货"; | 
|             lbSrm1SourcePlace.Text = "起始位: " + srm1Info.PosZmm + srm1Info.PosYmm + srm1Info.PosXmm; | 
|             //lbSrm1SourcePlace.Text = "起始位: " + srm1Info.WSourcePosX + srm1Info.WSourcePosY + srm1Info.WSourcePosZ; | 
|             lbSrm1ToPlace.Text = "目标位: " + srm1Info.WDestinationPosX + srm1Info.WDestinationPosY + srm1Info.WDestinationPosZ; | 
|             lbSrm1TaskId.Text = "任务号: " + srm1Info.TaskNo; | 
|             lab1TaskFinsh.Text = "任务是否完成: " + srm1Info.TaskFinish; | 
|             lab1Ack.Text = "任务是否接收成功: " + srm1Info.WAck; | 
|             labSrm1Alerm.Text = "报警:" + srm1Info.Alarm; | 
|             labSrm1Heart.Text = "心跳:" + srm1Info.HandShake; | 
|             labSrm1IsOnLine.Text = "在线:" + srm1Info.IsOnline; | 
|             if (!srm1Info.Alarm && srm1Info.IsOnline) | 
|             { | 
|                 lbSrm1Alert.Text = string.Empty; | 
|                 lbSrm1Alert.ForeColor = Color.SkyBlue; | 
|                 lbSrm1Alert.BackColor = Color.Transparent; | 
|                 lbSrm1State.ForeColor = Color.Maroon; | 
|                 lbSrm1State.BackColor = Control.DefaultBackColor; | 
|             } | 
|             //处于报警状态下 | 
|             if (srm1Info.Alarm || !srm1Info.IsOnline) | 
|             { | 
|                 lbSrm1Alert.Text = srm1Info.AlarmNumber; | 
|                 lbSrm1Alert.ForeColor = Color.White; | 
|                 lbSrm1Alert.BackColor = Color.Red; | 
|                 lbSrm1State.ForeColor = Color.White; | 
|                 lbSrm1State.BackColor = Color.Red; | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 堆垛机1发送任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm1Send_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     var sourcePlce = tB_Srm1SourcePlace.Text.Trim(); | 
|                     var toPlace = tB_Srm1ToPlace.Text.Trim(); | 
|                     if (!IsNumeric(tbSrm1TaskId.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     int palltype = 1; | 
|                     if (cmb1PallTYpe.Text == "大托盘") | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     int height = 1; | 
|                     switch (cb1Height.Text) | 
|                     { | 
|                         case "一档": | 
|                             height = 1; | 
|                             break; | 
|                         case "二档": | 
|                             height = 2; | 
|                             break; | 
|                         case "三档": | 
|                             height = 1; | 
|                             break; | 
|                         case "四档": | 
|                             height = 1; | 
|                             break; | 
|   | 
|                     } | 
|                     bool returnVal = opcClinet.SendManualSrmTask(EDevName.Srm1.ToString(), sourcePlce, toPlace, 1, int.Parse(tbSrm1TaskId.Text.Trim()), palltype, height); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                         tB_Srm1SourcePlace.Clear(); | 
|                         tB_Srm1ToPlace.Clear(); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|                 tB_Srm1SourcePlace.Focus(); | 
|                 tB_Srm1SourcePlace.SelectAll(); | 
|             })); | 
|             pc.Show(); | 
|         } | 
|         /// <summary> | 
|         /// 校验输入的库位ID是否符合格式 | 
|         /// </summary> | 
|         /// <param name="str">库位号</param> | 
|         /// <returns></returns> | 
|         private bool IsNumeric(string str) | 
|         { | 
|             try | 
|             { | 
|                 int place = int.Parse(str); | 
|                 return true; | 
|             } | 
|             catch (Exception) | 
|             { | 
|                 return false; | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 1号堆垛机删除任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm1Delete_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     opcClinet.SendDeleteSrmTask(EDevName.Srm1.ToString(), int.Parse(tbSrm1TaskId.Text.Trim())); | 
|                 } | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 1 号堆垛机发送移动任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm1Move_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     if (!IsNumeric(tbSrm1TaskId.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     bool returnVal = opcClinet.SendManualMoveSrmTask(EDevName.Srm1.ToString(), int.Parse(tbSrm1TaskId.Text.Trim()), tB_Srm1SourcePlace.Text.Trim(), tB_Srm1ToPlace.Text.Trim()); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码:" + returnVal); | 
|                     } | 
|                 } | 
|             })); | 
|             pc.Show(); | 
|         } | 
|         /// <summary> | 
|         /// 1号堆垛机急停 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm1EStop_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendStopSrm(EDevName.Srm1.ToString()); | 
|             } | 
|         } | 
|   | 
|         private void tB_Srm1SourcePlace_KeyPress(object sender, KeyPressEventArgs e) | 
|         { | 
|             if (e.KeyChar == (char)Keys.Enter) | 
|                 tB_Srm1ToPlace.Focus(); | 
|         } | 
|         /// <summary> | 
|         /// 撤销1号堆垛机报警 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm1RlsAlert_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendResolveSrmAlarm(EDevName.Srm1.ToString()); | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 2号堆垛机发送任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm2Send_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     var sourcePlce = tB_Srm2SourcePlace.Text.Trim(); | 
|                     var toPlace = tB_Srm2ToPlace.Text.Trim(); | 
|                     if (!IsNumeric(tbSrm2TaskId.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     int palltype = 1; | 
|                     if (cb2PallType.Text == "大托盘") | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     int height = 1; | 
|                     switch (cb2Height.Text) | 
|                     { | 
|                         case "一档": | 
|                             height = 1; | 
|                             break; | 
|                         case "二档": | 
|                             height = 2; | 
|                             break; | 
|                         case "三档": | 
|                             height = 3; | 
|                             break; | 
|                         case "四档": | 
|                             height = 4; | 
|                             break; | 
|   | 
|                     } | 
|                     bool returnVal = opcClinet.SendManualSrmTask(EDevName.Srm2.ToString(), sourcePlce, toPlace, 1, int.Parse(tbSrm2TaskId.Text.Trim()), palltype, height); | 
|                     if (returnVal) | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                         tB_Srm2SourcePlace.Clear(); | 
|                         tB_Srm2ToPlace.Clear(); | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码:" + returnVal); | 
|                     } | 
|                 } | 
|   | 
|                 tB_Srm2SourcePlace.Focus(); | 
|                 tB_Srm2SourcePlace.SelectAll(); | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|         /// <summary> | 
|         /// 2号堆垛机发送移动任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm2Move_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     if (!IsNumeric(tbSrm2TaskId.Text.Trim())) | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误"); | 
|                         return; | 
|                     } | 
|                     int palltype = 1; | 
|                     if (cb2PallType.Text == "大托盘") | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     int height = 1; | 
|                     switch (cb2Height.Text) | 
|                     { | 
|                         case "一档": | 
|                             height = 1; | 
|                             break; | 
|                         case "二档": | 
|                             height = 1; | 
|                             break; | 
|                         case "三档": | 
|                             height = 1; | 
|                             break; | 
|                         case "四档": | 
|                             height = 1; | 
|                             break; | 
|   | 
|                     } | 
|                     bool returnVal = opcClinet.SendManualMoveSrmTask(EDevName.Srm2.ToString(), int.Parse(tbSrm2TaskId.Text.Trim()), tB_Srm2SourcePlace.Text.Trim(), tB_Srm2ToPlace.Text.Trim()); | 
|                     if (returnVal) | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal.ToString()); | 
|                     } | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|         /// <summary> | 
|         /// 2号堆垛机急停 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm2EStop_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendStopSrm(EDevName.Srm2.ToString()); | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 2号堆垛机解除报警 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm2RlsAlert_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendResolveSrmAlarm(EDevName.Srm2.ToString()); | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 2号堆垛机删除任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrm2Delete_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     bool b1 = opcClinet.SendDeleteSrmTask(EDevName.Srm2.ToString(), int.Parse(tbSrm2TaskId.Text.Trim())); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void tB_Srm2SourcePlace_KeyPress(object sender, KeyPressEventArgs e) | 
|         { | 
|             if (e.KeyChar == (char)Keys.Enter) | 
|                 tB_Srm2ToPlace.Focus(); | 
|   | 
|         } | 
|   | 
|         private void btnSrm1Confirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmSrmTaskFinish | 
|                             (EDevName.Srm1.ToString())) | 
|                     { | 
|                         tbSrm1TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|             })); | 
|             pc.Show(); | 
|         } | 
|   | 
|         private void btnSrm2Confirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmSrmTaskFinish | 
|                             (EDevName.Srm2.ToString())) | 
|                     { | 
|                         tbSrm2TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|         #endregion | 
|   | 
|         #region RGV相关的 | 
|         /// <summary> | 
|         /// 获取RGV2的信息 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void GetRgvInfo2(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         rgv2 = opcClinet.GetRGVInfo(EDevName.Rgv2.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 获取RGV1信息 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void GetRgvInfo1(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         rgv1 = opcClinet.GetRGVInfo(EDevName.Rgv1.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 设置RGV显示线程 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void SetRgvLable(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     SetRgv1UI(); | 
|   | 
|                     SetRgv2UI(); | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 设置RGV1相关显示 | 
|         /// </summary> | 
|         private void SetRgv1UI() | 
|         { | 
|             lbRgv1_Y.Text = "当前行走位置: " + rgv1.RgvPosition; | 
|             lbRgv1_X.Text = "当前区域位置: " + rgv1.SPos; | 
|             lbRgv1WorkState.Text = "工作状态: " + rgv1.State; | 
|             lbRgv1TaskId.Text = "任务号: " + rgv1.TaskNo; | 
|             lbRgv1Alert.Text = rgv1.Alarm; | 
|             lbRgv1Barcode.Text = "是否有货:" + rgv1.AlarmCode; | 
|             lbRgv1Mode.Text = "模  式:" + rgv1.Mode; | 
|             lbRgv1TaskFinish.Text = "任务完成:" + rgv1.TaskFinish; | 
|             labRGV1Heaert.Text = "心跳:" + rgv1.HandShake; | 
|             labRgv1Isonline.Text = "在线:" + rgv1.IsOnline; | 
|             labRgv1Alerm.Text = "报警:" + rgv1.Alarm; | 
|             if (rgv1.Alarm == "正常" && rgv1.IsOnline == "在线") | 
|             { | 
|                 lbRgv1Alert.Text = string.Empty; | 
|                 lbRgv1Alert.ForeColor = Color.SkyBlue; | 
|                 lbRgv1Alert.BackColor = Color.Transparent; | 
|                 label3.ForeColor = Color.Maroon; | 
|                 label3.BackColor = Control.DefaultBackColor; | 
|             } | 
|             //处于报警状态下 | 
|             if (rgv1.Alarm == "告警" || rgv1.IsOnline == "离线") | 
|             { | 
|                 lbRgv1Alert.Text = srm1Info.AlarmNumber; | 
|                 lbRgv1Alert.ForeColor = Color.White; | 
|                 lbRgv1Alert.BackColor = Color.Red; | 
|                 label3.ForeColor = Color.White; | 
|                 label3.BackColor = Color.Red; | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 设置RGV2相关显示 | 
|         /// </summary> | 
|         private void SetRgv2UI() | 
|         { | 
|             lbRgv2_Y.Text = "当前行走位置: " + rgv2.RgvPosition; | 
|             lbRgv2_X.Text = "当前区域位置: " + rgv2.SPos; | 
|             lbRgv2WorkState.Text = "工作状态: " + rgv2.State; | 
|             lbRgv2TaskId.Text = "任务号: " + rgv2.TaskNo; | 
|             lbRgv2Alert.Text = rgv2.Alarm; | 
|             lbRgv2Barcode.Text = "是否有货:" + rgv2.AlarmCode; | 
|             lbRgv2Mode.Text = "模  式:" + rgv2.Mode; | 
|             lbRgv2TaskFinish.Text = "任务完成:" + rgv2.TaskFinish; | 
|             labRGV2Heaert.Text = "心跳:" + rgv2.HandShake; | 
|             labRgv2Isonline.Text = "在线:" + rgv2.IsOnline; | 
|             labRgv2Alerm.Text = "报警:" + rgv2.Alarm; | 
|             if (rgv2.Alarm == "正常" && rgv2.IsOnline == "在线") | 
|             { | 
|                 lbRgv2Alert.Text = string.Empty; | 
|                 lbRgv2Alert.ForeColor = Color.SkyBlue; | 
|                 lbRgv2Alert.BackColor = Color.Transparent; | 
|                 label16.ForeColor = Color.Maroon; | 
|                 label16.BackColor = Control.DefaultBackColor; | 
|             } | 
|             //处于报警状态下 | 
|             if (rgv2.Alarm == "告警" || rgv2.IsOnline == "离线") | 
|             { | 
|                 lbRgv2Alert.Text = srm1Info.AlarmNumber; | 
|                 lbRgv2Alert.ForeColor = Color.White; | 
|                 lbRgv2Alert.BackColor = Color.Red; | 
|                 label16.ForeColor = Color.White; | 
|                 label16.BackColor = Color.Red; | 
|             } | 
|         } | 
|   | 
|         private void btnRgv1TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     var sourcePlce = tbRgv1SourcePlace.Text.Trim(); | 
|                     var toPlace = tbRgv1ToPlace.Text.Trim(); | 
|                     string type = cmb1PallTYpe.Text; | 
|                     int palltype = 1; | 
|                     if (type == "小托盘") | 
|                     { | 
|                         palltype = 1; | 
|                     } | 
|                     else | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     if (!IsNumeric(tbRgv1TaskNo.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     bool returnVal = opcClinet.SendRGVTask(EDevName.Rgv1.ToString(), int.Parse(tbRgv1TaskNo.Text.Trim()), sourcePlce, toPlace, palltype); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                         tbRgv1SourcePlace.Clear(); | 
|                         tbRgv1ToPlace.Clear(); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|                 tbRgv1SourcePlace.Focus(); | 
|                 tbRgv1SourcePlace.SelectAll(); | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv1TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmRGVTaskFinish | 
|                             (EDevName.Rgv1.ToString())) | 
|                     { | 
|                         tbRgv1TaskNo.Clear(); | 
|                         tbRgv1TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv1RelAlerm_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendResolveRGVAlarm(EDevName.Rgv1.ToString()); | 
|             } | 
|         } | 
|   | 
|         private void btnRgv1TaskDelete_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     opcClinet.SendDeleteRGVTask(EDevName.Rgv1.ToString(), int.Parse(tbRgv1TaskId.Text.Trim())); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv1Stop_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendStopRGV(EDevName.Rgv1.ToString()); | 
|             } | 
|         } | 
|   | 
|         private void btnRgv2TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     var sourcePlce = tbRgv2SourcePlace.Text.Trim(); | 
|                     var toPlace = tbRgv2ToPlace.Text.Trim(); | 
|                     string type = cmd2PallType.Text; | 
|                     int palltype = 1; | 
|                     if (type == "小托盘") | 
|                     { | 
|                         palltype = 1; | 
|                     } | 
|                     else | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     if (!IsNumeric(tbRgv2TaskNo.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     bool returnVal = opcClinet.SendRGVTask(EDevName.Rgv2.ToString(), int.Parse(tbRgv2TaskNo.Text.Trim()), sourcePlce, toPlace, palltype); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                         tbRgv2SourcePlace.Clear(); | 
|                         tbRgv2ToPlace.Clear(); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|                 tbRgv2SourcePlace.Focus(); | 
|                 tbRgv2SourcePlace.SelectAll(); | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv2TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmRGVTaskFinish | 
|                             (EDevName.Rgv2.ToString())) | 
|                     { | 
|                         tbRgv2TaskNo.Clear(); | 
|                         tbRgv2TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv2RelAlerm_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendResolveRGVAlarm(EDevName.Rgv2.ToString()); | 
|             } | 
|         } | 
|   | 
|         private void btnRgv2TaskDelete_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     opcClinet.SendDeleteRGVTask(EDevName.Rgv2.ToString(), int.Parse(tbRgv2TaskId.Text.Trim())); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnRgv2Stop_Click(object sender, EventArgs e) | 
|         { | 
|             using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|             { | 
|                 opcClinet.SendStopRGV(EDevName.Rgv2.ToString()); | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         #region 拆叠机相关的 | 
|   | 
|         private void GetChaiDie4Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         chaidie4 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei4.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         private void GetChaiDie3Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         chaidie3 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei3.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         private void GetChaiDie2Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         chaidie2 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei2.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         private void GetChaiDie1Info(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         chaidie1 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei1.ToString(), out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         private void SetChaiDieLable(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     SetChaiDie1UI(); | 
|   | 
|                     SetChaiDie2UI(); | 
|   | 
|                     SetChaiDie3UI(); | 
|   | 
|                     SetChaiDie4UI(); | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         private void SetChaiDie4UI() | 
|         { | 
|             lbChaiDie4Statu.Text = "设备状态: " + chaidie4.State; | 
|             lbChaiDie4Mode.Text = "设备模式: : " + chaidie4.Mode; | 
|             lbChaiDie4Alerm.Text = "是否有报警: " + chaidie4.Alarm; | 
|             lbChaiDie4AlermCode.Text = "报警代码: " + chaidie4.RAlarmCode; | 
|             lbChaiDie4IsFull.Text = "是否满盘: " + chaidie4.EmptyStatus; | 
|   | 
|         } | 
|   | 
|         private void SetChaiDie3UI() | 
|         { | 
|             lbChaiDie3Statu.Text = "设备状态: " + chaidie3.State; | 
|             lbChaiDie3Mode.Text = "设备模式: : " + chaidie3.Mode; | 
|             lbChaiDie3Alerm.Text = "是否有报警: " + chaidie3.Alarm; | 
|             lbChaiDie3AlermCode.Text = "报警代码: " + chaidie3.RAlarmCode; | 
|             lbChaiDie3IsFull.Text = "是否满盘: " + chaidie3.EmptyStatus; | 
|         } | 
|   | 
|         private void SetChaiDie2UI() | 
|         { | 
|             lbChaiDie2Statu.Text = "设备状态: " + chaidie2.State; | 
|             lbChaiDie2Mode.Text = "设备模式: : " + chaidie2.Mode; | 
|             lbChaiDie2Alerm.Text = "是否有报警: " + chaidie2.Alarm; | 
|             lbChaiDie2AlermCode.Text = "报警代码: " + chaidie2.RAlarmCode; | 
|             lbChaiDie2IsEmpty.Text = "是否空盘: " + chaidie2.EmptyStatus; | 
|             lbAck2.Text = "是否收到: " + chaidie2.ACK; | 
|         } | 
|   | 
|         private void SetChaiDie1UI() | 
|         { | 
|             lbChaiDie1Statu.Text = "设备状态: " + chaidie1.State; | 
|             lbChaiDie1Mode.Text = "设备模式: : " + chaidie1.Mode; | 
|             lbChaiDie1Alerm.Text = "是否有报警: " + chaidie1.Alarm; | 
|             lbChaiDie1AlermCode.Text = "报警代码: " + chaidie1.RAlarmCode; | 
|             lbChaiDie1IsEmpty.Text = "是否空盘: " + chaidie1.EmptyStatus; | 
|             lbAck1.Text = "是否收到: " + chaidie1.ACK; | 
|         } | 
|   | 
|         private void btnChaiDie1TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|   | 
|                     bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei1.ToString()); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|   | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|   | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie1TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp | 
|                             (EDevName.ChaiDei1.ToString())) | 
|                     { | 
|   | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie2TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|   | 
|                     bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei2.ToString()); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie2TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp | 
|                             (EDevName.ChaiDei2.ToString())) | 
|                     { | 
|   | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie3TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|   | 
|                     bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei3.ToString()); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|   | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie3TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp | 
|                             (EDevName.ChaiDei3.ToString())) | 
|                     { | 
|   | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie4TaskSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|   | 
|                     bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei4.ToString()); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnChaiDie4TaskConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp | 
|                             (EDevName.ChaiDei4.ToString())) | 
|                     { | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         #endregion | 
|   | 
|         #region 输送线相关 | 
|         /// <summary> | 
|         /// 获取立库输送机的任务完成情况 | 
|         /// </summary> | 
|         private void GetSrmConveyorInfo() | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|                     using (var opcClient = new ControlCenterWcfServiceClient()) | 
|                     { | 
|                         string msg = ""; | 
|                         srmConveyorInfo = opcClient.GetConveyorInfo("", out msg); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 设置立库输送机的UI显示 | 
|         /// </summary> | 
|         /// <param name="obj"></param> | 
|         private void SetSrmTransLable(object obj) | 
|         { | 
|             while (true) | 
|             { | 
|                 Thread.Sleep(cycleDelay); | 
|                 try | 
|                 { | 
|   | 
|   | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     continue; | 
|                 } | 
|             } | 
|   | 
|   | 
|         } | 
|         /// <summary> | 
|         /// 线体任务下发 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrmTransSend_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 using (var opcClinet = new ControlCenterWcfServiceClient()) | 
|                 { | 
|                     var toPlace = tBSrmTransToPlace.Text.Trim(); | 
|                     string conname = "Line" + tBLineNum.Text.Trim(); | 
|                     int palltype = 1; | 
|                     string type = cmb1PallTYpe.Text; | 
|                     if (type == "小托盘") | 
|                     { | 
|                         palltype = 1; | 
|                     } | 
|                     else | 
|                     { | 
|                         palltype = 2; | 
|                     } | 
|                     if (!IsNumeric(tBSrmTransTskId.Text.Trim())) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); | 
|                         return; | 
|                     } | 
|                     bool returnVal = opcClinet.SendConveyorTask(conname, (int)EDevName.Line4, int.Parse(tBSrmTransTskId.Text.Trim()), toPlace, palltype); | 
|                     if (returnVal) | 
|                     { | 
|   | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); | 
|                         tBSrmTransToPlace.Clear(); | 
|                         tBSrmTransTskId.Clear(); | 
|   | 
|                     } | 
|                     else | 
|                     { | 
|                         LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); | 
|   | 
|                     } | 
|                 } | 
|                 tBSrmTransToPlace.Focus(); | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 线体下发确认 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnSrmTransFinishConfirm_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     string conname = "Line" + tBLineNum.Text.Trim(); | 
|                     if (new ControlCenterWcfServiceClient().ConfirmConveyorStp | 
|                             (conname)) | 
|                     { | 
|                         tbSrm1TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnSrmTransDelCrntTask_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|   | 
|   | 
|         } | 
|         #endregion | 
|   | 
|         private void WCSFrom_FormClosed(object sender, FormClosedEventArgs e) | 
|         { | 
|   | 
|             Environment.Exit(0); | 
|         } | 
|   | 
|         private void WCSFrom_Load(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void btnSrm2CtnDelete_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void button2_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void btn1StpConfim_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmSrmACK | 
|                             (EDevName.Srm1.ToString())) | 
|                     { | 
|                         tbSrm1TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btn2StpConfim_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmSrmACK | 
|                             (EDevName.Srm2.ToString())) | 
|                     { | 
|                         tbSrm2TaskId.Clear(); | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btn1CStp_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmRGVStp | 
|                             (EDevName.Rgv1.ToString())) | 
|                     { | 
|   | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btn2CStp_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (new ControlCenterWcfServiceClient().ConfirmRGVStp | 
|                             (EDevName.Rgv2.ToString())) | 
|                     { | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void tbSrm2TaskId_TextChanged(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void lbSourcePlaceOrder_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void tB_Srm1SourcePlace_TextChanged(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void lbToPlaceOrder_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void tB_Srm1ToPlace_TextChanged(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void label47_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         private void tbSrm1TaskId_TextChanged(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 生成主任务 | 
|         /// </summary> | 
|         /// <param name="sender"></param> | 
|         /// <param name="e"></param> | 
|         private void btnCreateMainTask_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     if (string.IsNullOrEmpty(tbTaskNo.Text))//ControlCenterService | 
|                     { | 
|                         MessageBox.Show("任务号不能为空!"); | 
|                         return; | 
|                     } | 
|                     if (new ControlCenterWcfServiceClient().SendTask(int.Parse(tbTaskNo.Text), tbSourPlace.Text, tbToPlace.Text, | 
|                         cbTaskType.SelectedIndex, (cbContainerNo.SelectedIndex + 1), (cbSortType.SelectedIndex + 1), (cbHeight.SelectedIndex + 1), "")) | 
|                     { | 
|                         MessageBox.Show("下发成功!"); | 
|                     } | 
|                     else | 
|                     { | 
|                         MessageBox.Show("下发失败!"); | 
|                     } | 
|   | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|                     LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void dgvPartTask_CellContentClick(object sender, DataGridViewCellEventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|         public void BindData() | 
|         { | 
|   | 
|   | 
|   | 
|   | 
|             using (DbModel db = new DbModel()) | 
|             { | 
|   | 
|                 dgvPartTask.ClearSelection();   //可消除所有选择的行          | 
|   | 
|                 dgvPartTask.CurrentCell = null; //可消除选择行的行头箭头 | 
|   | 
|                 string tno = tbserch.Text; | 
|                 // | 
|                 var task = db.TaskViews.Where(x => (x.isreleased == 0 || x.isfinished == 0) && x.taskno.Contains(tno)).ToList(); | 
|                 if (task != null && task.Count > 0) | 
|                 { | 
|   | 
|   | 
|                     dgvPartTask.DataSource = null; | 
|                     dgvPartTask.DataSource = task; | 
|                 } | 
|                 else | 
|                 { | 
|                     if (dgvPartTask.Rows.Count > 0) | 
|                     { | 
|                         int i = dgvPartTask.Rows[0].Cells.Count; | 
|                         var cells = dgvPartTask.Rows[0].Cells; | 
|                         for (int j = 0; j < i; j++) | 
|                         { | 
|                             cells[j].Value = null; | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|   | 
|         private void btnFind_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|             dgvPartTask.AutoGenerateColumns = false; | 
|             BindData(); | 
|         } | 
|   | 
|         private void btnDelete_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 try | 
|                 { | 
|                     using (DbModel db = new DbModel()) | 
|                     { | 
|                         var row = dgvPartTask.SelectedRows; | 
|   | 
|                         if (row.Count > 0) | 
|                         { | 
|                             var cell = row[0].Cells; | 
|                             int id = int.Parse(cell[0].Value.ToString()); | 
|                             var task = db.PartTasks.FirstOrDefault(x => x.id == id); | 
|                             if (task != null) | 
|                             { | 
|                                 db.PartTasks.Remove(task); | 
|                                 db.SaveChanges(); | 
|                                 LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/任务删除", "子任务号:{0},起始位置:{1},目标位置:{2}", task.id, task.sourceplace, task.toplace); | 
|                                 MessageBox.Show("删除成功!"); | 
|                                 BindData(); | 
|                             } | 
|                             else | 
|                             { | 
|                                 MessageBox.Show("未找到该任务!"); | 
|                             } | 
|   | 
|                         } | 
|                         else | 
|                         { | 
|                             MessageBox.Show("请先选中要执行的行!"); | 
|                         } | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|   | 
|                     BindData(); | 
|                 } | 
|             })); | 
|             pc.Show(); | 
|         } | 
|   | 
|         private void btnFinish_Click(object sender, EventArgs e) | 
|         { | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     using (DbModel db = new DbModel()) | 
|                     { | 
|                         var row = dgvPartTask.SelectedRows; | 
|   | 
|                         if (row.Count > 0) | 
|                         { | 
|                             var cell = row[0].Cells; | 
|                             int id = int.Parse(cell[0].Value.ToString()); | 
|                             var task = db.PartTasks.FirstOrDefault(x => x.id == id); | 
|                             if (task != null) | 
|                             { | 
|                                 if (task.nexthandel == 27) | 
|                                 { | 
|                                     var maintask = db.MainTasks.OrderByDescending(x => x.id).FirstOrDefault(x => x.id == task.maintaskid); | 
|                                     if (maintask != null) | 
|                                     { | 
|                                         maintask.finishstatus = 1; | 
|                                     } | 
|                                 } | 
|                                 task.isfinished = 1; | 
|                                 task.isreleased = 1; | 
|   | 
|                                 //增加人工处理标记 【EditBy shaocx,2022-08-23】 | 
|                                 task.ishandled = 1;//是否人工处理 | 
|                                 task.filereason = "人工强制点击按钮完成"; | 
|                                 task.updatetime = DateTime.Now; | 
|   | 
|                                 db.SaveChanges(); | 
|                                 LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/强制完成", "子任务号:{0},起始位置:{1},目标位置:{2}", task.id, task.sourceplace, task.toplace); | 
|                                 MessageBox.Show("强制完成成功!"); | 
|   | 
|                                 BindData(); | 
|                             } | 
|                             else | 
|                             { | 
|                                 MessageBox.Show("未找到该任务!"); | 
|                             } | 
|                         } | 
|                         else | 
|                         { | 
|                             MessageBox.Show("请先选中要执行的行!"); | 
|                         } | 
|                     } | 
|                 } | 
|                 catch (Exception) | 
|                 { | 
|   | 
|                     BindData(); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnReset_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|             PassConfirm pc = new PassConfirm(new Action(delegate | 
|             { | 
|                 #region 业务操作 | 
|   | 
|                 try | 
|                 { | 
|                     using (DbModel db = new DbModel()) | 
|                     { | 
|                         var row = dgvPartTask.SelectedRows; | 
|   | 
|                         if (row.Count > 0) | 
|                         { | 
|                             var cell = row[0].Cells; | 
|                             int id = int.Parse(cell[0].Value.ToString()); | 
|                             var task = db.PartTasks.FirstOrDefault(x => x.id == id); | 
|                             if (task != null) | 
|                             { | 
|                                 task.isfinished = 0; | 
|                                 task.isreleased = 0; | 
|   | 
|                                 //增加人工处理标记 【EditBy shaocx,2022-08-23】 | 
|                                 task.ishandled = 1;//是否人工处理 | 
|                                 task.filereason = "人工强制点击按钮任务重发"; | 
|                                 task.updatetime = DateTime.Now; | 
|   | 
|                                 db.SaveChanges(); | 
|                                 LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/任务重置", "子任务号:{0},起始位置:{1},目标位置:{2}", task.id, task.sourceplace, task.toplace); | 
|                                 MessageBox.Show("重置成功!"); | 
|                                 BindData(); | 
|                             } | 
|                             else | 
|                             { | 
|                                 MessageBox.Show("未找到该任务!"); | 
|                             } | 
|                         } | 
|                         else | 
|                         { | 
|                             MessageBox.Show("请先选中要执行的行!"); | 
|                         } | 
|                     } | 
|                 } | 
|                 catch (Exception ex) | 
|                 { | 
|   | 
|                     BindData(); | 
|                 } | 
|   | 
|                 #endregion | 
|             })); | 
|             pc.Show(); | 
|   | 
|         } | 
|   | 
|         private void btnSrm1CtnDelete_Click(object sender, EventArgs e) | 
|         { | 
|   | 
|         } | 
|   | 
|     } | 
| } |