private bool verifyAndCompileIfStatement(string v) { if (Regex.Matches(v, ifPattern).Count != 1) { return(false); } ConditionalDirections direction = getConditionalDirectionFromCodeLine(v); ConditionalLights led = getLedFromCodeLine(v); ActuatorState state = getLedStateFromCodeLine(v); ConditionalCmnds.Add(new ConditionalLightCommand(direction, led, state)); return(true); }
private static ActuatorState GetActuatorState(int joystick, Actuator actuator, ActuatorState oldState) { ActuatorState newState = oldState; float inputValue; bool inputButton; bool inputDown; bool inputUp; if (actuator.inputIsAxis) { string axisName = InputAxisNames[joystick, actuator.inputAxis]; float rawValue = Input.GetAxisRaw(axisName); if (actuator.inputFalseZero && !newState.handledFalseZero) { if (Mathf.Approximately(rawValue, 0f)) { rawValue = actuator.inputMin; } else { newState.handledFalseZero = true; } } inputValue = Mathf.InverseLerp(actuator.inputMin, actuator.inputMax, rawValue); inputButton = (inputValue >= 0.75f); inputDown = false; inputUp = false; } else { string keyName = InputButtonKeyNames[joystick, actuator.inputButton]; bool rawValue = Input.GetKey(keyName); inputValue = rawValue ? actuator.inputMax : actuator.inputMin; inputButton = rawValue; inputDown = Input.GetKeyDown(keyName); inputUp = Input.GetKeyUp(keyName); } // FIXME - handle dead zone // return Mathf.InverseLerp(config.deadZone, 1, Mathf.Abs(value)) * Mathf.Sign(value); newState.axis = Mathf.Lerp(actuator.outputMin, actuator.outputMax, inputValue); newState.button = inputButton; newState.buttonDown = inputDown; newState.buttonUp = inputUp; return(newState); }
private ActuatorState getLedStateFromCodeLine(string v) { ActuatorState state = ActuatorState.Off; MatchCollection matchedValues = Regex.Matches(v, LedStatePattern); if (matchedValues.Count != 1) { return(state); } Enum.TryParse(matchedValues[0].Value, out state); if (matchedValues[0].Value == "Loop") { state = ActuatorState.Looping; } return(state); }
public void OnUpdateActuatorData(ActuatorState state, String actuatorDuration) { try { _incubatorManager.State = state; buttonStartTilt.IsEnabled = !(state == ActuatorState.Paused); if (state != ActuatorState.Paused) { if (state == ActuatorState.Unknown || state == ActuatorState.Stopped) { ActuatorButtonText = "Démarrer l'inclinaison"; } else { ActuatorButtonText = "Arrêter l'inclinaison"; } labelTilt.Content = "[ " + actuatorDuration + " ] "; labelTilt.Foreground = Brushes.Black; buttonOpenActuator.IsEnabled = true; buttonCloseActuator.IsEnabled = true; switch (state) { case ActuatorState.Open: { labelTilt.Foreground = Brushes.OrangeRed; labelTilt.Content += "Incliné à gauche"; } break; case ActuatorState.Close: { labelTilt.Foreground = Brushes.OrangeRed; labelTilt.Content += "Incliné à droite"; } break; case ActuatorState.Opening: { labelTilt.Foreground = Brushes.Green; labelTilt.Content += "Inclinaison vers la gauche..."; buttonOpenActuator.IsEnabled = false; buttonCloseActuator.IsEnabled = false; } break; case ActuatorState.Closing: { labelTilt.Foreground = Brushes.Green; labelTilt.Content += "Inclinaison vers la droite..."; buttonOpenActuator.IsEnabled = false; buttonCloseActuator.IsEnabled = false; } break; case ActuatorState.Stopped: labelTilt.Content += "Inclinaison arrêté"; break; case ActuatorState.Unknown: labelTilt.Content += "Inclinaison inconnue"; break; } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
internal ConditionalLightView(Level3ViewModel dataContext, ConditionalDirections direction, ConditionalLights light, ActuatorState state) { InitializeComponent(); DataContext = new ConditionalLightViewModel(dataContext, direction, light, state); }
public void Continue() { if (_actuatorState == ActuatorState.Paused) { _actuatorState = _actuatorPreviousState; } }
public void Pause() { _actuatorState = ActuatorState.Paused; SetOutputState(); }
public void ManageState() { if (_duration > TimeSpan.Zero && _actuatorState != ActuatorState.Paused) { _duration = _duration.Subtract(new TimeSpan(0, 0, 1)); } if (_actuatorCommand == ActuatorCommand.Start) { if (_autoModeReady) { if (_actuatorState == ActuatorState.Closing) { if (_duration == TimeSpan.Zero) { //Start waiting period _duration = new TimeSpan(TILT_INTERVAL, 0, 0); _actuatorState = ActuatorState.Close; } } else if (_actuatorState == ActuatorState.Open || _actuatorState == ActuatorState.Close || _actuatorState == ActuatorState.Stopped) { if (_duration == TimeSpan.Zero) { //Start moving actuator _duration = new TimeSpan(0, 0, ACTUARTOR_DELAY); if (_actuatorState == ActuatorState.Open) { _actuatorState = ActuatorState.Closing; } else if (_actuatorState == ActuatorState.Close) { _actuatorState = ActuatorState.Opening; } } } else if (_actuatorState == ActuatorState.Opening) { if (_duration == TimeSpan.Zero) { //Start waiting period _duration = new TimeSpan(TILT_INTERVAL, 0, 0); _actuatorState = ActuatorState.Open; } } else if (_actuatorState == ActuatorState.Paused) { _actuatorState = _actuatorPreviousState; } } else { if (_duration == TimeSpan.Zero) { if (_autoModeInitializing) { //Initializing actuator completed _autoModeReady = true; _autoModeInitializing = false; } else { //Start initializing actuator _duration = new TimeSpan(0, 0, ACTUARTOR_DELAY); _autoModeInitializing = true; _actuatorState = ActuatorState.Closing; } } } } else if (_actuatorCommand == ActuatorCommand.Stop) { _actuatorState = ActuatorState.Stopped; _duration = TimeSpan.Zero; _autoModeReady = false; _autoModeInitializing = false; } else if (_actuatorCommand == ActuatorCommand.Pause) { _actuatorState = ActuatorState.Paused; } if (_actuatorPreviousState != _actuatorState) { SetOutputState(); if (_actuatorState != ActuatorState.Paused) { _actuatorPreviousState = _actuatorState; } } }
public ConditionalLightViewModel(Level3ViewModel parent, ConditionalDirections direction, ConditionalLights light, ActuatorState state) { _parent = parent; ConditionalCommand = new ConditionalLightCommand(direction, light, state); _parent.AddToConditionalCommandList(ConditionalCommand); ChangeState = new RelayCommand(changeState); }