Visualizzazione dei risultati da 1 a 4 su 4

Discussione: configurare javax.comm

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142

    configurare javax.comm

    Ciao a tutti, come da titolo volevo reperire istruzioni su come settare il package javax.comm; sono su Ubuntu, ho letto che i file nel pacchetto tipo libLinuxSerialParallel.so vanno messi in apposite directory, ma volevo istruzioni + dettagliate (che non sono riuscito a trovare sul sito della oracle). Inoltre oltre alle istruzioni suddette mi farebbe comodo reperire una guida, se qualcuno mi può fornire qualche link.

    Grazie
    Ciao
    <esistono cose che non esistono>

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Ciao,
    riprendo la discussione in quanto dovrei aver configurato la libreria correttamente e vorrei chiedere aiuto su un altra questione.

    Segnalo casomai servisse che bisogna posizionare i file di configurazione (che sono compresi nell archivio che si scarica dalla oracle) in apposite locazioni nel fyle system; io li ho posizionati nelle cartelle della jdk e li ho anche importati nel progetto eclipse.
    Credo funzioni perchè l errore che mi solleva non è + relativo ai driver javax.comm o simili :-)

    Non vorrei sconfinare in una discussione relativa ad ubuntu ma se io lancio

    codice:
    pietro@pietro-laptop:~$ sudo rfcomm connect /dev/ttyS0 00:02:C7:7B:C5:48 1
    Connected /dev/rfcomm0 to 00:02:C7:7B:C5:48 on channel 1
    Press CTRL-C for hangup
    mi segnala che la connessione è aperta su /dev/rfcomm0, nonostante io avessi chiesto /dev/ttyS0

    Ora se dal programma java indico come porta rfcomm0 ottengo:

    codice:
    No such port
    null
    javax.comm.NoSuchPortException
    Mentre se indico ttyS0 (oppure ttyS1)

    codice:
    java.lang.RuntimeException: 
      Error opening "/dev/ttyS0"
      tcgetattr(): Input/output error
    Quest ultimo è un errore che ho trovato in parecchie discussioni su vari forum ma praticamente in nessuno di quelli che ho visto era proposta una soluzione che funzionasse nel mio caso.

    Segnalo anche che il mio programma è scritto in modo tale che per prima cosa visualizza in output le porte disponibili in questo modo:

    codice:
    		Enumeration ports = CommPortIdentifier.getPortIdentifiers();
    		while (ports.hasMoreElements()) {
    			CommPortIdentifier port = (CommPortIdentifier)ports.nextElement();
    			String type;
    			switch (port.getPortType()) {
    			case CommPortIdentifier.PORT_PARALLEL:
    				type = "Parallel"; 
    				break;
    			case CommPortIdentifier.PORT_SERIAL:
    				type = "Serial"; 
    				break;
    			default: /// Shouldn't happen
    				type = "Unknown"; 
    				break;
    			}
    			System.out.println(port.getName() + ": " + type);
                    }
    e il risultato è:
    codice:
    /dev/ttyS0: Serial
    /dev/ttyS1: Serial
    che non mi pare lasci spazio a molti dubbi...

    Grazie per gli eventuali suggerimenti
    <esistono cose che non esistono>

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Continuo ancora a postare sia perchè ho fatto qualche altra scoperta, sia perchè spero che prima o poi qualcuno + competente di me mi aiuti :-) Sono ormai giorni che mi studio questa libreria e sto notando che non ci sono riferimenti decenti in giro per la rete.

    In ogni caso...

    Con l aiuto di un decompilatore java (non ho trovato i sorgenti in rete) sono risalito ai metodi invocati all interno della libreria. In sostanza quando si invoca

    codice:
    CommPortIdentifier portId=...;
    SerialPort port = null;
    		
    		try {
    			port = (SerialPort) portId.open(
    					"name", // Name of the application asking for the port 
    					10000   // Wait max. 10 sec. to acquire port
    			);
    		} catch(PortInUseException e) {
    			System.err.println("Port already in use: " + e);
    			System.exit(1);
    		}
    viene richiamato il metodo

    com.sun.comm.LinuxDriver.getCommPort(String nomePorta, int tipoSerialeParallela)

    il quale al suo interno cerca di instanziare un oggetto com.sun.comm.LinuxSerial (o LinuxParallel a seconda del parametro tipoSerialeParallela).

    Il costruttore di questo oggetto LinuxSerial riceve una stringa (che è il riferimento di nomePorta) e chiama al suo interno il metodo privato com.sun.comm.LinuxSerial.nativeOpenPort

    Sempre con il decompilatore ho scoperto che la definizione del metodo in questione è

    codice:
    private native int nativeOpenPort(String paramString) throws IOException;
    Ma che vuol dire? Lancia semplicemente un eccezione??
    Credevo ad un errore del decompilatore, poi ho trovato anche questo

    http://stevesullam.com/steve/docs/ja...nuxSerial.html

    Ancora una volta spero che qualcuno ne sappia qualcosa e mi dia qualche dritta
    <esistono cose che non esistono>

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Scusate ho detto una boiata, non lancia proprio niente semplicemente non è implementato. Però non mi spiego se il metodo non è implementato da dove viene fuori l'eccezione e soprattutto perchè non è implementato (ed al limite anche - come lo implemento???)
    <esistono cose che non esistono>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.