コード例 #1
0
        /// <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("程序执行完成");
        }
コード例 #2
0
        /// <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();
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
 //
 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);
 }