Software-Design: Kommunikation mit SerialPort (RXTX)

lyrichter

Mitglied
Hallo liebes Java-Forum!

Zurzeit arbeite ich an einem Programm, das über einen Comm-Port in hoher Frequenz Anfragen an eine Hardware sendet und anschließend die jeweilige Antwort auswertet. Außerdem wird dem User eine GUI angezeigt, die auf gewissen Hardware-Input reagiert.

Meine bisherige Lösung sieht so aus, dass ein erster Thread nach der richtigen Hardware sucht (Ports auflisten, öffnen, init-Nachricht senden, auf vereinbarte Nachricht warten) und den so gefundenen Port sowie Output- und Inputstream in Klassenvariablen speichert. Der Port wird also nicht wieder geschlossen. Außerdem zeigt er durch das Ändern einer Klassenvariable im letzten Aufruf der run()-Methode ggf. die erfolgreiche Kontaktaufnahme mit der Hardware an.
Ein zweiter Thread (javax.swing.Timer) läuft parallel dazu. Ist die o.g. Variable im Ursprungszustand, tut er nichts, wird die Verbindung zur Hardware signalisiert legt er los und sendet in 10ms-Intervallen verschiedene Anfragen an die Hardware und verarbeitet die Antworten mithilfe eines SerialPortEventListeners.

Das ganze Verfahren wurde noch nicht getestet.

Nun habe ich allerdings Bedenken, da der gefundene Port zur Kommunikation einmal geöffnet wird (vom ersten Thread) und danach nie wieder geschlossen. Meiner Meinung nach gibt es zwei problematische Szenarien, zu denen ich jeweils einige Fragen habe:

1) Das Programm wird beendet (Absturz, Benutzer schließt Fenster). Da ja nie ein close()-Befehl aufgerufen wird, ist der Port natürlich noch geöffnet. Hat das negative Folgen?

2) Das Programm läuft und die Hardware wird entfernt oder ausgeschaltet.
Was passiert, wenn die Hardware vom PC getrennt wird? Meldet das Programm sofort etwas oder wird erst eine IOException bei write/read-Operationen auf die Output/Input-Streams geworfen? Oder geschieht nicht einmal das?

In der Anwendung dieser Hardware könnte das zweite Szenrio im Notfall vernachlässigt werden (es zieht einfach niemand den Stecker, wenn das Programm läuft), schön wäre es natürlich trotzdem nicht.
Sollte das bisherige Design (Port einmal öffnen und dann regelmäßig write/read-Operationen ausführen) nicht geeignet sein, was sind dann Alternativen? Ist es sinnvoll, den Port nach jeder write/read-Operation wieder zu schließen und bei Bedarf wieder zu öffnen? Ist das in einem 10-100ms Takt überhaupt möglich?

Wie immer bin ich dankbar für jegliche Anmerkungen und Vorschläge. Schonmal Danke für's Lesen!
Viele Grüße,
lyrichter
 
Zuletzt bearbeitet:

Kevin94

Top Contributor
1) Was bei einem Abbsturz passiert weiß ich nicht, aber wenn man die JVM normal beendet, sollte sie alle Port freigeben, egal ob geschlossen oder nicht. (Funktioniert bei Sockets auch)
2) Wenn die Hardware am COM-port entfernt wird kann das deinem Programm wurscht sein, zumindest beim Schreiben(bei USB wäre es afaik anders). Die Informationen werden dann halt ins leere gesendet und du bekommst keine Antwort.

Was das öffnen/schließen angeht: lass es so, es wäre zar möglich, macht bei so kurzen Wartzeiten keinen Sinn.
 

lyrichter

Mitglied
Danke für die schnelle Antwort Kevin94!

1) Was bei einem Abbsturz passiert weiß ich nicht, aber wenn man die JVM normal beendet, sollte sie alle Port freigeben, egal ob geschlossen oder nicht. (Funktioniert bei Sockets auch)


Schön, dann scheint der erste Fall ja kein Problem zu sein.

2) Wenn die Hardware am COM-port entfernt wird kann das deinem Programm wurscht sein, zumindest beim Schreiben(bei USB wäre es afaik anders). Die Informationen werden dann halt ins leere gesendet und du bekommst keine Antwort.

