Windows CMD werte Parsen.

lenny89

Mitglied
Moin,

ich möchte einen Temperatur-Sensor auslesen.

Dazu habe ich mit folgende Platine gekauft.
USB-Temperatur-Sensor-Tester für DS18B20
Zur dieser Platine gibt es ein Kommandozeilen-Tool was jede Sekunde die Aktuelle Temperatur in die KommandoZeile Schreibt.

Leider bekomme ich über Java nicht die ausgabe von der Kommandozeile;(.
Folgender Code wird dafür benutzt:

Java:
File temp = new File("LIB\\TEMPTOOL_CMD\\TempCmd.exe"); 
    if(temp.exists())
    {
      try 
      {
        p = Runtime.getRuntime().exec("cmd.exe /C " + temp.getAbsolutePath());
        
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = "";
        while((line = in.readLine()) != null)
        {
          System.out.println(line);
        }
      }
      catch (Exception e) 
      {
        e.printStackTrace();} 
      }
  }

Gibt es sonst eine möglichkeit die ausgabe der Konsole in einer TXT-Datei zu speichern damit man sich die Informationen dort rausholen kann?
Man kann zwar sagen das die ausgabe in einer Datei geschrieben wird aber dieses geht nur wenn ich warte das die Log-Datei > 4Kb ist bevor ich den Prozess beende.

Java:
"cmd.exe /C " + temp.getAbsolutePath() > logfile.txt

Grüß
lenny
 
Zuletzt bearbeitet:
Zwar gibst du den InputStream aus, aber was passiert, wenn da ein Fehler passiert?

Derartiger Output wird auf dem ErrorStream ausgegeben. Also iteriere doch mal auch darüber und schau, ob da was rauskommt.

Java:
		try {
			Process p = Runtime.getRuntime().exec("LIB\\TEMPTOOL_CMD\\TempCmd.exe");

			BufferedReader in = new BufferedReader(new InputStreamReader(
					p.getInputStream()));
			BufferedReader error = new BufferedReader(new InputStreamReader(
					p.getErrorStream()));

			String line = "";
			while ((line = in.readLine()) != null) {
				System.out.println(line);
			}
			while ((line = error.readLine()) != null) {
				System.err.println(line);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
 
Wenn ich den ErrorStream verwende bekomme ich genau so wenig eine ausgabe 🙁
Die neuste erkenntnis ist aber das wenn der InputStream verwendet wird bekomme ich alle 60 Sekunden eine ausgabe die etwa 60 Zeile beinahltet.
 

Zurück
Oben