2009-04-22 6 views
2

Ich habe eine Anwendung, die Daten von einem COM-Port mit javax.comm liest.javax.comm: Fehler beim Trennen des Geräts

Das Problem, das ich habe, ist, dass, wenn das Gerät, das ich aus bin Lesen unerwartet unterbrochen wird ich einen Fehler in der Konsole, der sagt „WaitCommEvent: Fehler 5“

ich um ausgesehen haben und kann nicht finde dazu hilfreiche Informationen. Ich habe alle notifyOn * -Methoden auf true gesetzt, also denke ich, dass ich alle Ereignisse erhalten sollte, aber ich fange dieses nicht ein.

Die Fehlermeldung, die ausgedruckt wird kommt nicht von irgendwo in meinem Code, so dass es irgendwo im javax.comm-Paket sein muss. Kann mir jemand sagen, wie ich mit diesem Fehler umgehen soll, damit ich den COM-Port richtig schließen kann, wenn er auftritt?

Danke!

Antwort

2

Wenn jemand daran interessiert ist, habe ich eine Lösung gefunden. Ich benutzte die javax.comm api, aber um das Problem zu lösen, ersetzte ich es durch rxtx api (http://rxtx.qbang.org/wiki/index.php/Main_Page). Es wurden keine Codeänderungen benötigt, aber jetzt, wenn das Gerät nicht verbunden ist, erhalte ich eine IOException mit der Nachricht "Liegender Datenstrom liefert null Bytes". Ich behandle diese Nachricht und starte einen neuen Thread. Im neuen Thread rufe ich port.close() und port.removeEventListener() auf. Diese beiden Aufrufe müssen in einem neuen Thread ausgeführt werden oder die Anwendung wird hängen.

2

Wir haben viel Zeit gebraucht, um javax.comm zum Laufen zu bringen und fanden heraus, dass es in unserem Fall der COM-Treiber war, der die Probleme verursachte (auf mehreren Windows 7-Computern). Wenn der Fahrer ist auch Ihr Problem und Sie mit Windows 7 oder möglicherweise Vista (und Sie verwenden eine Produktive/LOGILINK® verwendete serielle Kabel), dann könnte dies die Lösung sein :) http://www.akosta.dk/category/technical-notes/

Hoffe, dass Sie es an die Arbeit!

2

Diese Frage hat fast 2 Jahre alt, aber vielleicht braucht eine andere eine mögliche Lösung:

ich das gleiche Problem mit java.comm hatte: „WaitCommEvent: Fehler 5“ Diese Meldung mehrere Male, wenn das erscheint Der COM-Port ist getrennt, , aber das SerialPort-Objekt ist nicht geschlossen.

Meine Lösung war das SerialPort-Objekt zu schließen, wenn beim Lesen/Schreiben der IO-Streams des SerialPort eine Ausnahme ausgelöst wurde.