ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
1448
1448
EMPFEHLEN
-
29.10.04 09:26 #1
Hallo Experten,
ich benötige eine Schnittstelle in Java, die es ermöglicht, den Parallelport bitweise zu schalten. Dazu würde ich entweder in Java einen entsprechenden Treiber schreiben, falls es das nicht bereits gibt, oder eine vorhandene DLL mittels "native"-Methoden integrieren.
Kann mir Jemand einen entsprechenden Treiber empfehlen (mit Link) bzw. mit einfachen Worten / Beispielen erklären, wie ich an den Parallelport via Java rankomme?
P.S.: Von der Java-Comm-Api habe ich bereits gehört. Ist die für sowas geeignet? Beim kurzen Durchschauen bin ich leider nur auf Drucker-Funktionen gestoßen.
Die Schnittstelle soll in etwa so aussehen:
Code :1 2 3 4 5 6 7
public interface ParallelAdapter { public void setLevel(int bit, boolean high) throws IllegalBitException; public boolean getLevel(int bit) throws IllegalBitException; }
Vielen Dank.
CU schnuffieGeändert von schnuffie (04.11.04 um 13:00 Uhr)
-
29.10.04 10:41 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
http://forum.java.sun.com/thread.jsp...&thread=488192
Gruß Tomcase ParallelPort.LPT_MODE_PS2: System.out.println("mode PS2 - byte mode ");Java rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
29.10.04 11:59 #3
Hmm, ist noch nicht ganz das, was mich weiterbringt, jedoch ein Anfang.
OK, mit setMode(...) kann ich den Parallelport auf Byte-Mode setzen. Wie setze ich nun eigentlich die einzelnen Bits? Was ist dabei noch zu beachten?
CU schnuffie
-
Da du kontrollierst, welche Bytes du schickst kannst du dir eine einfach Maske für jedes Bit als z.b. Char abspeichern. Das gibt dann 8 Masken. Willst du 2 oder mehr bits gleichzeitig schicken mußt du einfach diese Masken bitweise verodern.
-
29.10.04 12:15 #5
OK, angenommen ich habe den Modus auf byte-weise festgelegt.
Das Interface ist vorab wie beschrieben festgelegt. Ich will durch Aufruf der Methode setLevel(...) das jeweilige Bit entweder mit L oder H setzen und könnte den Zustand dann auch mit getLevel() abrufen (true = H, false = L). Das Ganze würde von mir in der konkreten Klasse realisiert werden, die dieses Interface implementiert.
Die Vorgehensweise ist somit weitestgehend festgelegt.
Was mir fehlt, ist das eigentliche Setzen der einzelnen Bits, oder anders ausgedrückt: Welche Methode muß ich verwenden, um mit der Java-Comm-API z.B. "00001000" zu erreichen?
CU schnuffie
-
29.10.04 12:16 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Schau mal hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
/* * Created on 29.10.2004 */ package de.tutorials; /** * @author Darimont * */ public class Test36 { public static void main(String[] args) { byte b = 0; //1 bit setzen: b |= 0x1; System.out.println(Integer.toBinaryString(b)); //Bits zurücksetzen b &= 0x0; //2 bit setzen: b |= 0x2; System.out.println(Integer.toBinaryString(b)); //Bits zurücksetzen b &= 0x0; //3 bit setzen: b |= 0x4; System.out.println(Integer.toBinaryString(b)); //Bits zurücksetzen b &= 0x0; //4 bit setzen: b |= 0x8; System.out.println(Integer.toBinaryString(b)); //Bits zurücksetzen b &= 0x0; //5 bit setzen: b |= 0x10; System.out.println(Integer.toBinaryString(b)); //Testen ob 5 Bit gesetzt: if ((b & 0x10) == 0x10) { System.out.println("5 bit gesetzt..."); } //Testen ob 3 Bit gesetzt: if ((b & 0x4) == 0x4) { System.out.println("3 bit gesetzt..."); } } }
@squeaker ein char ist unter Java aber (wegen Unicode) 2Byte groß.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
29.10.04 12:20 #7
Danke für den Hinweis. Habe sowas auch schon mit dem BitSet-Objekt gemacht.
Was mir fehlt, ist das Zwischenstück Java <---> Parallelport.
Welche Methode kann ich von der Java-Comm-API verwenden um z.B. "00001000" zu setzen. Bisher fand ich nur "isPrinterBusy()" oder "isPaperOut()", die mir natürlich garnicht weiterhelfen.
CU schnuffie
-
31.10.04 11:59 #8
Kann mir wirklich Keiner helfen? ...oder zumindest einen Tipp geben, wo ich die passende Antwort finde?
-
01.11.04 10:23 #9
Hallo Leute,
bin leider immernoch nicht so richtig schlauer.
Da ich leider mit dem "bitweise" z.Z. nicht weiterkomme, habe ich versucht, die java.comm.* auf meinem PC einzurichten.
win32com.dll ins bin-Verzeichnis der JRE
javax.comm.properties ins lib-Verzeichnis der JRE
comm.jar ins lib\ext-Verzeichnis der JRE
Leider wird überhaupt kein Port gefunden:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
[size=2]CommPortIdentifier port; Enumeration enum = CommPortIdentifier.getPortIdentifiers(); System.out.println("Ports vorhanden: " + enum.hasMoreElements()); [/size][b][size=2][color=#7f0055]while[/color][/size][/b][size=2][color=#7f0055][/color][/size][size=2] (enum.hasMoreElements()) { port = (CommPortIdentifier)enum.nextElement(); System.out.println(port.getName() + [/size][size=2][color=#2a00ff]"###"[/color][/size][size=2] + port.getPortType()); } [/size]
Es wird nur "Ports vorhanden: false" ausgegeben.
Was mache ich falsch? Ich nehme an, die erforderlichen Dateien liegen dort, wo sie sollen, sonst würde ich sicherlich eine Exception bekommen, oder?
Wer kann mir helfen?
CU schnuffie
Geändert von schnuffie (04.11.04 um 12:57 Uhr)
-
11.11.04 12:13 #10
...nachdem ich nun immernoch nicht schlauer bin und auch noch nichts Brauchbares im Internet fand, bin ich langsam am Verzweifeln.
-
30.11.04 09:03 #11sP4Xx Tutorials.de Gastzugang
Hallo,
der Thread ist zwar schon älter und ich weiss nicht ob du schon eine Lösung hast. Ich hatte genau dasselbe Problem beim ansprechen des Parallel Port mit javax.comm.*!
Nach einigem Surfen habe ich dann noch folgende Library gefunden mit der es dann ohne Probleme funktioniert hat: http://www.rxtx.org
Ich hoffe das hilft dir weiter...
Ich will etwas ähnliches realisieren wie du, sprich auch bitweise daten auf den Port schicken. In meinem Fall 11000000, 00110000, etc.
Bisher habe ich noch nicht genau damit beschäftigt, aber hier sind ja schon einige Ansätze vorhanden...
Gruß, sP4Xx
-
30.11.04 18:41 #12
Hi sP4Xx,
danke für die Antwort. Werde das mal bei Gelegenheit testen.
Schön, daß auch mal Jemand auf ältere und noch offene Beiträge antwortet. Hatte die Hoffnung schon aufgegeben...
Tja, es ist eben nicht das einzige Problem oder die einzige Baustelle. Macht man halt mal mit was Anderem weiter...
Ja, will die Ausgänge "zweckentfremdet" nutzen. Im Endeffekt soll am Parallelport über eine Matrix eine Relaiskarte hängen, die dann eben mittels 8 Kanälen verschiedene Ausgänge schaltet, also nicht nur 8 sondern theoretisch bis zu 2 hoch 7 - brauch' ich natürlich nicht...
Mein Interface bietet die definierte Java-Schnittstelle für dieses Schalten der 8 Daten-Pins. Die Java-Anwendung wäre somit egal, selbst die Relaiskarte wäre austauschbar, da nur die 8 Daten-Pins die Schnittstelle darstellen.CU schnuffie
Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.
Ähnliche Themen
-
Bitweise UND
Von Maddimini im Forum JavaAntworten: 2Letzter Beitrag: 03.01.11, 14:46 -
Bitweise lesen
Von Technoblade im Forum Java GrundlagenAntworten: 4Letzter Beitrag: 15.05.09, 20:55 -
int bitweise operieren
Von MasterEvil im Forum JavaAntworten: 1Letzter Beitrag: 18.06.06, 18:33 -
string bitweise auswerten
Von Diefenbaker im Forum C/C++Antworten: 4Letzter Beitrag: 14.03.05, 22:34 -
bitweise überprüfen (Rechteverwaltung)
Von TiMbO2k im Forum PHPAntworten: 4Letzter Beitrag: 21.04.02, 11:16





Zitieren

Login





