Esempio n. 1
0
 public void WriteMessageTest()
 {
     LocalLogCollector.LogFilePath = @"G:\AutoMeasureItems\ServerPathRoot\log.txt";
     LocalLogCollector.WriteMessage("测试字符串\n");
     LocalLogCollector.WriteMessage("测试字符串1");
     LocalLogCollector.WriteMessage("测试字符串2");
 }
Esempio n. 2
0
 private void ListenHeartbeat(object sender, ElapsedEventArgs e)
 {
     if (_dateTime.AddSeconds(5) < DateTime.Now)
     {
         if (_isConnected)
         {
             LocalLogCollector.WriteMessage("控制中心已断开");
             _isConnected = false;
         }
     }
 }
Esempio n. 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;
            }
        }
Esempio n. 4
0
        public void MeasurePart(string partId) // todo MeasureServiceContext 测试方法
        {
            _part = PartConfigManager.Instance.GetPartConfig(partId);
            Debug.Assert(_part != null);
            string partProgFileName = PathManager.Instance.GetPartProgramPath(_part);

            if (!File.Exists(partProgFileName))
            {
                LogCollector.Instance.PostSvrErrorMessage("程序文件不存在");
                return;
            }
            LocalLogCollector.WriteMessage($"测量工件: {partId}, 程序:{partProgFileName}");
            BackToSafePosition(partProgFileName);
        }
Esempio n. 5
0
 public void ClearServerError()
 {
     try
     {
         _serverInError = false;
         _eventNotify?.ClearCmmServerError();
         LogCollector.Instance.PostSvrWorkStatus("三坐标服务器重置");
         //ServerUILinker.WriteUILog("清空错误");
     }
     catch (Exception)
     {
         LocalLogCollector.WriteMessage("与客户端连接异常");
     }
 }
Esempio n. 6
0
 public void ConnectWFEvents()
 {
     try
     {
         _eventNotify = OperationContext.Current.GetCallbackChannel <IWorkflowNotify>();
         LogCollector.Instance.SvrNotify = _eventNotify;
         LocalLogCollector.WriteMessage("控制中心已连接");
         // 心跳信号
         _isConnected = true;
         _dateTime    = DateTime.Now;
     }
     catch (Exception ex)
     {
         LocalLogCollector.WriteMessage("注册回调事件异常 " + ex.Message);
     }
 }
Esempio n. 7
0
        private void MainFrm_Load(object sender, EventArgs e)
        {
            AutoResetEvent arevt = new AutoResetEvent(false);

            errorInfo = "服务器启动成功";
            Task.Run(() =>
            {
                InitForm initForm = new InitForm(arevt);
                initForm.ShowDialog();
            });
            // 初始化工件配置管理器
            PartConfigManager.Instance.InitPartConfigManager(/*_partFile*/);
            if (!_msc.Initialize())
            {
                //初始化PCDMIS失败
                errorInfo = "未能初始化PCDMIS";
                LocalLogCollector.WriteMessage(errorInfo);
            }
            // 开启服务器
            try
            {
                _ctrlHost.Open(TimeSpan.FromSeconds(_ServiceOpenTimeout));
                _partServiceHost.Open(TimeSpan.FromSeconds(_ServiceOpenTimeout));
                LocalLogCollector.WriteMessage(errorInfo);
            }
            catch (TimeoutException)
            {
                errorInfo = "服务器未正常启动";
                //RefreshInfoView(errorInfo);
                LocalLogCollector.WriteMessage(errorInfo);
            }
            finally
            {
                arevt.Set();
            }
            //logListView.Items.Add(errorInfo);
            //RefreshInfoView(errorInfo);
        }
Esempio n. 8
0
        public void MeasurePart1(string partId)
        {
            IsBladeMeasure = true;
            _part          = PartConfigManager.Instance.GetPartConfig(partId);
            Debug.Assert(_part != null);
            string partProgFileName = PathManager.Instance.GetPartProgramPath(_part);

            if (!File.Exists(partProgFileName))
            {
                LogCollector.Instance.PostSvrErrorMessage("程序文件不存在");
                return;
            }
            LocalLogCollector.WriteMessage($"测量工件: {partId}, 程序:{partProgFileName}");
            try
            {
                _pcdmisCore.OpenPartProgram(partProgFileName);
                Thread.Sleep(100);                         // 等待开启测量程序
                                                           //if (IsBladeMeasure)
                                                           //{
                _pcdmisCore.GetProgramCommandParameters(); // 获得测尖直径和输出文件
                if (!_pcdmisCore.HasOutputFile)
                {
                    //ServerUILinker.WriteUILog("测量程序无输出,无法进行叶片计算");
                    LogCollector.Instance.PostSvrErrorMessage("测量程序无输出,无法进行叶片计算");
                    return;
                }
                //
                _bladeMeasAssist.Part        = _part;
                _bladeMeasAssist.ProbeDiam   = _pcdmisCore.ProbeDiam;
                _bladeMeasAssist.RtfFileName = _pcdmisCore.RtfFileName;
                // 创建Blade.txt文件
                if (!_bladeMeasAssist.CreateBladeTxtFromNominal())
                {
                    LogCollector.Instance.PostSvrErrorMessage("辅助文件创建失败");
                    return;
                }
                //}
                //if (_pcdmisCore.HasOutputFile) // 如果程序找到输出文件,则设置blade测量辅助
                //{
                //    _bladeMeasAssist.Part = _part;
                //    _bladeMeasAssist.ProbeDiam = _pcdmisCore.ProbeDiam;
                //    _bladeMeasAssist.RtfFileName = _pcdmisCore.RtfFileName;
                //    if (IsBladeMeasure) //
                //    {
                //        _bladeMeasAssist.CreateBladeTxtFromNominal();
                //    }
                //}
                if (!_pcdmisCore.ExecutePartProgram()) // 执行程序
                {
                    LogCollector.Instance.PostSvrErrorMessage("pcdmis没有启动执行");
                    return;
                }
                else
                {
                    LogCollector.Instance.PostSvrWorkStatus("pcdmis启动执行 " + _part.ProgFileName);
                }
            }
            catch (Exception)
            {
                LogCollector.Instance.PostSvrErrorMessage("PCDmis出错, 重启PCDmis");
                //ServerUILinker.WriteUILog("PCDmis出错, 重启PCDmis");
                //处理PCDMIS的CrashSender1402.exe窗口
                bool result = CloseCrashSender();
                ReinitialPCDmist();
                //throw;
            }
        }