public PCDResponse MeasurePart(PCDRequest request) { _measureOperation = true; StatusMessage = "开始测量"; PCDResponse resp = null; try { string progName = SearchProgram(request.Part); GenerateMeasureParameterFile(request.Part); _are.Reset(); bool success = _pcdmisControl.OpenProgram(progName); success = _pcdmisControl.ExecuteProgramAsync(); _are.WaitOne(); resp = EvalMeasure(_completed); } catch (Exception pe) { resp = new PCDResponse() { Success = false, Pass = false, Message = pe.Message }; ServerLog.Logs.AddLog(pe.Message); } StatusMessage = "结束测量"; return(resp); }
public PCDResponse GotoSafePostion() { _measureOperation = false; PCDResponse resp = new PCDResponse(); try { string progName = ServerDirManager.Inst.SafeLocateProgram; if (!File.Exists(progName)) { resp.Success = false; resp.Message = "安全定位程序不存在"; ServerLog.Logs.AddLog(resp.Message); return(resp); } _are.Reset(); bool success = _pcdmisControl.OpenProgram(progName); success = _pcdmisControl.ExecuteProgramAsync(); _are.WaitOne(); resp.Success = success; return(resp); } catch (Exception ex) { resp.Success = false; resp.Message = ex.Message; ServerLog.Logs.AddLog(resp.Message); return(resp); } }
private PCDResponse Measure(Part part) { PCDRequest request = new PCDRequest() { Part = part }; PCDResponse response = _pcdmisService.MeasurePart(request); return(response); }
public PCDResponse Disconnect() { Connected = false; _pcdmisCallback = null; PCDResponse response = new PCDResponse() { Success = true, Message = "" }; return(response); }
public async Task <bool> MeasurePartAsync(Part part) { //判断结果,并启动文件回传 bool success = true; try { part.Status = PartStatus.PS_Measuring; part.Flag = 0; _timer = new Timer(TestBack /*_ => part.Flag = ++part.Flag % 2*/, part, 0, 2000); PCDResponse response = await Task.Run(() => Measure(part)); _timer.Change(Timeout.Infinite, Timeout.Infinite); part.Flag = 0; success = response.Success; part.Pass = response.Pass; part.ResultFile = Path.GetFileName(response.ReportFile); part.Status = success ? PartStatus.PS_Measured : PartStatus.PS_Error; if (!success) { ClientLogs.Inst.AddLog(new ClientLog(response.Message)); } } catch (Exception) { //通讯失败中终止测量 success = false; part.Pass = false; OfflineEvent?.Invoke(this, null); _timer.Change(Timeout.Infinite, Timeout.Infinite); part.Flag = 0; part.ResultFile = ""; part.Status = PartStatus.PS_Idle; ClientLogs.Inst.AddLog(new ClientLog("远程服务器通讯异常")); throw new InvalidOperationException("远程服务器通讯异常"); } return(success); }
private PCDResponse EvalMeasure(bool completed) { PCDResponse resp = new PCDResponse(); if (completed) { bool pass = EvalReport(); resp.ReportFile = GetOutputFile(); resp.Success = true; resp.Pass = pass; resp.Message = "测量完成。"; } else { resp.Success = false; resp.Pass = false; resp.ReportFile = ""; resp.Message = "测量未完成。"; } return(resp); }
public PCDResponse Connect() { _pcdmisCallback = OperationContext.Current.GetCallbackChannel <IPCDmisCallback>(); PCDResponse response = new PCDResponse() { Success = true, Message = "" }; if (_pcdmisCallback == null) { response.Success = false; response.Message = "回连失败"; ServerLog.Logs.AddLog("回连失败"); } Connected = response.Success; StatusMessage = Connected ? "控制器已连接" : "控制器连接过程中发生错误"; ServerLog.Logs.AddLog(StatusMessage); OperationContext.Current.Channel.Closed += Channel_Closed; OperationContext.Current.Channel.Opened += Channel_Opened; OperationContext.Current.Channel.Faulted += Channel_Faulted; _channelCache = OperationContext.Current.Channel; return(response); }
private PCDResponse SafeLocate() { PCDResponse response = _pcdmisService.GotoSafePostion(); return(response); }