Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Toggle When Pressed Option (http://www.chiefdelphi.com/forums/showthread.php?t=125748)

vandle879 03-02-2014 13:08

Toggle When Pressed Option
 
First year doing Java and I don't have a robot yet to test on so I was wondering about the toggleWhenPressed option.

Does it simply just switch between the execute and end in whatever command its mapped to each time the same button is pressed?

Ex. Is this the correct usage?

OI

joystickButton1.toggleWhenPressed(new FireSolenoid());


FireSolenoid

...
protected void execute() {
Robot.shooter.pistonUp();
}
...
protected void end() {
Robot.shooter.pistonDown();
}



Will this just switch between pistonUp and pistonDown each time I press button 1?

notmattlythgoe 03-02-2014 13:14

Re: Toggle When Pressed Option
 
Quote:

Originally Posted by vandle879 (Post 1336874)
First year doing Java and I don't have a robot yet to test on so I was wondering about the toggleWhenPressed option.

Does it simply just switch between the execute and end in whatever command its mapped to each time the same button is pressed?

Ex. Is this the correct usage?

OI

joystickButton1.toggleWhenPressed(new FireSolenoid());


FireSolenoid

...
protected void execute() {
Robot.shooter.pistonUp();
}
...
protected void end() {
Robot.shooter.pistonDown();
}



Will this just switch between pistonUp and pistonDown each time I press button 1?

I'm assuming it doesn't use the end() but the interrupted() method. The whileHeld() method cancels the command that was running, so I'd assume the toggle would do the same thing.

Do you at least have a crio you could plug into and run the code. If you do you could put print statements into those methods to verify that they are being called the way you think they are.

vandle879 08-02-2014 10:45

Re: Toggle When Pressed Option
 
Quote:

Originally Posted by notmattlythgoe (Post 1336882)
I'm assuming it doesn't use the end() but the interrupted() method. The whileHeld() method cancels the command that was running, so I'd assume the toggle would do the same thing.

Finally got around to trying this out on a cRIO and you were right the interrupted method is what is used to toggle the command.

Thanks for the help!

Ginto8 08-02-2014 23:49

Re: Toggle When Pressed Option
 
The implementation may make things clearer (from Toggle.java in WPILibJ):
Code:

  /**
    * Toggles a command when the trigger becomes active
    * @param command the command to toggle
    */
    public void toggleWhenActive(final Command command) {
        new ButtonScheduler() {

            boolean pressedLast = grab();

            public void execute() {
                if (grab()) {
                    if (!pressedLast) {
                        pressedLast = true;
                        if (command.isRunning()){
                            command.cancel();
                        } else{
                            command.start();
                        }
                    }
                } else {
                    pressedLast = false;
                }
            }
        }.start();
    }



All times are GMT -5. The time now is 09:33.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi