PDA

View Full Version : java RXTX e removeeventlistener


jeky84
24-09-2009, 12:23
Salve a tutti...sono nuovo del forum e nel presentarmi vorrei farvi una domanda...
Stò creando un programma per parlare tramite seriale a un microcontrollore e sono riuscito ad istallare rxtx aprire la comunicazione e inviare e ricevere dati
il mio problema( ormai da 10 gg) è su un metodo delle librerie rxtx...cioè il removeeventlistener...non capisco perchè ma esso dovrebbe rimuovere l'ascoltatore in ascolto sulla porta ma non lo fà...e infatti appena creo un nuovo ascoltatore mi genera un'eccezione di tipo toomanylistener exception
Sapete dirmi perchè???
il pezzo di codice è questo


sp.addEventListener(new Logger(str,sp));
sp.removeEventListener();

dove sp è un oggetto di tipo serial port
la creazione dell'event listener è ok...ma se provo a usare il removeeventlistener mi si pianta l'esecuzione del programma
perchè????

U-Boat
24-09-2009, 15:32
Io ho lavorato un po' con le rxtx, ma non ho mai provato a richiamare il metodo removeEventListener.
Ho scelto un altro approccio: visto che nel mio software l'unico evento sulla seriale di cui mi interessa qualcosa sono i dati ricevuti, ho incapsulato l'oggetto SerialPort all'interno di una classe che ho chiamato SerialConnection.

Quando creo una SerialConnection questa crea la SerialPort a cui aggiunge un SerialPortEventListener;
serialConnection espone il metodo addListener(IStringListener) e removeListener(IStringListener) dove IStringListener è un'interfaccia creata da me e che deve essere implementata da chi è interessato alle stringhe ricevute dalla connessione.

Il SerialPortEventListener quando riceve qualcosa dal SerialPort semplicemente si occupa di creare la stringa e inviarla a tutti gli IStringListener aggiunti in precedenza.

Per dirla diversamente, il SerialPortEventListener rimane sempre sottoscritto alla SerialPort, mentre io ho la libertà di aggiungere e rimuovere tutti gli IStringListener che voglio.

C'è da dire che nel mio lavoro le rxtx hanno un ruolo marginale, nel senso che le uso solo per test e debug dei dispositivi con cui devo comunicare, non le uso mai nel codice di produzione: la mia scarsa conoscenza di queste librerie deriva, se vogliamo, proprio da questo fatto: una volta creata la classe non mi sono più preoccupato di capire l'esatto funzionamento della SerialPort.

jeky84
29-09-2009, 08:02
grazie mille per la risposta...ti chiedo un favore, potresti inviarmi la clesse che hai scritto così ci dò uno sguardo??? mi sarebbe molto utile