/// <summary> /// PCDmis测量完成响应事件 /// </summary> /// <param name="ExecutionWindow"></param> private void _pcdAppEvents_OnCloseExecutionDialog(PCDLRN.ExecutionWindow ExecutionWindow) { _ExeOK = false; PCDmisEventArgs pce; _monitorTimer.Stop(); if (_partProgram.ExecutionWasCancelled) { LogCollector.Instance.PostSvrErrorMessage("执行被终止"); pce = new PCDmisEventArgs() { IsCompleted = false }; pce.PCDmisRunInfo = "执行被终止"; pce.FaultType = PCDmisFaultType.FT_CancelMeasure; PCDmisMeasureEvent?.Invoke(this, pce); return; } // 响应PCDMIS测量结束事件 pce = new PCDmisEventArgs() { IsCompleted = true }; pce.PCDmisRunInfo = "程序执行完成"; pce.FaultType = PCDmisFaultType.FT_None; PCDmisMeasureEvent?.Invoke(this, pce); LogCollector.Instance.PostSvrWorkStatus("程序执行完成"); }
/// <summary> /// PCDmis执行监控事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _monitorTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { _monitorTimer.Stop(); Process[] pcs = Process.GetProcessesByName("PCDLRN"); TimeSpan exeTime = e.SignalTime - _timerStart; if (pcs.Length > 0) { if (exeTime > _timeout) { PCDmisEventArgs pce = new PCDmisEventArgs(); pce.IsCompleted = false; pce.FaultType = PCDmisFaultType.FT_Timeout; pce.PCDmisRunInfo = "PCDmis执行超时"; PCDmisMeasureEvent?.Invoke(this, pce); //LogCollector.Instance.PostSvrErrorMessage("PCDmis执行超时"); _monitorTimer.Close(); } } else if (_ExeOK) // 已经开始异步执行 { PCDmisEventArgs pce = new PCDmisEventArgs(); pce.IsCompleted = false; pce.FaultType = PCDmisFaultType.FT_FatalError; pce.PCDmisRunInfo = "PCDmis在执行时异常退出"; PCDmisMeasureEvent?.Invoke(this, pce); //LogCollector.Instance.PostSvrErrorMessage("PCDMIS异常跳出"); _monitorTimer.Close(); } else { // 外部异常捕获 } _monitorTimer.Start(); }
/// <summary> /// PCDMIS测量完成事件, 在这里异步执行PCDMIS分析过程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public async void _pcdmisCore_PCDmisMeasureEvent(object sender, PCDmisEventArgs e) { if (!e.IsCompleted) { LogCollector.Instance.PostSvrErrorMessage("PCDMIS没有完成执行或执行出错"); if (e.FaultType == PCDmisFaultType.FT_FatalError) { ReinitialPCDmist(); } _serverInError = true; return; } LogCollector.Instance.PostSvrWorkStatus("PCDMIS执行完成"); if (!IsBladeMeasure) { return; } // 开启Blade异步分析 string bladeExe = ServerSettings.BladeExe; bool ok = await Task.Run(() => { bool result = _bladeMeasAssist.PCDmisRtfToBladeRpt(); // 转换rtf到rpt文件 if (!result) { _serverInError = true; return(result); } PathManager.Instance.RptFilePath = _bladeMeasAssist.RptFileName; // rptfilename 全路径 return(_bladeContext.StartBlade(bladeExe, _bladeMeasAssist.RptFileName)); }); if (ok) { LogCollector.Instance.PostSvrWorkStatus("Blade分析完成"); // 执行结果分析, 分析CMM文件 PathManager.Instance.ReportsPath = _bladeContext.CMMFileFullPath; bool measResult = _bladeMeasAssist.VerifyAnalysisResult(_bladeContext.CMMFileFullPath); // 如果客户端断开,跳出异常 try { _eventNotify?.WorkCompleted(measResult); // 通知客户端测量结果是否合格 LogCollector.Instance.PostSvrWorkStatus("检测流完成"); } catch (Exception) { LocalLogCollector.WriteMessage("与客户端连接异常"); } } else { LogCollector.Instance.PostSvrErrorMessage("Blade分析失败"); _serverInError = true; } }
/// <summary> /// 测量中出错 /// </summary> /// <param name="ErrorMsg"></param> private void _partProgram_OnExecuteDialogErrorMsg(string ErrorMsg) { //_monitorTimer.Stop(); LogCollector.Instance.PostSvrErrorMessage(ErrorMsg); PCDmisEventArgs peArgs = new PCDmisEventArgs() { IsCompleted = false }; peArgs.PCDmisRunInfo = ErrorMsg; // 出错信息 peArgs.FaultType = PCDmisFaultType.FT_MeasureError; PCDmisMeasureEvent?.Invoke(this, peArgs); }
// private void _pcdmisCore_PCDmisMeasureEvent1(object sender, PCDmisEventArgs e) { if (!e.IsCompleted) { LogCollector.Instance.PostSvrErrorMessage("PCDMIS没有完成执行或执行出错"); //ServerUILinker.WriteUILog(e.PCDmisRunInfo); if (e.FaultType == PCDmisFaultType.FT_FatalError) { ReinitialPCDmist(); } _serverInError = true; return; } LogCollector.Instance.PostSvrWorkStatus("PCDMIS执行完成"); _eventNotify?.WorkCompleted(true); }