Domanda

Ho un'applicazione che legge i dati da una porta COM utilizzando javax.comm.

Il problema che sto avendo è che se il dispositivo che sto leggendo da è inaspettatamente disconnesso ottengo un errore nella console che dice "WaitCommEvent: Errore 5"

Ho guardato in giro e non riesco a trovare alcuna informazione utile su questo. Ho impostato tutto il notifyOn * metodi di vero quindi penso che dovresti ricevere tutti gli eventi ma non sto cattura di questo.

Il messaggio di errore che viene stampato non viene da nessuna parte nel mio codice, quindi deve essere nel pacchetto javax.comm da qualche parte. Qualcuno può dirmi come gestire questo errore in modo che posso chiudere la porta COM correttamente quando si verifica?

Grazie!

È stato utile?

Soluzione

Se qualcuno è interessato a questo, ho trovato una soluzione. Stavo usando l'API javax.comm ma per risolvere il problema ho sostituito con api RXTX ( http://rxtx.qbang.org/wiki/index.php/Main_Page ). Non c'era bisogno di modifiche al codice, ma ora quando il dispositivo viene scollegato ricevo un'IOException con il messaggio "flusso di input sottostante restituito zero byte". Mi occupo quel messaggio e dare il via un nuovo thread. Nel nuovo thread io chiamo port.close () e port.removeEventListener (). Queste due chiamate deve essere fatto in un nuovo thread o l'applicazione si bloccherà.

Altri suggerimenti

Abbiamo usato un sacco di tempo su come ottenere javax.comm al lavoro e ha scoperto che nel nostro caso era il conducente COM, che stava causando i problemi (su più computer Windows 7). Se il conducente è anche il vostro problema e si utilizza Windows 7 o, eventualmente, Vista (e si sta utilizzando un cavo seriel Prolific / Logilink) allora questo potrebbe essere la soluzione :) http://www.akosta.dk/category/technical-notes/

Spero che farlo funzionare!

Questa domanda è quasi 2 anni, ma forse un altro ha bisogno di una possibile soluzione:

Ho avuto lo stesso problema con java.comm: "WaitCommEvent: Errore 5" Questo messaggio appare più volte, se la porta COM è disconnesso, ma l'oggetto SerialPort non è chiuso.

La mia soluzione era quella di chiudere l'oggetto SerialPort se la lettura / scrittura dei flussi IO del SerialPort gettato un'eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top