diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java index 3a9498c..1770c9d 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java +++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java @@ -8,7 +8,11 @@ import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.scene.Scene; import javafx.scene.control.*; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import java.io.File; @@ -81,12 +85,26 @@ public class Controller_Frontend { private static volatile boolean isAutoRunActive = true; private static volatile boolean isSleeping = false; - public static void stopRunFromBackend(){ + public static void stopRunFromBackend(String message){ isAutoRunActive = false; if (isSleeping) isSleeping = false; else DataRegister.resetPC(); + Stage stoppedStage = new Stage(); + stoppedStage.setTitle("Programm unterbrochen!"); + VBox vbox = new VBox(); + vbox.setAlignment(javafx.geometry.Pos.CENTER); + Label grundlabel = new Label("Grund: " + message); + grundlabel.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;"); + Label ueberlabel = new Label("Programm unterbrochen!"); + vbox.getChildren().add(ueberlabel); + vbox.getChildren().add(grundlabel); + VBox.setMargin(grundlabel, new javafx.geometry.Insets(10, 10, 10, 10)); + Scene scene = new Scene(vbox, 300, 90); + stoppedStage.setAlwaysOnTop(true); + stoppedStage.setScene(scene); + stoppedStage.show(); } public static void sleep() { @@ -116,7 +134,7 @@ public class Controller_Frontend { e.printStackTrace(); } }); - Thread.sleep(50); //Verzögerungszeit in Millisekunden + Thread.sleep(20); //Verzögerungszeit in Millisekunden } } catch (InterruptedException e) { e.printStackTrace(); @@ -124,8 +142,6 @@ public class Controller_Frontend { }); autoRunThread.setDaemon(true); autoRunThread.start(); - - } @@ -152,9 +168,9 @@ public class Controller_Frontend { String selectedRowStyle; if (!isSleeping) - selectedRowStyle = "-fx-background-color: red;"; + selectedRowStyle = "-fx-background-color: red; -fx-text-fill: white;"; else - selectedRowStyle = "-fx-background-color: teal;"; + selectedRowStyle = "-fx-background-color: teal; -fx-text-fill: white;"; lstContentListView.setCellFactory(column -> new ListCell() { @Override protected void updateItem(String item, boolean empty) { diff --git a/src/main/java/fabrik/simulator/pic16f84/WatchdogTimer.java b/src/main/java/fabrik/simulator/pic16f84/WatchdogTimer.java index 023beac..af6eeb8 100644 --- a/src/main/java/fabrik/simulator/pic16f84/WatchdogTimer.java +++ b/src/main/java/fabrik/simulator/pic16f84/WatchdogTimer.java @@ -12,12 +12,10 @@ public class WatchdogTimer { public static void testAndTrigger() { watchdogTime = getTimeFromRegister() * 1000; if (enabled) { - System.err.println("Remaining: " + ((watchdogTime + lastReset - 1) - Commands.getTotalExecutionTime())); if (Commands.getTotalExecutionTime() >= (watchdogTime + lastReset - 1)) { - System.err.println("Watchdog Timer triggered"); DataRegister.clearBit(3, 4); lastReset = Commands.getTotalExecutionTime(); - Controller_Frontend.stopRunFromBackend(); + Controller_Frontend.stopRunFromBackend("Watchdog Timer"); } } } diff --git a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml index 742265a..ec03eb8 100644 --- a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml +++ b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml @@ -46,7 +46,7 @@ -