using DataEntity.Share; using DriverLib.Engine; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Windows; using System.Xml; using XCommon; using XCommon.Log; using XCore; using XHandler.Controls.Run.Com; using XHandler.View; using XHandler.View.MethodProperty; using XImaging.Automation.Service.Interface; using XImagingXhandler.XDAL; using static HxEnum.OperationTypeEnum; using DataRWDAL; using NPOI.SS.Formula.Functions; using XHandler.Class; using DataRWDAL.Rack; using System.Configuration; using XHandler.Properties; using XHandler.View.Liquids; using DataEntity; using DriverLibrary; using HxEnum; using XHandler.Class.DataEx; using XCoreBLL; namespace XHandler.Controls { public class WaitForControl { string strCurrentCulture = ""; public RunWnd launchView = null; WaitForBll waitForBll = new WaitForBll(); TimerBll timerBll = new TimerBll(); public WaitForControl(string strCurrentCulture) { this.strCurrentCulture = strCurrentCulture; } #region 执行等待,返回结果字符串 /// /// 执行等待,返回结果字符串 /// /// 板位节点信息 /// 装载方法属性节点对象 /// 完整xml对象 /// false:连接谁;true:仿真 /// public bool ExecuteWaitFor(XmlNode xmlEnv, XmlNode methodNode,XmlDocument xmlDocument,bool isSimulator) { bool result = true; if (launchView._cancelSource.IsCancellationRequested) { result = false; return result; } string methodName = methodNode.SelectSingleNode("name").InnerText; try { string duringTimeText = methodNode.SelectSingleNode("duringTimeText").InnerText; string duringTimeTextStrIndex = methodNode.SelectSingleNode("duringTimeTextStrIndex").InnerText; bool enableEndWaitfor = (methodNode.SelectSingleNode("enableEndWaitfor").InnerText.ToLower() == "true") ? true : false; MethodWaitFor methodWaitFor = waitForBll.GenerateMethodTimer(methodNode); #region Start Log if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strStart.ToString()); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodName + "】start:"); } #endregion //数据准备 //查找关联的Timer节点 XmlNodeList methodListXML = xmlDocument.SelectNodes("root/method"); foreach(XmlNode xn in methodListXML) { if (xn.SelectSingleNode("strIndex").InnerText == duringTimeTextStrIndex) { XmlNode timerNodeXML = xn; if (timerNodeXML != null) { MethodTimer methodTimer = timerBll.GenerateMethodTimer(timerNodeXML); if (launchView != null) { HxResult ret = waitForBll.ExecutePause(1, isSimulator); if (ret.Result != ResultType.Success) { if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.PauseResource.strPauseError.ToString() + ret.AlarmInfo); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】progress:pause is failed! error information:" + ret.AlarmInfo); } result = false; } else { if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.PauseResource.strPauseOk.ToString()); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】progress:pause is successful!"); } var currentMethodTimer = launchView.methodTimers.SingleOrDefault(x => x.strIndex.Equals(methodTimer.strIndex)); if (currentMethodTimer != null&&Convert.ToDouble(currentMethodTimer.duringTime)>0) { methodTimer.duringTime = currentMethodTimer.duringTime; bool b = launchView.ShowDialogForWaitFor(methodTimer, methodWaitFor); HxResult ret1 = waitForBll.ExecutePause(2, isSimulator); if (ret1.Result != ResultType.Success) { if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.PauseResource.strContinueError.ToString() + ret.AlarmInfo); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】progress:continue is failed! error information:" + ret1.AlarmInfo); } result = false; } else { if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.PauseResource.strContinueOk.ToString()); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】progress:continue is successful!"); } } } else { } } } } break; } } if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.MachineRunResource.strEnd.ToString()); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】progress: complete;"); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); if (strCurrentCulture.Equals("zh-CN")) { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strError.ToString() + " 源 " + ex.Source + " 错误信息 " + ex.Message + ";"); } else { launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】error:source:" + ex.Source + ";error:" + ex.Message + ";"); } result = false; } return result; } #endregion } }