/** * Method that handles when the GUI buttons are held down (Vehicle is moving a single direction) */ private void ButtonPress_Event(object sender, RoutedEventArgs e) { //TODO add button up event for stop command //var picar = (PiCarConnection)DeviceListMn.SelectedItem; //if (picar == null || picar.Mode != ModeRequest.Types.Mode.Lead) return; var button = (RepeatButton)sender; switch (button.Name) { case "Forward": LogField.AppendText(DateTime.Now + ":\tMoving forward\n"); MoveVehicle(1.0, 0.0); break; case "Backwards": LogField.AppendText(DateTime.Now + ":\tMoving backwards\n"); MoveVehicle(-1.0, 0.0); break; case "Left": LogField.AppendText(DateTime.Now + ":\tMoving left\n"); MoveVehicle(0.0, -1.0); break; case "Right": LogField.AppendText(DateTime.Now + ":\tMoving right\n"); MoveVehicle(0.0, 1.0); break; default: Console.WriteLine("Mistakes were made"); break; } LogField.ScrollToEnd(); }
/** * Method that handles when one or more key is released (Vehicle is stopping in one or more directions) */ private void Key_up(object sender, KeyEventArgs e) { //var picar = (PiCarConnection)DeviceListMn.SelectedItem; //if (picar == null || picar.Mode != ModeRequest.Types.Mode.Lead) return; var directionMotor = 0.0; var throttleMotor = 0.0; if (Keyboard.IsKeyUp(Key.W) && Keyboard.IsKeyUp(Key.Up)) { throttleMotor--; } if (Keyboard.IsKeyUp(Key.S) && Keyboard.IsKeyUp(Key.Down)) { throttleMotor++; } if (Keyboard.IsKeyUp(Key.A) && Keyboard.IsKeyUp(Key.Left)) { directionMotor++; } if (Keyboard.IsKeyUp(Key.D) && Keyboard.IsKeyUp(Key.Right)) { directionMotor--; } string output = Direction.EncodeDirection(DateTime.Now, throttleMotor, directionMotor); LogField.AppendText(output); MoveVehicle(throttleMotor, directionMotor); LogField.ScrollToEnd(); }
/** * Method that handles when the GUI button is released (Vehicle is stopped) */ private void ButtonPress_Released(object sender, RoutedEventArgs e) { //var picar = (PiCarConnection)DeviceListMn.SelectedItem; //if (picar == null || picar.Mode != ModeRequest.Types.Mode.Lead) return; LogField.AppendText(DateTime.Now + ":\tNow In Neutral\n"); MoveVehicle(0.0, 0.0); LogField.ScrollToEnd(); }
//stops the stream from being saved private void StopSaving_Click(object sender, RoutedEventArgs e) { StreamSavingHeader.IsEnabled = true; StopStreamSavingHeader.IsEnabled = false; if (_saveStreamEnabled == true) { LogField.AppendText(DateTime.Now + ":\tStream will no longer be saved to a file\n"); LogField.ScrollToEnd(); } _saveStreamEnabled = false; }
private void SetFollowerModelPID_Click(object sender, RoutedEventArgs e) { var picar = SelectedPiCar(); if (picar is null) { return; } LogField.AppendText(DateTime.Now + ":\tSetting " + picar + "to legacy PID follower model\n"); LogField.ScrollToEnd(); picar.SetFollowerModel(1); }
private void DisconnectCar(PiCarConnection picar) { if (picar.GetType() == typeof(DummyConnection)) { return; } LogField.AppendText(DateTime.Now + ":\t" + picar + " stopped responding, disconnecting.\n"); LogField.ScrollToEnd(); deviceListMain.Remove(picar); DeviceListMn.ItemsSource = null; DeviceListMn.ItemsSource = deviceListMain; }
//opens up window for user to specify directory they want to save file to //and allows them to specify the session prefix name private void ImageSaving_Click(object sender, RoutedEventArgs e) { if (SaveStreamSetup == null) { SaveStreamSetup = new SaveStreamSetup(); SaveStreamSetup.Show(); } else if (SaveStreamSetup != null) { SaveStreamSetup.Focus(); } LogField.ScrollToEnd(); }
private void SetVehicleMode(PiCarConnection picar, ModeRequest.Types.Mode mode) { try { picar.SetMode(mode); DeviceStatus.Text = picar.Mode.ToString(); LogField.AppendText(DateTime.Now + ":\tSetting " + picar + "to " + picar.Mode.ToString() + "\n"); LogField.ScrollToEnd(); } catch (Exception e) { DisconnectCar(picar); Console.WriteLine(e); } }
private void ModeChanger_Click(object sender, RoutedEventArgs e) { if (_controlMode) { _controlMode = false; DefaultHeader.IsEnabled = true; AlternativeHeader.IsEnabled = false; LogField.AppendText(DateTime.Now + ":\tUsing RC control mode\n"); } else { _controlMode = true; DefaultHeader.IsEnabled = false; AlternativeHeader.IsEnabled = true; LogField.AppendText(DateTime.Now + ":\tUsing simulator control mode\n"); } LogField.ScrollToEnd(); }
/** * Method that handles when one or more key is pressed down (Vehicle is moving in one or more directions) */ private void Key_down(object sender, KeyEventArgs e) { //var picar = (PiCarConnection)DeviceListMn.SelectedItem; //if (picar == null || picar.Mode != ModeRequest.Types.Mode.Lead) return; if (e.IsRepeat) { return; } var directionMotor = 0.0; var throttleMotor = 0.0; string[] throttleStrings = { "Moving backwards", "In Neutral", "Moving forwards" }; string[] directionStrings = { "and left", "", "and right" }; if (Keyboard.IsKeyDown(Key.W) || Keyboard.IsKeyDown(Key.Up)) { throttleMotor++; } if (Keyboard.IsKeyDown(Key.S) || Keyboard.IsKeyDown(Key.Down)) { throttleMotor--; } if (Keyboard.IsKeyDown(Key.A) || Keyboard.IsKeyDown(Key.Left)) { directionMotor--; } if (Keyboard.IsKeyDown(Key.D) || Keyboard.IsKeyDown(Key.Right)) { directionMotor++; } string output = Direction.EncodeDirection(DateTime.Now, throttleMotor, directionMotor); LogField.AppendText(output); MoveVehicle(throttleMotor, directionMotor); LogField.ScrollToEnd(); }
/** * Method that handles the simulator style input for variable speed and direction */ private void ControllerMovement() { //var picar = (PiCarConnection)DeviceListMn.SelectedItem; //if (picar == null || picar.Mode != ModeRequest.Types.Mode.Lead) return; var state = _controller.GetState().Gamepad; //Default control settings (Simulator Mode) if (_controlMode) { if (state.LeftThumbX.Equals(_previousState.LeftThumbX) && state.LeftTrigger.Equals(_previousState.LeftTrigger) && state.RightTrigger.Equals(_previousState.RightTrigger)) { return; } //_Motor1 produces either -1.0 for left or 1.0 for right motion _directionController = Math.Abs((double)state.LeftThumbX) < DeadzoneValue ? 0 : (double)state.LeftThumbX / short.MinValue * -1; _directionController = Math.Round(_directionController, 3); /** * These variables produce either 1.0 for forward motion, or -1 for backwards. * If the values are both non-zero, then there will be no motion in either direction */ var forwardSpeed = Math.Round(state.RightTrigger / 255.0, 3); var backwardSpeed = Math.Round(state.LeftTrigger / 255.0 * -1.0, 3); if (forwardSpeed > 0 && backwardSpeed == 0) { _throttleController = forwardSpeed; } else if (backwardSpeed < 0 && forwardSpeed == 0) { _throttleController = backwardSpeed; } else { _throttleController = 0.0; } } //Alternative control settings (RC Mode) else { if (state.LeftThumbY.Equals(_previousState.LeftThumbY) && state.RightThumbX.Equals(_previousState.RightThumbX)) { return; } _directionController = Math.Abs((double)state.RightThumbX) < DeadzoneValue ? 0 : (double)state.RightThumbX / short.MinValue * -1; _directionController = Math.Round(_directionController, 3); _throttleController = Math.Abs((double)state.LeftThumbY) < DeadzoneValue ? 0 : (double)state.LeftThumbY / short.MinValue * -1; } string output = Direction.EncodeDirection(DateTime.Now, _throttleController, _directionController); LogField.AppendText(output); LogField.ScrollToEnd(); MoveVehicle(_throttleController, _directionController); _previousState = state; }