1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Comm Ports auflisten (librxtx-java unter Debian Lenny)

  • Snafu
  • 21. Juni 2009 um 16:02
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Snafu
    Punkte
    253
    Beiträge
    46
    • 21. Juni 2009 um 16:02
    • #1

    Hallo!
    Wollte mal versuchen mit Java die serielle Schnittstelle anzusprechen. Hab also zuerst mal ein kleines Prog geschrieben, dass mir die CommPorts auflisten soll.
    Um es kurz zu machen, es geht nicht wirklich. Statt mir die CommPorts aufzulisten spuckt es irgendwelche Infos über die librxtx aus.
    Kann mir wer helfen? Hab seit EPROG nichts mehr mit Java gemacht und da waren ja nur 0815 Gschichtln.

    Ausgabe:

    Code
    > java Comm 
    Comm Ports
    Experimental:  JNI_OnLoad called.
    Stable Library
    =========================================
    Native lib Version = RXTX-2.1-7
    Java lib Version   = RXTX-2.1-7
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    >

    Java Datei:

    PHP
    import gnu.io.*;
    import java.util.Enumeration;
    
    
    public class Comm
    {
            public static void listPorts()
            {
                    Enumeration ports = CommPortIdentifier.getPortIdentifiers();
                    while(ports.hasMoreElements()) {
                            CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
                            String type;
                            if(port.getPortType() == CommPortIdentifier.PORT_SERIAL)
                                    type = "Serial";
                            else
                                    type = "Parallel";
                            System.out.println("Type: " + type + " Name: " + port.getName());
    
    
            }
        }
    
        public static void main(String[] args)
        {
            System.out.println("Comm Ports");
            listPorts();
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        }
    }
    Alles anzeigen
  • sutupud
    Punkte
    1.659
    Beiträge
    320
    • 21. Juni 2009 um 17:51
    • #2

    die nachrichten oben werden stammen von der rxtx-library selbst beim initialisieren ausgegeben und sind nicht inhalt der enumeration!
    wahrscheinlich werden gar keine elemente zurückgegeben. das kann daran liegen, dass entweder keine vorhanden sind, nicht erkannt werden (fehlende kernel-module, etc.) oder (am wahrscheinlichsten) die zugriffsrechte auf die devices nicht gegeben sind! das sind meistens /dev/parport* /dev/lp* oder /dev/ttyS*
    das einfachste, ist es, wenn man den user zu den entsprecheden gruppen (dialout bzw. lp) hinzufügt.

  • Snafu
    Punkte
    253
    Beiträge
    46
    • 21. Juni 2009 um 18:03
    • #3

    Danke für die Antwort!
    Ich bin jetzt in dialout und lp drinnen (vorhin war ich nur in dialout) aber es hat nichts geändert.
    Selbst als root werden mir keine Ports angezeigt. Braucht Java bzw librxtx irgendein spezielles Kernelmodul? Ich kann die Ports ja verwenden mit minicom und anderen Programmen.

  • sutupud
    Punkte
    1.659
    Beiträge
    320
    • 21. Juni 2009 um 18:18
    • #4

    hast du dich aus- und wieder eingelogt? gruppenänderungen werden nämlich nicht sofort sichtbar!

    edit: hm, wenns als root auch nicht geht, dann liegts sicher an was anderem.
    die geräte existieren? die native libraries werden auch korrekt geladen, sonst würds die meldungen nicht geben. java braucht kein spezielles kernelmodul, aber z.b. muss ppdev u.a. geladen sein, sonst existieren die /dev/... nicht und können nicht verwendet werden

    Einmal editiert, zuletzt von sutupud (21. Juni 2009 um 18:25)

  • Snafu
    Punkte
    253
    Beiträge
    46
    • 21. Juni 2009 um 18:19
    • #5

    Hm, komisch. Den einen USB->Seriell Adapter erkennt er (ttyUSB0), den anderen nicht (ttyACM0).

  • sutupud
    Punkte
    1.659
    Beiträge
    320
    • 21. Juni 2009 um 18:29
    • #6

    ich weiß nicht genau, wie rxtx die geräte sucht, möglicherweise nur aufgrund des namens, und wenn er nicht nach ttyACM* sucht, dann wirds auch nicht gefunden. in diesem fall würde es funktionieren einen symlink anzulegen (z.b. ttyACM0 -> ttyS0 o.ä.)

  • smirnov
    Punkte
    60
    Beiträge
    8
    • 22. Juni 2009 um 11:50
    • #7

    das mit dem ttyACM0 stimmt, die rxtx-library sucht nicht nach diesem namen. die enumeration der verfügbaren geräte ist aber im java-teil der library, d.h. das zu ändern ist leicht. wenn die ACM geräte in die such-liste eingetragen sind, funktionieren diese auch einwandfrei.

    lg
    Tom

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum