diff --git a/.gitignore b/.gitignore index 5ff6309..a91c35d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ build/ .vscode/ ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store +/.idea/ diff --git a/pom.xml b/pom.xml index d97f8c2..d58b88c 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ default-cli - fabrik.simulator.pic16f84/fabrik.simulator.pic16f84.HelloApplication + fabrik.simulator.pic16f84/fabrik.simulator.pic16f84.CreateWindow app app app diff --git a/src/main/java/fabrik/simulator/pic16f84/HelloApplication.java b/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java similarity index 58% rename from src/main/java/fabrik/simulator/pic16f84/HelloApplication.java rename to src/main/java/fabrik/simulator/pic16f84/CreateWindow.java index 6ccd04f..cd66e57 100644 --- a/src/main/java/fabrik/simulator/pic16f84/HelloApplication.java +++ b/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java @@ -7,12 +7,12 @@ import javafx.stage.Stage; import java.io.IOException; -public class HelloApplication extends Application { +public class CreateWindow extends Application { @Override public void start(Stage stage) throws IOException { - FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml")); - Scene scene = new Scene(fxmlLoader.load(), 320, 240); - stage.setTitle("Hello!"); + FXMLLoader fxmlLoader = new FXMLLoader(CreateWindow.class.getResource("FileSelector.fxml")); + Scene scene = new Scene(fxmlLoader.load(), 1200, 800); + stage.setTitle("PIC16F84-Simulator - Datei auswählen"); stage.setScene(scene); stage.show(); } diff --git a/src/main/java/fabrik/simulator/pic16f84/FileSelect.java b/src/main/java/fabrik/simulator/pic16f84/FileSelect.java new file mode 100644 index 0000000..a9e2250 --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/FileSelect.java @@ -0,0 +1,36 @@ +package fabrik.simulator.pic16f84; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.stage.FileChooser; +import javafx.stage.Stage; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; + +public class FileSelect { + @FXML + protected void selectFileLST(ActionEvent event) throws IOException { + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Open LST File"); + fileChooser.getExtensionFilters().addAll( + new FileChooser.ExtensionFilter("LST-Dateien", "*.LST", "*.lst"), + new FileChooser.ExtensionFilter("Alle Dateien", "*.*")); + File selectedFile = fileChooser.showOpenDialog(new Stage()); + + if (selectedFile != null) { + int [] prog = ParseFile.parseTestDatei(selectedFile.getAbsolutePath()); + System.out.println(Arrays.toString(prog)); + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + FXMLLoader fxmlLoader = new FXMLLoader(CreateWindow.class.getResource("MainBody.fxml")); + Scene scene = new Scene(fxmlLoader.load(), 1200, 800); + stage.setTitle("PIC16F84-Simulator - Hauptseite"); + stage.setScene(scene); + stage.show(); + } + } + +} diff --git a/src/main/java/fabrik/simulator/pic16f84/MainBody.java b/src/main/java/fabrik/simulator/pic16f84/MainBody.java new file mode 100644 index 0000000..1903648 --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/MainBody.java @@ -0,0 +1,4 @@ +package fabrik.simulator.pic16f84; + +public class MainBody { +} diff --git a/src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java b/src/main/java/fabrik/simulator/pic16f84/ParseFile.java similarity index 68% rename from src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java rename to src/main/java/fabrik/simulator/pic16f84/ParseFile.java index 3ec2e1b..8662455 100644 --- a/src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java +++ b/src/main/java/fabrik/simulator/pic16f84/ParseFile.java @@ -6,21 +6,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -public class stringTObefehl { - - public static void main(String[] args) { - String dateiPfad = "C:\\CloudStation\\Eigene Daten\\DHBW-Studium\\Simulator_git\\src\\main\\java\\fabrik\\simulator\\pic16f84\\TPicSim1.LST"; // Pfad zur Testdatei ---> hier musst du deine Variable einfügen Paul - int[] programmspeicher = parseTestDatei(dateiPfad); - - // Programmspeicher - System.out.println("Programmspeicher wird ausgegebene:"); - for (int i = 0; i < programmspeicher.length; i++) { - if (programmspeicher[i] != 0) { - System.out.printf("0x%04X: 0x%04X%n", i, programmspeicher[i]); - } - } - } - +public class ParseFile { public static int[] parseTestDatei(String dateiPfad) { List zeilen = new ArrayList<>(); @@ -36,12 +22,12 @@ public class stringTObefehl { } // Initialisierung des Programmspeichers mit 1024 Speicherplätzen - int[] programmspeicher = new int[1024]; // Wie viele Programmspeicherplätze gibt es? --> 1024 + int[] programmspeicher = new int[1024]; // Wie viele Programmspeicherplätze gibt es? → 1024 // Adresse und Befehle werden ignoriert und nur die Befehle werden in den Programmspeicher gespeichert for (String zeile : zeilen) { - String[] teile = zeile.split("\\s+"); // Spaltenweise werden die einzelnen Befehle getrennen + String[] teile = zeile.split("\\s+"); // Spaltenweise werden die einzelnen Befehle getrennt if (teile.length >= 2) { try { int adresse = Integer.parseInt(teile[0], 16); // Adresse in Hexadezimal umwandeln @@ -52,9 +38,8 @@ public class stringTObefehl { programmspeicher[adresse] = befehl; // Befehl im Programmspeicher speichern } catch (NumberFormatException e) { - // Wenn ein Fehler aufkommt wird diese Zeile ignoriert funktioniert + // Wenn ein Fehler aufkommt, wird diese Zeile ignoriert funktioniert System.err.println("Fehler beim Parsen einer Zeile: " + zeile); - continue; } } } diff --git a/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml b/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml new file mode 100644 index 0000000..7055104 --- /dev/null +++ b/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml @@ -0,0 +1,21 @@ + + + + + + + + + +