tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1448
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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 schnuffie
    Geändert von schnuffie (04.11.04 um 13:00 Uhr)
     

  2. #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

    case ParallelPort.LPT_MODE_PS2: System.out.println("mode PS2 - byte mode ");
    Gruß Tom
     
    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

  3. #3
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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
     

  4. #4
    Avatar von squeaker
    squeaker squeaker ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Würzburg
    Beiträge
    577
    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.
     

  5. #5
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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
     

  6. #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ß Tom
     
    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

  7. #7
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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
     

  8. #8
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Kann mir wirklich Keiner helfen? ...oder zumindest einen Tipp geben, wo ich die passende Antwort finde?
     

  9. #9
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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)
     

  10. #10
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    ...nachdem ich nun immernoch nicht schlauer bin und auch noch nichts Brauchbares im Internet fand, bin ich langsam am Verzweifeln.
     

  11. #11
    sP4Xx 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
     

  12. #12
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    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

  1. Bitweise UND
    Von Maddimini im Forum Java
    Antworten: 2
    Letzter Beitrag: 03.01.11, 14:46
  2. Bitweise lesen
    Von Technoblade im Forum Java Grundlagen
    Antworten: 4
    Letzter Beitrag: 15.05.09, 20:55
  3. int bitweise operieren
    Von MasterEvil im Forum Java
    Antworten: 1
    Letzter Beitrag: 18.06.06, 18:33
  4. string bitweise auswerten
    Von Diefenbaker im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 14.03.05, 22:34
  5. bitweise überprüfen (Rechteverwaltung)
    Von TiMbO2k im Forum PHP
    Antworten: 4
    Letzter Beitrag: 21.04.02, 11:16