LPT ansprechen



  • Ich will mit java Zeichen an einen Line Printer schicken und NICHT den üblichen Weg über Druckertreiber wählen.
    Mit der Shell würde es so gehen

    echo "Text" > LPT
    

    Aber wie mach ich das mit Java?



  • hallo
    du kannst die paralelle port lpt mit hilfe von javax.com ansprechen
    hier zwei hilfreichende links

    http://java.sun.com/products/javacomm/javadocs/javax/comm/package-summary.html

    http://www.javaworld.com/javaworld/jw-05-1998/jw-05-javadev.html(für serielle port. paralelle port nach dem gleichen prinzip).

    viel glück
    youssef



  • Hi

    solange du nur daten auf den LPT schreiben willst und den portstatus nicht auswerten willst tut die von sun entwickelte API

    sollen zusätzlich auch die statusleitungen ausgewertet werde wir würd ich auf RXTXcomm ausweichen. läst sich gleichy verwenden wie die xcomm api von sun nur das die nicht implementierten teile da sind und open source sind.

    gruss



  • Ich habe mich nun mit der Comm Sache auseinandergesetzt, etliche Programme Beispiele versucht, alle sind gescheitert.
    Bin nun soweit dass ich vermute das diese Commm meine Ports nicht findet, folgender Code wird ohne Fehler überletzt, läuft auch, nur er bringt eben keine Ausgabe:

    for ( Enumeration e = CommPortIdentifier.getPortIdentifiers(); e.hasMoreElements(); )
     				System.out.println( "test"+e.nextElement() );
    

    Wo ist mein Fehler?



  • hallo

    die sache mit dem commport ist immer nervig, weil du dich GENAU an die installationsanweisungen halten musst.
    ansonsten wirft er gerne keinen fehler, sondern tut einfach nix.

    folgendes programm aus go to java ist voll funktionsfähig:

    import java.util.*;
    import java.io.*;
    import javax.comm.*;
    
    public class Listing2604
    {
      public static void printHello(Writer out)
      throws IOException
      {
        String s = "Hello LPT1 World";
        s += " " + s + " " + s;
        for (int i = 1; i <= 50; ++i) {
          out.write(s.substring(0, i) + "\r\n");
        }
        out.write("\f");
      }
    
      public static void main(String[] args)
      {
        Enumeration en = CommPortIdentifier.getPortIdentifiers();
        while (en.hasMoreElements()) {
          CommPortIdentifier cpi = (CommPortIdentifier)en.nextElement();
          if (cpi.getPortType() == CommPortIdentifier.PORT_PARALLEL) {
            if (cpi.getName().equals("LPT1")) {
              try {
                ParallelPort lpt1 = (ParallelPort)cpi.open(
                  "LPT1Test",
                  1000
                );
                OutputStreamWriter out = new OutputStreamWriter(
                  lpt1.getOutputStream()
                );
                printHello(out);
                out.close();
                lpt1.close();
                System.exit(0);
              } catch (PortInUseException e) {
                System.err.println(e.toString());
                System.exit(1);
              } catch (IOException e) {
                System.err.println(e.toString());
                System.exit(1);
              }
            }
          }
        }
      }
    }
    

    printet bei mir ein dreieck mit hallo worlds ,)

    ok, was ist zutun:

    so ist der baum aufgebaut, mach es nicht anders, sonst geht nix.
    java 5 an board, die neue comportapi gezogen
    E:\Java\jdk1.5.0
    E:\Java\jdk1.5.0\bin\win32com.dll
    E:\Java\jdk1.5.0\lib\javax.comm.properties
    E:\Java\jdk1.5.0\lib\comm.jar
    und: elementar wichtig
    E:\Java\jdk1.5.0\jre\lib\javax.comm.properties
    E:\Java\jdk1.5.0\jre\bin\win32com.dll

    die comm.jar nicht im classpath von der jre.

    viel spaß 🙂


Anmelden zum Antworten