Hmm, die betreffende Hardware wird per USB angeschlossen und simuliert (ist das der richtige Term?) einen Comm-Port. Würde das Probleme bereiten?
Der Lesevorgang wird, so wie ich das sehe, gar nicht erst eintreten, nachdem die Hardware nicht mehr verfügbar ist, da nur der SerialPortEventListener Schreibvorgänge ausführt und der ja nicht mehr aktiv wird. Also spielt der auch keine Rolle.

Es wäre natürlich eigentlich schön, wenn das Programm eine verschwundene Verbindung zur Hardware feststellen und mit einem neuen Verbindungsversuch reagieren könnte...allerdings ist das für dieses Projekt nicht wirklich erforderlich. Wie gesagt, die Bedienung erfolgt nur in einem überschaubaren Umfeld. Wenn es keine schwerwiegende Fehler gibt, ist alles ok.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
Zrebna Zuverlässiges Automatisiertes Testen im eigenem Software-Unternehmen aufsetzen - How to? Allgemeine Java-Themen 12
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
OnDemand Software Zertifizierung Allgemeine Java-Themen 4
Zrebna Wieviele Testfälle muss man hier schreiben? (Software Engineering) Allgemeine Java-Themen 13
Kirby.exe Software Entwicklung Allgemeine Java-Themen 9
Kirby.exe Software für Graphische Visualisierung Allgemeine Java-Themen 20
B Multiuser Software Allgemeine Java-Themen 3
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
W Software-Lizenzen Allgemeine Java-Themen 13
temi Fragen zur Software-Architektur Allgemeine Java-Themen 123
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
M JVM: Client Software Logging und Profiling aktivieren Allgemeine Java-Themen 1
G Job als Programmierer (Software oder Spiele Entwickler) Allgemeine Java-Themen 2
O Architektur für Software Allgemeine Java-Themen 14
K Java mit Software ausliefern, Securitybedenken? Allgemeine Java-Themen 4
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
A Update Software programmieren Allgemeine Java-Themen 1
O Java Hardware Software Zeit Allgemeine Java-Themen 7
D Software entwicklen und verkaufen Allgemeine Java-Themen 1
OnDemand Software-Tracking Allgemeine Java-Themen 14
OnDemand Java Software verkauf untersagt Allgemeine Java-Themen 4
N Neue Software in Java 7 oder 8? Allgemeine Java-Themen 3
R Software ausliefern - Aber Wie? Allgemeine Java-Themen 10
R Installierte Software auslesen mit Java Allgemeine Java-Themen 3
G Best Practices Software-Engineering‏ Allgemeine Java-Themen 3
G RXTX in proprietärer Software nutzen?! Allgemeine Java-Themen 10
A Sicherheit von Software Allgemeine Java-Themen 2
B Software Metriken für Java Allgemeine Java-Themen 36
F LGPL in kommerzieller Software Allgemeine Java-Themen 7
R Konzept eines Software-Rollout/Synchronisation via WebService Allgemeine Java-Themen 5
P Software schützen Allgemeine Java-Themen 8
R software implementierung Allgemeine Java-Themen 3
G Software fuer Auktionshaus Filmundo.de aber wie? Allgemeine Java-Themen 2
X Software soll einen Text vorlesen! Allgemeine Java-Themen 5
X Software schützen! DEMOVersion Allgemeine Java-Themen 12
D JDK fürGPL-Software? Allgemeine Java-Themen 6
S software zum zuschneiden von Bildern Allgemeine Java-Themen 2
C Software für Windows PC mit integierter Db oder Textdatei? Allgemeine Java-Themen 19
J Java Software schreiben? Allgemeine Java-Themen 4
P Bekannte Software in Java? Allgemeine Java-Themen 27
M Chat-Software gesucht Allgemeine Java-Themen 3
T GPL Code inkommerzieller Software nutzen? Allgemeine Java-Themen 26
G Software für Java programmierung Allgemeine Java-Themen 5
Z Beipiel zu gut dokumentierten Software Allgemeine Java-Themen 3
B chat-software Allgemeine Java-Themen 5
T Soll ich meine Software als freeware zum download geben? Allgemeine Java-Themen 15
H Andere Software fernsteuern Allgemeine Java-Themen 7
H Software wartet? Allgemeine Java-Themen 11
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben