public void Activate(bool activate, ViewType chgMode) { if (activate) { if (model.CoordinateSystems.Count == 0) { // model.CoordinateSystems.Add(model.CoordinateSystem = new CoordinateSystem("Active", "0")); foreach (var cs in GrblWorkParameters.CoordinateSystems) { if (cs.Id > 0 && cs.Id < 9) { model.CoordinateSystems.Add(new CoordinateSystem(cs.Code, "0")); } if (cs.Id == 9) { model.HasCoordinateSystem9 = true; } } model.HasToolTable = GrblInfo.NumTools > 0; } GrblParserState.Get(!GrblSettings.IsGrblHAL); mode = GrblParserState.DistanceMode; model.Tool = model.Grbl.Tool == GrblConstants.NO_TOOL ? "0" : model.Grbl.Tool; model.CanProbe = !model.Grbl.Signals.Value.HasFlag(Signals.Probe); model.HeightMapApplied = GCode.File.HeightMapApplied; int csid = GrblWorkParameters.GetCoordinateSystem(model.Grbl.WorkCoordinateSystem).Id; model.CoordinateSystem = csid == 0 || csid >= 9 ? 1 : csid; if (model.Grbl.IsTloReferenceSet && !double.IsNaN(model.Grbl.TloReference)) { model.TloReference = model.Grbl.TloReference; model.ReferenceToolOffset = false; } model.Grbl.PropertyChanged += Grbl_PropertyChanged; probeTriggered = model.Grbl.Signals.Value.HasFlag(Signals.Probe); DisplayPosition(model.Grbl); } else { model.Grbl.PropertyChanged -= Grbl_PropertyChanged; // If probing alarm active unlock if (model.Grbl.GrblState.State == GrblStates.Alarm && (model.Grbl.GrblState.Substate == 4 || model.Grbl.GrblState.Substate == 5)) { model.Grbl.ExecuteCommand(GrblConstants.CMD_UNLOCK); } else if (model.Grbl.GrblError != 0) { model.Grbl.ExecuteCommand(""); // Clear error } model.Grbl.ExecuteCommand(mode == DistanceMode.Absolute ? "G90" : "G91"); } model.Grbl.Poller.SetState(activate ? AppConfig.Settings.Base.PollInterval : 0); }
private void JogControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if ((bool)e.NewValue) { GrblParserState.Get(); metricCommand = GrblParserState.IsMetric; } }
private void clearToolOffset_Click(object sender, RoutedEventArgs e) { var model = DataContext as ProbingViewModel; model.ReferenceToolOffset = model.CanReferenceToolOffset && !(model.Grbl.IsTloReferenceSet && !double.IsNaN(model.Grbl.TloReference)); model.Grbl.ExecuteCommand("G49"); if (!model.Grbl.IsParserStateLive) { if (GrblInfo.IsGrblHAL) { model.Grbl.ExecuteCommand(GrblConstants.CMD_GETPARSERSTATE); } else { GrblParserState.Get(true); } } }
public void Activate(bool activate, ViewType chgMode) { if (activate) { if (model.CoordinateSystems.Count == 0) { // model.CoordinateSystems.Add(model.CoordinateSystem = new CoordinateSystem("Active", "0")); foreach (var cs in GrblWorkParameters.CoordinateSystems) { if (cs.Id > 0 && cs.Id < 9) { model.CoordinateSystems.Add(new CoordinateSystem(cs.Code, "0")); } if (cs.Id == 9) { model.HasCoordinateSystem9 = true; } } model.HasToolTable = GrblInfo.NumTools > 0; } GrblParserState.Get(); mode = GrblParserState.DistanceMode; model.Tool = model.Grbl.Tool == GrblConstants.NO_TOOL ? "0" : model.Grbl.Tool; model.CanProbe = !model.Grbl.Signals.Value.HasFlag(Signals.Probe); model.HeightMapApplied = GCode.File.HeightMapApplied; int csid = GrblWorkParameters.GetCoordinateSystem(model.Grbl.WorkCoordinateSystem).Id; model.CoordinateSystem = csid == 0 || csid >= 9 ? 1 : csid; model.Grbl.PropertyChanged += Grbl_PropertyChanged; } else { model.Grbl.PropertyChanged -= Grbl_PropertyChanged; if (model.Grbl.GrblError != 0) { model.Grbl.ExecuteCommand(""); // Clear error } model.Grbl.ExecuteCommand(mode == DistanceMode.Absolute ? "G90" : "G91"); } model.Grbl.Poller.SetState(activate ? AppConfig.Settings.Base.PollInterval : 0); }
public bool Update() { if (GrblSettings.IsLoaded) { XMaxFeedRate = GrblSettings.GetDouble(GrblSetting.AxisSetting_XMaxRate); XAcceleration = GrblSettings.GetDouble(GrblSetting.AxisSetting_XAcceleration); ZMaxFeedRate = GrblSettings.GetDouble(GrblSetting.AxisSetting_ZMaxRate); ZAcceleration = GrblSettings.GetDouble(GrblSetting.AxisSetting_ZAcceleration); RpmMin = GrblSettings.GetDouble(GrblSetting.RpmMin); RpmMax = GrblSettings.GetDouble(GrblSetting.RpmMax); GrblParserState.Get(); if (!xmodelock) { xmode = GrblParserState.LatheMode; } SetLimits(); } return(GrblSettings.IsLoaded); }
public bool Update() { if (GrblSettings.IsLoaded) { XMaxFeedRate = GrblSettings.GetDouble(GrblSetting.MaxFeedRateBase); XAcceleration = GrblSettings.GetDouble(GrblSetting.AccelerationBase); ZMaxFeedRate = GrblSettings.GetDouble(GrblSetting.MaxFeedRateBase + GrblConstants.Z_AXIS); ZAcceleration = GrblSettings.GetDouble(GrblSetting.AccelerationBase + GrblConstants.Z_AXIS); RpmMin = GrblSettings.GetDouble(GrblSetting.RpmMin); RpmMax = GrblSettings.GetDouble(GrblSetting.RpmMax); GrblParserState.Get(); if (!xmodelock) { xmode = GrblParserState.LatheMode; } SetLimits(); } return(GrblSettings.IsLoaded); }
bool InitSystem() { initOK = true; int timeout = 5; using (new UIUtils.WaitCursor()) { GCodeSender.EnablePolling(false); while (!GrblInfo.Get()) { if (--timeout == 0) { model.Message = (string)FindResource("MsgNoResponse"); return(false); } Thread.Sleep(500); } GrblAlarms.Get(); GrblErrors.Get(); GrblSettings.Load(); if (GrblInfo.IsGrblHAL) { GrblParserState.Get(); GrblWorkParameters.Get(); } else { GrblParserState.Get(true); } GCodeSender.EnablePolling(true); } GrblCommand.ToolChange = GrblInfo.ManualToolChange ? "M61Q{0}" : "T{0}"; showProgramLimits(); if (!AppConfig.Settings.GCodeViewer.IsEnabled) { tabGCode.Items.Remove(tab3D); } if (GrblInfo.NumAxes > 3) { limitsControl.Visibility = Visibility.Collapsed; } if (GrblInfo.LatheModeEnabled) { MainWindow.EnableView(true, ViewType.Turning); // MainWindow.EnableView(true, ViewType.Parting); // MainWindow.EnableView(true, ViewType.Facing); MainWindow.EnableView(true, ViewType.G76Threading); } else { MainWindow.ShowView(false, ViewType.Turning); MainWindow.ShowView(false, ViewType.Parting); MainWindow.ShowView(false, ViewType.Facing); MainWindow.ShowView(false, ViewType.G76Threading); } if (GrblInfo.HasSDCard) { MainWindow.EnableView(true, ViewType.SDCard); } else { MainWindow.ShowView(false, ViewType.SDCard); } if (GrblInfo.HasPIDLog) { MainWindow.EnableView(true, ViewType.PIDTuner); } else { MainWindow.ShowView(false, ViewType.PIDTuner); } if (GrblInfo.NumTools > 0) { MainWindow.EnableView(true, ViewType.Tools); } else { MainWindow.ShowView(false, ViewType.Tools); } if (GrblInfo.HasProbe && GrblSettings.ReportProbeCoordinates) { MainWindow.EnableView(true, ViewType.Probing); } MainWindow.EnableView(true, ViewType.Offsets); MainWindow.EnableView(true, ViewType.GRBLConfig); if (!string.IsNullOrEmpty(GrblInfo.TrinamicDrivers)) { MainWindow.EnableView(true, ViewType.TrinamicTuner); } else { MainWindow.ShowView(false, ViewType.TrinamicTuner); } return(true); }
private void InitSystem() { initOK = true; // TODO: check if grbl is in a state that allows replies using (new UIUtils.WaitCursor()) { GCodeSender.EnablePolling(false); GrblInfo.Get(); GrblSettings.Get(); GrblParserState.Get(); GrblWorkParameters.Get(); GCodeSender.EnablePolling(true); } model.Message = ""; GrblCommand.ToolChange = GrblInfo.ManualToolChange ? "M61Q{0}" : "T{0}"; GCodeSender.Config(MainWindow.UIViewModel.Profile.Config); if (GrblInfo.NumAxes > 3) { limitsControl.Visibility = Visibility.Collapsed; } if (GrblInfo.LatheModeEnabled) { MainWindow.EnableView(true, ViewType.Turning); MainWindow.EnableView(true, ViewType.Facing); MainWindow.EnableView(true, ViewType.G76Threading); } else { MainWindow.ShowView(false, ViewType.Turning); MainWindow.ShowView(false, ViewType.Facing); MainWindow.ShowView(false, ViewType.G76Threading); } if (GrblInfo.HasSDCard) { MainWindow.EnableView(true, ViewType.SDCard); } else { MainWindow.ShowView(false, ViewType.SDCard); } if (GrblInfo.HasPIDLog) { MainWindow.EnableView(true, ViewType.PIDTuner); } else { MainWindow.ShowView(false, ViewType.PIDTuner); } if (GrblInfo.NumTools > 0) { MainWindow.EnableView(true, ViewType.Tools); } else { MainWindow.ShowView(false, ViewType.Tools); } MainWindow.EnableView(true, ViewType.Offsets); MainWindow.EnableView(true, ViewType.GRBLConfig); if (!string.IsNullOrEmpty(GrblInfo.TrinamicDrivers)) { MainWindow.EnableView(true, ViewType.TrinamicTuner); } else { MainWindow.ShowView(false, ViewType.TrinamicTuner); } MainWindow.GCodePush += GCode.File.AddBlock; }
public void Activate(bool activate, ViewType chgMode) { if (activate) { if (model.CoordinateSystems.Count == 0) { // model.CoordinateSystems.Add(model.CoordinateSystem = new CoordinateSystem("Active", "0")); foreach (var cs in GrblWorkParameters.CoordinateSystems) { if (cs.Id > 0 && cs.Id < 9) { model.CoordinateSystems.Add(new CoordinateSystem(cs.Code, "0")); } if (cs.Id == 9) { model.HasCoordinateSystem9 = true; } } model.HasToolTable = GrblInfo.NumTools > 0; } if (GrblInfo.IsGrblHAL) { Comms.com.WriteByte(GrblConstants.CMD_STATUS_REPORT_ALL); } if (!model.Grbl.IsGrblHAL && !AppConfig.Settings.Jog.KeyboardEnable) { Jog.Visibility = Visibility.Collapsed; } if (GrblInfo.IsGrblHAL) { GrblParserState.Get(); GrblWorkParameters.Get(); } else { GrblParserState.Get(true); } model.DistanceMode = GrblParserState.DistanceMode; model.Tool = model.Grbl.Tool == GrblConstants.NO_TOOL ? "0" : model.Grbl.Tool; model.CanProbe = !model.Grbl.Signals.Value.HasFlag(Signals.Probe); model.HeightMapApplied = GCode.File.HeightMapApplied; int csid = GrblWorkParameters.GetCoordinateSystem(model.Grbl.WorkCoordinateSystem).Id; model.CoordinateSystem = csid == 0 || csid >= 9 ? 1 : csid; model.ReferenceToolOffset &= model.CanReferenceToolOffset; if (model.Grbl.IsTloReferenceSet && !double.IsNaN(model.Grbl.TloReference)) { model.TloReference = model.Grbl.TloReference; model.ReferenceToolOffset = false; } Probing.Command = GrblInfo.ReportProbeResult ? "G38.3" : "G38.2"; getView(tab.SelectedItem as TabItem)?.Activate(); model.Grbl.PropertyChanged += Grbl_PropertyChanged; probeTriggered = model.Grbl.Signals.Value.HasFlag(Signals.Probe); probeDisconnected = model.Grbl.Signals.Value.HasFlag(Signals.ProbeDisconnected); cycleStartSignal = model.Grbl.Signals.Value.HasFlag(Signals.CycleStart); DisplayPosition(model.Grbl); } else { model.Grbl.PropertyChanged -= Grbl_PropertyChanged; if (!model.Grbl.IsGCLock) { // If probing alarm active unlock //if(model.Grbl.GrblState.State == GrblStates.Alarm && (model.Grbl.GrblState.Substate == 4 || model.Grbl.GrblState.Substate == 5)) // model.WaitForResponse(GrblConstants.CMD_UNLOCK); //else if (model.Grbl.GrblError != 0) { model.WaitForResponse(""); // Clear error } model.WaitForResponse(model.DistanceMode == DistanceMode.Absolute ? "G90" : "G91"); } } model.Message = string.Empty; model.Grbl.Poller.SetState(activate ? AppConfig.Settings.Base.PollInterval : 0); }
private void InitSystem() { initOK = true; // TODO: check if grbl is in a state that allows replies using (new UIUtils.WaitCursor()) { GCodeSender.EnablePolling(false); GrblInfo.Get(); GrblSettings.Get(); GrblParserState.Get(); GrblWorkParameters.Get(); GCodeSender.EnablePolling(true); } model.Message = string.Empty; GrblCommand.ToolChange = GrblInfo.ManualToolChange ? "M61Q{0}" : "T{0}"; if (keyboard == null) { keyboard = new KeypressHandler(model); GCodeSender.Configure(keyboard); gcodeRenderer.Configure(); } showProgramLimits(); if (!AppConfig.Settings.GCodeViewer.IsEnabled) { tabGCode.Items.Remove(tab3D); } if (GrblInfo.NumAxes > 3) { limitsControl.Visibility = Visibility.Collapsed; } if (GrblInfo.LatheModeEnabled) { MainWindow.EnableView(true, ViewType.Turning); MainWindow.EnableView(true, ViewType.Facing); MainWindow.EnableView(true, ViewType.G76Threading); } else { MainWindow.ShowView(false, ViewType.Turning); MainWindow.ShowView(false, ViewType.Facing); MainWindow.ShowView(false, ViewType.G76Threading); } if (GrblInfo.HasSDCard) { MainWindow.EnableView(true, ViewType.SDCard); } else { MainWindow.ShowView(false, ViewType.SDCard); } if (GrblInfo.HasPIDLog) { MainWindow.EnableView(true, ViewType.PIDTuner); } else { MainWindow.ShowView(false, ViewType.PIDTuner); } if (GrblInfo.NumTools > 0) { MainWindow.EnableView(true, ViewType.Tools); } else { MainWindow.ShowView(false, ViewType.Tools); } MainWindow.EnableView(true, ViewType.Probing); MainWindow.EnableView(true, ViewType.Offsets); MainWindow.EnableView(true, ViewType.GRBLConfig); if (!string.IsNullOrEmpty(GrblInfo.TrinamicDrivers)) { MainWindow.EnableView(true, ViewType.TrinamicTuner); } else { MainWindow.ShowView(false, ViewType.TrinamicTuner); } }
private void InitSystem() { initOK = true; int timeout = 5; using (new UIUtils.WaitCursor()) { GCodeSender.EnablePolling(false); while (!GrblInfo.Get()) { if (--timeout == 0) { model.Message = "Controller is not responding!"; initOK = false; } Thread.Sleep(500); } GrblAlarms.Get(); GrblErrors.Get(); GrblSettings.Get(); GrblParserState.Get(); GrblWorkParameters.Get(); GCodeSender.EnablePolling(true); } GrblCommand.ToolChange = GrblInfo.ManualToolChange ? "M61Q{0}" : "T{0}"; if (keyboard == null) { keyboard = new KeypressHandler(model); GCodeSender.Configure(keyboard); gcodeRenderer.Configure(); } showProgramLimits(); if (!AppConfig.Settings.GCodeViewer.IsEnabled) { tabGCode.Items.Remove(tab3D); } if (GrblInfo.NumAxes > 3) { limitsControl.Visibility = Visibility.Collapsed; } if (GrblInfo.LatheModeEnabled) { MainWindow.EnableView(true, ViewType.Turning); // MainWindow.EnableView(true, ViewType.Parting); // MainWindow.EnableView(true, ViewType.Facing); MainWindow.EnableView(true, ViewType.G76Threading); } else { MainWindow.ShowView(false, ViewType.Turning); MainWindow.ShowView(false, ViewType.Parting); MainWindow.ShowView(false, ViewType.Facing); MainWindow.ShowView(false, ViewType.G76Threading); } if (GrblInfo.HasSDCard) { MainWindow.EnableView(true, ViewType.SDCard); } else { MainWindow.ShowView(false, ViewType.SDCard); } if (GrblInfo.HasPIDLog) { MainWindow.EnableView(true, ViewType.PIDTuner); } else { MainWindow.ShowView(false, ViewType.PIDTuner); } if (GrblInfo.NumTools > 0) { MainWindow.EnableView(true, ViewType.Tools); } else { MainWindow.ShowView(false, ViewType.Tools); } if (GrblInfo.HasProbe && GrblSettings.ReportProbeCoordinates) { MainWindow.EnableView(true, ViewType.Probing); } MainWindow.EnableView(true, ViewType.Offsets); MainWindow.EnableView(true, ViewType.GRBLConfig); if (!string.IsNullOrEmpty(GrblInfo.TrinamicDrivers)) { MainWindow.EnableView(true, ViewType.TrinamicTuner); } else { MainWindow.ShowView(false, ViewType.TrinamicTuner); } }
private void OnCompleted() { bool ok = true; var probing = DataContext as ProbingViewModel; if ((ok = probing.IsSuccess && probing.Positions.Count == 1)) { Position pos = new Position(probing.Positions[0]); //if (probing.HasToolTable) // probing.Grbl.ExecuteCommand(string.Format("G43H{0}{1}", probing.Tool, probing.Positions[0].ToString(AxisFlags.Z))); //else if (probing.ReferenceToolOffset) { probing.TloReference = pos.Z; // linear axis? probing.Grbl.ExecuteCommand("G49"); } if (probing.AddAction) { if (probing.ProbeFixture) { pos.Z = probing.FixtureHeight; } else { pos.Z = probing.WorkpieceHeight + probing.TouchPlateHeight; } if (probing.CoordinateMode == ProbingViewModel.CoordMode.G92) { probing.WaitForResponse("G92" + pos.ToString(AxisFlags.Z)); } else { probing.WaitForResponse(string.Format("G10L20P{0}{1}", probing.CoordinateSystem, pos.ToString(AxisFlags.Z))); } } else if (!probing.ReferenceToolOffset) { double tlo = pos.Z; if (!probing.ProbeFixture) { if (!double.IsNaN(probing.TloReference)) { tlo -= probing.TloReference; } } else if ((ok = probing.WaitForWcoUpdate() && probing.WaitForResponse(GrblConstants.CMD_GETNGCPARAMETERS))) { tlo = tlo - (probing.Grbl.WorkPositionOffset.Z - probing.Grbl.ToolOffset.Z) - probing.FixtureHeight; } if (ok) { probing.Grbl.ExecuteCommand("G43.1Z" + tlo.ToInvariantString(probing.Grbl.Format)); } } //if (probing.Tool != "0") // probing.Grbl.ExecuteCommand(string.Format("G10L11P{0}{1}", probing.Tool, probing.Positions[0].ToString(AxisFlags.Z))); // Go back to origin if (probing.ProbeFixture) { probing.GotoMachinePosition(probing.Grbl.HomePosition, AxisFlags.Z); probing.GotoMachinePosition(probing.StartPosition, AxisFlags.X | AxisFlags.Y); } probing.GotoMachinePosition(probing.StartPosition, AxisFlags.Z); } if (probing.ReferenceToolOffset) { probing.ReferenceToolOffset = !ok; probing.Grbl.ExecuteCommand("$TLR"); // Set tool length offset reference in controller } if (!probing.Grbl.IsParserStateLive) { if (GrblInfo.IsGrblHAL) { probing.Grbl.ExecuteCommand(GrblConstants.CMD_GETPARSERSTATE); } else { GrblParserState.Get(true); } } probing.Program.End((string)FindResource(ok ? "ProbingCompleted" : "ProbingFailed")); }
private void InitSystem() { initOK = true; // TODO: check if grbl is in a state that allows replies using (new UIUtils.WaitCursor()) { GCodeSender.EnablePolling(false); GrblInfo.Get(); GrblSettings.Get(); GrblParserState.Get(); GrblWorkParameters.Get(); GCodeSender.EnablePolling(true); } workParametersControl.ToolChangeCommand = GrblInfo.ManualToolChange ? "T{0}M6" : "T{0}"; GCodeSender.Config(); if (GrblInfo.LatheModeEnabled) { DRO.EnableLatheMode(); signalsControl.SetLatheMode(); MainWindow.EnableView(true, ViewType.Turning); MainWindow.EnableView(true, ViewType.Facing); MainWindow.EnableView(true, ViewType.G76Threading); } else { DRO.SetNumAxes(GrblInfo.NumAxes); signalsControl.SetNumAxes(GrblInfo.NumAxes); MainWindow.ShowView(false, ViewType.Turning); MainWindow.ShowView(false, ViewType.Facing); MainWindow.ShowView(false, ViewType.G76Threading); } if (GrblInfo.HasSDCard) { MainWindow.EnableView(true, ViewType.SDCard); } else { MainWindow.ShowView(false, ViewType.SDCard); } if (GrblInfo.HasPIDLog) { MainWindow.EnableView(true, ViewType.PIDTuner); } else { MainWindow.ShowView(false, ViewType.PIDTuner); } if (GrblInfo.NumTools > 0) { MainWindow.EnableView(true, ViewType.Tools); } else { MainWindow.ShowView(false, ViewType.Tools); } MainWindow.EnableView(true, ViewType.Offsets); MainWindow.EnableView(true, ViewType.GRBLConfig); if (!string.IsNullOrEmpty(GrblInfo.TrinamicDrivers)) { MainWindow.EnableView(true, ViewType.TrinamicTuner); } else { MainWindow.ShowView(false, ViewType.TrinamicTuner); } MainWindow.GCodePush += UserUI_GCodePush; txtStatus.Text = ""; }