Java und Parallel-Port Antwortzeiten

Gast #198894
Moin,

kennt sich hier jemand mit Java und Parallel-Ports unter WinNT/2k aus?

An die Hardware kommt man ja über JNI und DLLs ran.

Aber: ich habe hier eine Anwendung, bei der auf eine Veränderung am
Parallelport (beim einlesen, da hängen Sensoren dran) innerhalb von
50ms ein Ereignis ausgelöst werden muss. Kann das funktionieren?

Mir ist schon klar, dass Java keine Echtzeitkriterien erfüllen kann
(Windows ja auch nicht) aber 50ms sollten doch machbar sein?
Oder gibt es mit der Garbage-Collection zwangsweise Probleme?

Viele Grüße,
Michael
Gast
Hi

wie du schon selber bemerkt hast: Windows ist kein RT OS. Es besteht
also durchaus die Möglichkeit das deinem Java Programm (bzw. der Java
VM) für mehr als 50ms der Prozessor entzogen wird. 50ms würde ich sogar
für nicht sehr unwahrscheinlich halten.

Matthias
Gast
Wie sieht es im Vergleich Java - Visual C aus?

Liegen die Probleme am OS und sind von der Programmiersprache
unabhängig, oder schneidet Java (z.B. wegen VM und Garbage Collection)
schlechter ab als C?

Also unter DR-DOS klappt das mit dem 50ms, und DOS ist nun ja auch
nicht besonders RT geeingnet. Nun muss aber eine Windowsanwendung
her...

MfG,
Michale
Gast
Hi

DOS ist nicht RT geeignet? Wer erzählt den sowas. Unter DOS gehört dir
der Prozessor ganz alleine. Antwortzeiten im Bereich einiger µs sollten
unter DOS überhaupt kein Problem sein.

Unter Windows kann dir der Scheduler aber einfach so den Prozessor
entziehen. Du kannst zwar die Priorität deines Prozesses hochdrehen
aber ob das soweit geht das man die 50ms garantieren kann weiß ich
leider nicht. Multi-Processing und Echtzeit beißen sich halt. Ohne
speziell dafür optimierten Scheduler kann man Antwortzeiten nicht
garantieren.

C/C++ dürfte sich etwas besser eignen da da nicht noch eine Schicht
zwischen Prozessor und Anwendung liegt.

Matthias
Gast
Schreibt doch bitte nicht solch ein Blech, Michael, schau dir bitte mal
das javax.comm package an, gibt's bei java.sun.com, damit kannst du
Inputstreams auslesen, schau's dir einfach mal an...
Gast
tjo so richtig garantieren lann das kein os... es sei denn es ist ein
rtos das time slicing macht ;)

unter win sollten eigentlich 50ms bei recht hoher thread priorität
eigentlich drinnen sein... hängt aber von der prozessorlast ab...

73 de oe6jwf / hans
Gast
Hey,
war je net so bös gemeint. Schaut euch mal die "jnpout32.dll" an
(google). Hab damit nen Mini-Weihnachtsbaum über den LPT-Port zum
Leutchen gebracht, basiert letzendlich auf JNI (sry, javax.comm is net
geeignet gewesen) bzw. der WinAPI.
Und 50ms sind da gar kein Thema...

Gruß
Gast
Hi Leute, Hallo Namensvetter

50ms sind mit Windows (95) eigentlich schon machbar, jedenfalls kann
man damit Servos steuern. Die wollen alle 20ms für ein paar ms einen
Impuls... OK, unter Windows ruckelts ein bisschen, aber es geht - und
zwar sogar im interpretierten QBasic-Modus - OK, ist nicht ganz
Java...

Gruss

Michael
Gast
Dass es mit Win95 klappt ist gut möglich da Win95 auch auf MS-DOS
basiert bzw. dies als Grundlage benutzt.
Bei den neueren Windows Versionen 2000 & XP kann es klappen, muss es
aber nicht unbedingt.
Gast
Also, ich beutze die JAVA communications API zum Zugriff auf
Schnittstellen, und kann die auch empfehlen. Nun aber was neues:
System.currenttimemillis() liefert die Zeit (nach meinen Experimenten)
mit einer Auflösung von etwa 10ms, Thread.sleep [garantiert] dir eine
feinere Auflösung. Man sollte halt nur das JAVA-Programm am laufen
haben und nicht nebenbei 10000 Stellen von PI berechnen...
Gast
Die 10 ms von Roman sind die übliche Schedulergranularität der
ernstgemeinten Windows-Versionen. Die kann übrigens mit einer der
"multimedia-Timer"-Funktionen* auf 1 ms herabgesetzt werden - es
entzieht sich allerdings gänzlich meiner Kenntnis, wie man das aus
einer Java-Anwendung heraus macht.


*) timeBeginPeriod, deklariert in mmsystem.h
Gast
Es ist vielleicht sinnvoller den zeitkritischen Zugriff in einen
(Kernel-)Treiber zu packen.
Achtung nur für Fortgeschrittene Programmierer, nicht für ungeübte
geeignet. Dort sind dann sehr schnelle Antwortzeiten möglich.

Gruss

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.