Import/Timer sleep

This commit is contained in:
2024-05-29 12:47:14 +02:00
parent 6d0c47c6c0
commit 45f9878047
6 changed files with 75 additions and 35 deletions

View File

@ -25,16 +25,11 @@ import java.io.FileReader;
import javafx.scene.control.Label;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;
import java.util.Arrays;
import java.util.Objects;
import static fabrik.simulator.pic16f84.Commands.totalExecutionTime;
public class Controller_Frontend {
@ -83,9 +78,13 @@ public class Controller_Frontend {
@FXML
private CheckBox wdtCheck;
private static volatile boolean isAutoRunActive = true;
private static volatile boolean isAutoRunActive = false;
private static volatile boolean isSleeping = false;
public static boolean isSleeping (){
return isSleeping;
}
public static void stopRunFromBackend(String message){
isAutoRunActive = false;
if (isSleeping)
@ -130,7 +129,6 @@ public class Controller_Frontend {
Platform.runLater(() -> {
try {
stepintoButton(null);
} catch (IOException e) {
e.printStackTrace();
}
@ -172,18 +170,8 @@ public class Controller_Frontend {
selectedRowStyle = "-fx-background-color: red; -fx-text-fill: white;";
else
selectedRowStyle = "-fx-background-color: teal; -fx-text-fill: white;";
lstContentListView.setCellFactory(column -> new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
if (getIndex() == currentIndex) {
setStyle(selectedRowStyle);
} else {
setStyle("");
}
}
});
markSelectedRow(currentIndex, selectedRowStyle);
// Befehle ausführen
if (!isSleeping) {
@ -202,17 +190,51 @@ public class Controller_Frontend {
totalExecutionTimeLabel.setText("Total Execution Time: " + Commands.getTotalExecutionTime() + "µs");
}
private void markSelectedRow(int currentIndex, String selectedRowStyle){
lstContentListView.setCellFactory(column -> new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
if (getIndex() == currentIndex) {
setStyle(selectedRowStyle);
} else {
setStyle("");
}
}
});
}
@FXML
protected void selectFileLST(ActionEvent event){
protected void selectFileLST(ActionEvent event) throws IOException {
File selectedFile = chooseLSTFile();
stopAutoRun(null);
if(selectedFile != null){
DataRegister.initDataRegister();
DataRegister.resetPC();
initialize();
toggleLEDs(null);
IOPorts.reset();
for (ToggleButtonGroup toggleButtonGroup : allPORTbuttons) {
try {
toggleButtonGroup.getToggles().get(0).setSelected(true);
toggleButtonGroup.getToggles().get(1).setSelected(false);
IOPorts.setPORTfromUI(toggleButtonGroup);
} catch (NullPointerException ignored) {}
}
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
Commands.resetTotalExecutionTime();
WatchdogTimer.reset();
wdtCheck.setSelected(false);
Table.refresh();
read = ParseFile.parseDatei(selectedFile.getAbsolutePath());
prog = read [0];
ind = read[1];
System.out.println(Arrays.toString(Arrays.stream(prog).toArray()));
displayLSTFileContent(selectedFile);
}
markSelectedRow(0, "-fx-background-color: red; -fx-text-fill: white;");
}
}
private File chooseLSTFile() {
@ -311,9 +333,15 @@ public class Controller_Frontend {
Circle[] allLEDsA = {ledA0, ledA1, ledA2, ledA3, ledA4};
Circle[] allLEDsB = {ledB0, ledB1, ledB2, ledB3, ledB4, ledB5, ledB6, ledB7};
for (int i = 0; i<allPORTButtons.length; i++) {
allTRISButtons[i].getToggles().get(0).setSelected(true);
allPORTButtons[i].getToggles().get(0).setSelected(true);
allTRISButtons[i].getToggles().get(1).setSelected(false);
allPORTButtons[i].getToggles().get(1).setSelected(false);
ToggleButtonGroupExt.get().addAlwaysOneSelectedSupport(allTRISButtons[i]);
ToggleButtonGroupExt.get().addAlwaysOneSelectedSupport(allPORTButtons[i]);
}
ledCheckA.setSelected(false);
ledCheckB.setSelected(false);
setTRISbuttons(allTRISButtons);
setPORTbuttons(allPORTButtons);
IOPorts.setLEDs(allLEDsA, allLEDsB);