miss first event of ButtonListener

21 views
Skip to first unread message

Hannes

unread,
Dec 6, 2014, 4:06:09 AM12/6/14
to libbu...@googlegroups.com
Hello!

I have:
                // Detect the board we are running on
Board board = Platform.createBoard();

// Set up the digital output
final DigitalOutput out1 = board.getPin(BBBNames.P9_23).as(
DigitalOutput.class);
final DigitalOutput out2 = board.getPin(BBBNames.P9_14).as(
DigitalOutput.class);
final DigitalOutput out3 = board.getPin(BBBNames.P8_17).as(
DigitalOutput.class);
final DigitalOutput out4 = board.getPin(BBBNames.P8_16).as(
DigitalOutput.class);
final DigitalOutput out5 = board.getPin(BBBNames.P8_15).as(
DigitalOutput.class);
final DigitalOutput out6 = board.getPin(BBBNames.P8_18).as(
DigitalOutput.class);

// Set it low
out1.low();
out2.low();
out3.low();
out4.low();
out5.low();
out6.low();

// Set up a digital input
DigitalInput in1 = board.getPin(BBBNames.P8_8).as(DigitalInput.class);
DigitalInput in2 = board.getPin(BBBNames.P8_7).as(DigitalInput.class);
DigitalInput in3 = board.getPin(BBBNames.P8_10).as(DigitalInput.class);
DigitalInput in4 = board.getPin(BBBNames.P8_9).as(DigitalInput.class);
DigitalInput in5 = board.getPin(BBBNames.P8_12).as(DigitalInput.class);
DigitalInput in6 = board.getPin(BBBNames.P8_11).as(DigitalInput.class);
DigitalInput in7 = board.getPin(BBBNames.P8_14).as(DigitalInput.class);
DigitalInput in8 = board.getPin(BBBNames.P8_13).as(DigitalInput.class);
DigitalInput in9 = board.getPin(BBBNames.P9_16).as(DigitalInput.class);
DigitalInput in10 = board.getPin(BBBNames.P9_15).as(DigitalInput.class);
DigitalInput in11 = board.getPin(BBBNames.P9_18).as(DigitalInput.class);
DigitalInput in12 = board.getPin(BBBNames.P9_17).as(DigitalInput.class);
DigitalInput in13 = board.getPin(BBBNames.P9_42).as(DigitalInput.class);
DigitalInput in14 = board.getPin(BBBNames.P9_41).as(DigitalInput.class);

in1.setInterruptDebounceMs(50);
in2.setInterruptDebounceMs(50);
in3.setInterruptDebounceMs(50);
in4.setInterruptDebounceMs(50);
in5.setInterruptDebounceMs(50);
in6.setInterruptDebounceMs(50);
in7.setInterruptDebounceMs(50);
in8.setInterruptDebounceMs(50);
in9.setInterruptDebounceMs(50);
in10.setInterruptDebounceMs(50);
in11.setInterruptDebounceMs(50);
in12.setInterruptDebounceMs(50);
in13.setInterruptDebounceMs(50);
in14.setInterruptDebounceMs(50);

// Create the button with this DigitalInput
Button but1 = new Button(in1, Signal.Low);
Button but2 = new Button(in2, Signal.Low);
Button but3 = new Button(in3, Signal.Low);
Button but4 = new Button(in4, Signal.Low);
Button but5 = new Button(in5, Signal.Low);
Button but6 = new Button(in6, Signal.Low);
Button but7 = new Button(in7, Signal.Low);
Button but8 = new Button(in8, Signal.Low);
Button but9 = new Button(in9, Signal.Low);
Button but10 = new Button(in10, Signal.Low);
Button but11 = new Button(in11, Signal.Low);
Button but12 = new Button(in12, Signal.Low);
Button but13 = new Button(in13, Signal.Low);
Button but14 = new Button(in14, Signal.Low);

                BulldogUtil.sleepMs(1000);
out1.high(); 
BulldogUtil.sleepMs(500);

step1 = true;
// Add a button listener
but1.addListener(new ButtonListener() {

public void buttonPressed() {
System.out.println("PRESSED 1");
if (step1) {
BulldogUtil.sleepMs(500);
out1.low();
}
}

public void buttonReleased() {
System.out.println("RELEASED 1");

if (step1) {
BulldogUtil.sleepMs(500);
step2 = true;
step1 = false;
out1.low();
out2.high();
}

}

});

but2.addListener(new ButtonListener() {

public void buttonPressed() {
System.out.println("PRESSED 2");
if (step2) {
BulldogUtil.sleepMs(500);
out2.low();
}

}

public void buttonReleased() {
System.out.println("RELEASED 2");
if (step2) {
BulldogUtil.sleepMs(500);
step3 = true;
step2 = false;
out2.low();
out3.high();
}
}

});

... and so on

What does the code do:
I close an output, which is hardware connect to input.
if input is pressed, I open the output and fired again the ButtonListener.

So its a running on/off over 6 outputs and inputs.

But when I start the code, the out 1 is close, the input get the signal, but the ButtonListener are NOT fired.
When I disconnect, then I get immediately the "ButtonReleased" and the outputs are "running"

after output 6, he start at output1 and NOW it works fine and run and run.

So why miss he the first ButtonPressed Event?

Thank you!

Hannes

unread,
Dec 6, 2014, 4:12:59 AM12/6/14
to libbu...@googlegroups.com
Sorry, I found my mistake.
I switch first the output and THEN I set the Buttonlistener!

Now it works
Reply all
Reply to author
Forward
0 new messages