Как связать кнопки в javaFx с выводами GPIO на RPI - PullRequest
0 голосов
/ 27 июня 2019

У меня есть код сома, который я нашел для доступа к выводам gpio на rpi с intellij. Я также построил простой код javaFx, простое окно с 3 кнопками. Я хочу, чтобы эти 3 кнопки включили вывод, выключили вывод и закрыли окно. У меня есть весь код, который мне нужен, я просто не знаю, как это сделать. И то и другое коды работает самостоятельно. Я строю систему орошения для заводов, и у меня все оборудование работает. В этой первой версии я просто хочу использовать функцию простого выключения.

Это мой код javafx без импорта, очень просто.

public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) {

        primaryStage.setTitle("Title of Window");
        button1 = new Button("Start");
        button2 = new Button("Stop");
        button3 = new Button("Exit");
        button1.setOnAction(e -> ); // Start gpio 
        button2.setOnAction(e -> ); // Stop gpio
        button3.setOnAction(e -> primaryStage.close());
        StackPane layout = new StackPane();
        layout.getChildren().add(button1);
        button1.setTranslateX(0);
        button1.setTranslateY(20);
        layout.getChildren().add(button2);
        button2.setTranslateX(50);
        button2.setTranslateY(20);
        layout.getChildren().add(button3);
        button3.setTranslateX(108);
        button3.setTranslateY(20);
        Scene scene = new Scene(layout, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
}
}

И это метод, который я хочу связать кнопку с 1 и 2.

public class gpio {

    public static void main(String[] args) throws InterruptedException {
        final GpioController gpio = GpioFactory.getInstance();
        final GpioPinDigitalOutput pin = 
    gpio.provisionDigitalOutputPin(RaspiPin.GPIO_07, "MyLED", PinState.HIGH);
        pin.setShutdownOptions(true, PinState.LOW);

        // toggle the current state of gpio pin #01 (should turn on)
        pin.toggle();
        System.out.println("--> GPIO state should be: ON");
        // toggle the current state of gpio pin #01  (should turn off)
        pin.toggle();
        System.out.println("--> GPIO state should be: OFF");
}
}

код найден здесь https://pi4j.com/1.2/example/control.html

Это, вероятно, легко решить, но для меня это крепкий орешек, поэтому я надеялся учиться у кого-то более талантливого в Java, чем у меня, или если бы я мог указать на кого-то, кто сталкивался с подобными проблемами.

1 Ответ

0 голосов
/ 27 июня 2019

То же самое для button2

button1.setOnAction(new EventHandler<ActionEvent>() {
   @Override public void handle(ActionEvent e) {
        final GpioController gpio = GpioFactory.getInstance();
        final GpioPinDigitalOutput pin = 
        gpio.provisionDigitalOutputPin(RaspiPin.GPIO_07, "MyLED", PinState.HIGH);
        pin.setShutdownOptions(true, PinState.LOW);

        // toggle the current state of gpio pin #01 (should turn on)
        pin.toggle();
        System.out.println("--> GPIO state should be: ON");
   }
 });

PS : не забудьте про необходимый импорт

...