void btn_Click(object sender, RoutedEventArgs e) { switch ((StatusButton)((Control)sender).Tag) { case StatusButton.Reset: Grbl.Reset(); break; case StatusButton.Unlock: (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_UNLOCK); break; case StatusButton.Home: // ((Control)sender).Background = Brushes.LightSkyBlue; (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_HOMING); break; case StatusButton.Check: GrblStates state = (DataContext as GrblViewModel).GrblState.State; if(state == GrblStates.Check && (sender as CheckBox).IsChecked == false) Grbl.Reset(); else if (state == GrblStates.Idle && (sender as CheckBox).IsChecked == true) (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_CHECK); break; } }
public object Convert(object[] value, Type targetType, object parameter, CultureInfo culture) { GrblStates state = value[0] is GrblState ? ((GrblState)value[0]).State : GrblStates.Unknown; // If ALARM:11 homing is required bool result = state == GrblStates.Alarm && ((GrblState)value[0]).Substate == 11; // value[1] = IsJobRunning // value[2] = IsSleeping if (!result && GrblInfo.HomingEnabled && value.Length > 2 && value[1] is bool && !(bool)value[1] && value[2] is bool && !(bool)value[2]) { result = state != GrblStates.Unknown && !((GrblState)value[0]).MPG && (state == GrblStates.Idle || state == GrblStates.Alarm || !GrblInfo.IsGrblHAL); } return(result); }
void btn_Click(object sender, RoutedEventArgs e) { switch ((StatusButton)((Control)sender).Tag) { case StatusButton.Reset: var model = (DataContext as GrblViewModel); if (model.GrblState.State == GrblStates.Alarm && model.GrblState.Substate == 10 && model.Signals.Value.HasFlag(Signals.EStop)) { MessageBox.Show((string)FindResource("ClearEStop"), "ioSender", MessageBoxButton.OK, MessageBoxImage.Exclamation); } else { Grbl.Reset(); } break; case StatusButton.Unlock: (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_UNLOCK); break; case StatusButton.Home: // ((Control)sender).Background = Brushes.LightSkyBlue; (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_HOMING); break; case StatusButton.Check: GrblStates state = (DataContext as GrblViewModel).GrblState.State; if (state == GrblStates.Check && (sender as CheckBox).IsChecked == false) { Grbl.Reset(); } else if (state == GrblStates.Idle && (sender as CheckBox).IsChecked == true) { (DataContext as GrblViewModel).ExecuteCommand(GrblConstants.CMD_CHECK); } break; } }
public bool SetGRBLState(string newState, int substate, bool force) { GrblStates newstate = _grblState.State; Enum.TryParse(newState, true, out newstate); if (newstate != _grblState.State || substate != _grblState.Substate || force) { bool checkChanged = _grblState.State == GrblStates.Check || newstate == GrblStates.Check; bool sleepChanged = _grblState.State == GrblStates.Sleep || newstate == GrblStates.Sleep; _grblState.State = newstate; _grblState.Substate = substate; // force = true; switch (_grblState.State) { case GrblStates.Run: _grblState.Color = Colors.LightGreen; break; case GrblStates.Alarm: _grblState.Color = Colors.Red; break; case GrblStates.Jog: _grblState.Color = Colors.Yellow; break; case GrblStates.Tool: _grblState.Color = Colors.LightSalmon; break; case GrblStates.Hold: _grblState.Color = Colors.LightSalmon; break; case GrblStates.Door: if (_grblState.Substate > 0) { _grblState.Color = _grblState.Substate == 1 ? Colors.Red : Colors.LightSalmon; } break; case GrblStates.Home: case GrblStates.Sleep: _grblState.Color = Colors.LightSkyBlue; break; case GrblStates.Check: _grblState.Color = Colors.White; break; default: _grblState.Color = Colors.White; break; } OnPropertyChanged(nameof(GrblState)); if (checkChanged || force) { OnPropertyChanged(nameof(IsCheckMode)); } if (sleepChanged || force) { OnPropertyChanged(nameof(IsSleepMode)); } if (newstate == GrblStates.Sleep) { Message = "<Reset> to continue."; } else if (newstate == GrblStates.Alarm) { Message = substate == 11 ? "<Home> to continue." : "<Reset> then <Unlock> to continue."; if (substate == 11) { HomedState = HomedState.NotHomed; } } } return(force); }
void SetGRBLState(string newState, int substate, bool force) { GrblStates newstate = (GrblStates)Enum.Parse(typeof(GrblStates), newState); if (newstate != this.grblState.State || substate != this.grblState.Substate || force) { switch (newstate) { case GrblStates.Idle: this.grblState.Color = Color.White; if (this.pgmComplete) { JobTimer.Stop(); this.txtRunTime.Text = JobTimer.RunTime; RewindFile(); } if (JobTimer.IsRunning) { JobTimer.Pause = true; } else { SetStreamingState(StreamingState.Idle); } break; case GrblStates.Run: if (JobTimer.IsPaused) { JobTimer.Pause = false; } this.grblState.Color = Color.LightGreen; // if (this.grblState.State == GrblStates.Hold || this.grblState.State == GrblStates.Door || this.grblState.State == GrblStates.Tool) SetStreamingState(StreamingState.Send); break; case GrblStates.Alarm: this.grblState.Color = Color.Red; break; case GrblStates.Jog: this.grblState.Color = Color.Yellow; break; case GrblStates.Tool: this.grblState.Color = Color.LightSalmon; SetStreamingState(StreamingState.ToolChange); Comms.com.WriteByte((byte)GrblConstants.CMD_TOOL_ACK); break; case GrblStates.Hold: this.grblState.Color = Color.LightSalmon; SetStreamingState(StreamingState.FeedHold); break; case GrblStates.Door: if (substate > 0) { this.grblState.Color = grblState.Substate == 1 ? Color.Red : Color.LightSalmon; if (this.streamingState == StreamingState.Send) { SetStreamingState(StreamingState.FeedHold); } } break; default: this.grblState.Color = Color.White; break; } this.grblState.State = newstate; this.grblState.Substate = substate; if (GrblStateChanged != null) { GrblStateChanged(grblState); } } }
void SetGRBLState(string newState, int substate) { GrblStates newstate = (GrblStates)Enum.Parse(typeof(GrblStates), newState); if (newstate != this.grblState.State || substate != this.grblState.Substate) { switch (newstate) { case GrblStates.Idle: this.grblState.Color = Color.White; if (this.pgmComplete) { this.stopWatch.Stop(); txtRunTime.Text = this.runTime; RewindFile(); SetStreamingState(StreamingState.Idle); } break; case GrblStates.Run: this.grblState.Color = Color.LightGreen; if (this.grblState.State == GrblStates.Hold || this.grblState.State == GrblStates.Door) { SetStreamingState(StreamingState.Send); } break; case GrblStates.Alarm: this.grblState.Color = Color.Red; break; case GrblStates.Jog: this.grblState.Color = Color.Yellow; break; case GrblStates.Tool: case GrblStates.Hold: this.grblState.Color = Color.LightSalmon; SetStreamingState(StreamingState.FeedHold); break; case GrblStates.Door: if (substate > 0) { this.grblState.Color = grblState.Substate == 1 ? Color.Red : Color.LightSalmon; if (this.State == StreamingState.Send) { SetStreamingState(StreamingState.FeedHold); } } break; default: this.grblState.Color = Color.White; break; } this.grblState.State = newstate; this.grblState.Substate = substate; if (GrblStateChanged != null) { GrblStateChanged(grblState); } } }