public void WriteMessageTest() { LocalLogCollector.LogFilePath = @"G:\AutoMeasureItems\ServerPathRoot\log.txt"; LocalLogCollector.WriteMessage("测试字符串\n"); LocalLogCollector.WriteMessage("测试字符串1"); LocalLogCollector.WriteMessage("测试字符串2"); }
private void ListenHeartbeat(object sender, ElapsedEventArgs e) { if (_dateTime.AddSeconds(5) < DateTime.Now) { if (_isConnected) { LocalLogCollector.WriteMessage("控制中心已断开"); _isConnected = false; } } }
/// <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; } }
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); }
public void ClearServerError() { try { _serverInError = false; _eventNotify?.ClearCmmServerError(); LogCollector.Instance.PostSvrWorkStatus("三坐标服务器重置"); //ServerUILinker.WriteUILog("清空错误"); } catch (Exception) { LocalLogCollector.WriteMessage("与客户端连接异常"); } }
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); } }
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); }
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; } }