Forum: PC-Programmierung Terminalausgabe in TextArea


von Olivia B. (olivia63)


Lesenswert?

Hallo,
ich bin beim googeln nicht so richtig schlauer geworden. Ich möchte mit 
Java unter NetBeans einen Terminalaufruf (für AVRDUDE mit vielen 
Parametern) starten und die Ausgabe des Terminals LIVE in meiner 
TextArea anzeigen. Dadurch wollte ich mir das Programmieren einer 
Fortschrittsanzeige sparen. Da ich das Terminal quasi versteckt aufrufen 
wollte, habe ich mich für diesen Lösungsansatz entschieden. Das 
Grundgerüst steht bereits. Kann mir bitte jemand weiterhelfen? Die 
Terminalausgabe in eine Datei umzuleiten ist nicht das Problem (< - 
Parameter), aber wie bekomme ich das ganze einfach und schön in Echtzeit 
hin.

Danke für eure Tipps!

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

Terminalausgabe in eine Datei ...

Nicht in eine Datei, sondern in eine pipe (Ich bevorzuge virtuelle 
serielle Ports), eventuell mit dem Unix-Tool tee
Oder nach (Windows:) com0com / (Linux:socat)

socat - Virtuelle serielle Schnittstellen
Aufbau einer virtuellen NULL-Modem-Verbindung:
socat PTY,link=m1,raw,echo=0,waitslave PTY,link=m2,raw,echo=0,waitslave
Dadurch werden 2 Device-Treiber m1 und m2 erzeugt, die wie serielle 
Schnittslellen angesprochen werden können.
Danach können auf dem gleichen Rechner 2 gtkterm (minicom) miteinander 
reden.
ls zeigt an:
lrwxrwxrwx  1 hjh hjh     10 2008-12-16 15:05 m1 -> /dev/pts/6
lrwxrwxrwx  1 hjh hjh     10 2008-12-16 15:05 m2 -> /dev/pts/7
Wobei die 2. Zeile erst entsteht, wenn ein Terminal an m1 angeklinkt 
ist.

Oder es können die seriellen Geräteabfrageprogramme / 
Simulationsprogramme miteinander reden:
Terminal 1:
akplu2 -i=0=/home/hjh/m1
Terminal 2:
simplu2 -i=0=/home/hjh/m2


Danach hast du das gleiche Problem, das jeder mit seriellen 
Schnittstellen hat.



Für Windows gibt es da rxtx:

* Download rxtx-2.1-7r2.zip von http://www.rxtx.org/
* Download rxtx-2.1-7-bins-r2.zip, auch von da (Server ist 
ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip)
* Auspacken der einen oder beider Dateien rxtxSerial.dll und 
rxtxParallel.dll von rxtx-2.1-7-bins-r2.zip/Windows/i368-mingw32/ nach 
c:\windows (oder wohin auch immer im Suchpfad) PATH (oder nach 
C:\Program Files\Java\jdk1.6.0_11\jre\bin)
* Auspacken der Datei RXTXcomm.jar von rxtx-2.1-7-bins-r2.zip/ nach 
c:\Program Files\Java\jdk1.6.0_11\jre\lib\ext
 "RXTXcomm.jar goes in \jre\lib\ext (under java)"

Dann googelst du nach

serialPort.addEventListener SerialReader
serialPort.notifyOnDataAvailable

WWW

http://www.netbeans-forum.de/viewtopic.php?t=2342&highlight=seriell - 
Anleitung? - Erster Hinweis
http://rxtx.qbang.org/wiki - Das rxtx Wiki

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Was sit den für dich nen Terminalaufruf? Komandozeile?
Dann kannst du das ganze mit dem ProcessBuilder machen, und die die 
Standardausgabe als Stream geben lassen. Das Ganze dann in einem Thread 
lesen und in das Textfeld schreiben, schon hast du deine "Live" 
Ausgabe...

von Gast (Gast)


Lesenswert?

Vielen Dank für die ausführliche Information, spez. der Hinweis auf 
socat hilft mir sehr.

Die manpage erläutert die Optionen und hat Beispiele:
http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLE_ADDRESS_PTY
http://www.dest-unreach.org/socat/doc/socat.html#OPTION_SYMBOLIC_LINK

In meinem Fall werden die Links im Homeverzeichnis (~/) angelegt und 
dort auch von GTKTerm gefunden.

Erfreulich ist, dass sogar die Schnittstelleneinstellungen funktionieren 
(bei einer Änderung stürzt socat allerdings ab).
Steuerleitungen sind anscheinend nicht unterstützt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.