Hallo liebes Forum,
ich brauche Eure Hilfe beim Auffinden eines Fehlers in meinem Programm.
Das Programm läuft auf einen Raspberry mit Raspbian Betriebssystem in einem geschlossenen Heimnetz. Das Programm ließt regelmäßig unterschiedliche Daten aus meiner Heizung und schreibt diese formatiert auf mein NAS. Anbei der Code:
Es funktioniert soweit alles prima, aber ich bekomme sporadisch Fehler in der Textdatei, dass nicht zeilenweise geschrieben wird, so mehrmals hintereinander in die selbe Zeile geschrieben wird; dazu als Beispiel die hochgeladenen Textdateien.
Kann sich einer von Euch erklären, woher das kommt? Es tritt in manchen Dateien gar nicht auf, manchmal nur einmal oder aber auch mehrmals und an beliebiger Stelle.
Ich hoffe, jemand kann helfen!
Besten Dank vorab für Eure Unterstützung und viele Grüße
_ardbeg_
ich brauche Eure Hilfe beim Auffinden eines Fehlers in meinem Programm.
Das Programm läuft auf einen Raspberry mit Raspbian Betriebssystem in einem geschlossenen Heimnetz. Das Programm ließt regelmäßig unterschiedliche Daten aus meiner Heizung und schreibt diese formatiert auf mein NAS. Anbei der Code:
Java:
//Variablen deklarieren und initialisieren
public static JFrame frame;
public static JTextField textField = new JTextField();
public static void main(String[] args) throws IOException, InterruptedException{
EventQueue.invokeLater(new Runnable() {
public void run() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.getContentPane().add(textField, BorderLayout.NORTH);
textField.setColumns(10);
}
});
Verbindung meineVerbindung = new Verbindung();
PrintWriter meinWriter = null;
String sStatus_HKPumpe;
String sTemperatur;
String sVerbrauch ;
String sVerbrauch_Start;
String sWW_Temperatur;
String sPuffer_Oben_Temperatur ;
String sPuffer_Unten_Temperatur ;
String sKessel_Temperatur;
String sDrehzahl_Luefter ;
String sTextzeile;
String sDatumAlt;
String PfadLinux;
@SuppressWarnings("unused")
String PfadWin;
String sPfad;
PfadLinux = "/???/Datenlogger_";
PfadWin = "C:\\???\\Datenlogger_";
sPfad = PfadLinux; //PfadWin;
Format zeitstempel = new SimpleDateFormat("HH:mm");
Format dateiendung_datum = new SimpleDateFormat ("dd.MM.yy");
meinWriter = new PrintWriter(new BufferedWriter(new FileWriter(sPfad + dateiendung_datum.format(new Date()) + ".txt")),true);
sVerbrauch_Start = meineVerbindung.lies_Wert(IP_Verbrauch);
sTextzeile = "Stand Verbrauch bei Dateierstellung:" + sVerbrauch_Start + ";" + "Status_HK_Pumpe;Au�entemperatur;Verbrauch;WWTemperatur;Puffer_Oben;Puffer_Unten;Kessel_Temp;Drehzahl;Zeitstempel" ;
meinWriter.println(sTextzeile);
meinWriter.flush();
//meinWriter.close();
sDatumAlt = dateiendung_datum.format(new Date());
while (true) {
//if abfrage, ob datum neu
//System.out.println(dateiendung_datum.format(new Date()));
if (dateiendung_datum.format(new Date()).equals(sDatumAlt)){
}
else{
meinWriter.close();
sVerbrauch_Start = meineVerbindung.lies_Wert(IP_Verbrauch);
meinWriter = new PrintWriter(new BufferedWriter(new FileWriter(sPfad + dateiendung_datum.format(new Date()) + ".txt")),true);
//System.out.println("TESTAUSGABE"); //sVerbrauch_Start);
sDatumAlt = dateiendung_datum.format(new Date());
sTextzeile = "Stand Verbrauch bei Dateierstellung:" + sVerbrauch_Start + ";" + "Status_HK_Pumpe;Au�entemperatur;Verbrauch;WWTemperatur;Puffer_Oben;Puffer_Unten;Kessel_Temp;Drehzahl;Zeitstempel" ;
meinWriter.println(sTextzeile);
meinWriter.flush();
//aktuellen Verbrauch als Startwert speichern für Tagesverbrauchberechnung
//meinWriter.close();
}
if (meineVerbindung.lies_Wert(IP_Status_HKPumpe).equals("Ein")){
sStatus_HKPumpe = "1";
}
else {
sStatus_HKPumpe = "0";
}
sTemperatur = meineVerbindung.lies_Wert(IP_Temperatur);
sVerbrauch = meineVerbindung.lies_Wert(IP_Verbrauch);
sWW_Temperatur = meineVerbindung.lies_Wert(IP_WW_Temperatur);
sPuffer_Oben_Temperatur = meineVerbindung.lies_Wert(IP_Puffer_Oben_Temperatur);
sPuffer_Unten_Temperatur = meineVerbindung.lies_Wert(IP_Puffer_Unten_Temperatur);
sKessel_Temperatur = meineVerbindung.lies_Wert(IP_Kessel_Temperatur);
sDrehzahl_Luefter = meineVerbindung.lies_Wert(IP_Drehzahl_Luefter);
sTextzeile = "";
sTextzeile = sStatus_HKPumpe + ";" + sTemperatur + ";" + sVerbrauch + ";" + sWW_Temperatur+ ";" + sPuffer_Oben_Temperatur + ";" + sPuffer_Unten_Temperatur + ";" + sKessel_Temperatur+ ";" + sDrehzahl_Luefter+ ";" + zeitstempel.format(new Date()) ;
//System.out.println();
//meinWriter = new PrintWriter(new BufferedWriter(new FileWriter(sPfad + sDatumAlt + ".txt")),true);
meinWriter.println(sTextzeile);
meinWriter.flush();
//meinWriter.close();
textField.setText("Programm läuft; letzter Schrieb um: " + zeitstempel.format(new Date()) );
Thread.sleep(300000);
}
//meinWriter.close();
}
}
Es funktioniert soweit alles prima, aber ich bekomme sporadisch Fehler in der Textdatei, dass nicht zeilenweise geschrieben wird, so mehrmals hintereinander in die selbe Zeile geschrieben wird; dazu als Beispiel die hochgeladenen Textdateien.
Kann sich einer von Euch erklären, woher das kommt? Es tritt in manchen Dateien gar nicht auf, manchmal nur einmal oder aber auch mehrmals und an beliebiger Stelle.
Ich hoffe, jemand kann helfen!
Besten Dank vorab für Eure Unterstützung und viele Grüße
_ardbeg_