string to int
This commit is contained in:
64
src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java
Normal file
64
src/main/java/fabrik/simulator/pic16f84/stringTObefehl.java
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package fabrik.simulator.pic16f84;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
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 static int[] parseTestDatei(String dateiPfad) {
|
||||||
|
List<String> zeilen = new ArrayList<>();
|
||||||
|
|
||||||
|
// Bei diesem Schritt wird jetzt Zeile für Zeile das richtige Programm eingelesen
|
||||||
|
try (BufferedReader leser = new BufferedReader(new FileReader(dateiPfad))) {
|
||||||
|
String zeile;
|
||||||
|
while ((zeile = leser.readLine()) != null) {
|
||||||
|
zeilen.add(zeile);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Fehler beim Lesen der Datei: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialisierung des Programmspeichers mit 1024 Speicherplätzen
|
||||||
|
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
|
||||||
|
if (teile.length >= 2) {
|
||||||
|
try {
|
||||||
|
int adresse = Integer.parseInt(teile[0], 16); // Adresse in Hexadezimal umwandeln
|
||||||
|
int befehl = Integer.parseInt(teile[1].substring(0, 4), 16); // Befehl extrahieren und in Hexadezimal umwandeln
|
||||||
|
|
||||||
|
// Ausgabe der eingelesenen Zeile
|
||||||
|
System.out.printf("Gelesene Zeile: %s%n", zeile);
|
||||||
|
|
||||||
|
programmspeicher[adresse] = befehl; // Befehl im Programmspeicher speichern
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// Wenn ein Fehler aufkommt wird diese Zeile ignoriert funktioniert
|
||||||
|
System.err.println("Fehler beim Parsen einer Zeile: " + zeile);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return programmspeicher;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user