Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Design/Architektur für viele Schnittstellen/Programm
hauptmann
myCSharp.de - Member



Dabei seit:
Beiträge: 704
Herkunft: Österreich/Kärnten

Themenstarter:

Design/Architektur für viele Schnittstellen/Programm

beantworten | zitieren | melden

Guten Tag!

Ich schreibe derzeit gerade an einer Software, die pro angeschlossenem Gerät 5 serielle Schnittstellen bedienen muss (nach oben hin offen, pro Gerät immer 5 Schnittstellen) und dort Daten verarbeiten muss.
Nun stellt sich mir die Frage, wie ich meine Anwendung hierfür am Besten aufbaue. Auf der einen Seite sollte die Rechnerbelastung möglichst gering sein und auf der anderen Seite sollten die Responsezeiten möglichst schnell sein. Dazu natürlich Ausfallssicherheit und gute Skalibarkeit.
Gibt es design patterns die für solche Anwendungen gut geeignet sind?
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1.214

beantworten | zitieren | melden

Ich versteh ehrlich gesagt nicht so ganz, was du meinst. Was für Geräte? Was für eine Software? Meinst du mit serieller Schnittstelle RS232? Die kann doch eh nur etwa 115 KB/s übertragen, ich glaub da kannst du locker die hundertfache oder tausendfache Datenmenge in Echtzeit verarbeiten. Aber kann gut sein, dass ich dich komplett falsch verstanden habe.
private Nachricht | Beiträge des Benutzers
hauptmann
myCSharp.de - Member



Dabei seit:
Beiträge: 704
Herkunft: Österreich/Kärnten

Themenstarter:

beantworten | zitieren | melden

Also: Das Gerät, dass ich an den PC anschließe, benötigt 5 serielle Schnittstellen über die es kommuniziert. Also muss ich pro angeschlossenem Gerät auch 5 serielle Schnittstellen verwalten und über diese kommunizieren.
Und ja, die serielle Schnittstelle ist einfach eine RS232 Schnittstelle am PC.
Also du musst dir das so vorstellen, dass ich an dem PC 5 serielle Anschlüsse habe. Aber ich hab auch PCs mit mehr als 5 Anschlüssen dh. an denen können mehr als ein solches Gerät hängen (maximum ist bei 10)

Jetzt ist für mich die Frage: Wie mache ich das am Besten? Wie halte ich den Verwaltungsoverhead möglichst gering aber schaffe trotzdem noch eine annehmbare Lösung, die auch wartbar ist.
private Nachricht | Beiträge des Benutzers
Hajoseb
myCSharp.de - Member

Avatar #avatar-2670.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Polling ... Macht SpecialiX auch mit seinen (alten) Schnittstellen-Boards. Die konnten sogar bis 128/256 serielle Schnittstellen unterstützen.



Neu: RS232 über Ethernet
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Hajoseb am .
"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.”
Anatole France
private Nachricht | Beiträge des Benutzers
hauptmann
myCSharp.de - Member



Dabei seit:
Beiträge: 704
Herkunft: Österreich/Kärnten

Themenstarter:

beantworten | zitieren | melden

Die Hardware ist kein Problem und bereits vorhanden. Es geht mir jetzt erstmal rein um die Architektur der Software ...
private Nachricht | Beiträge des Benutzers
Hajoseb
myCSharp.de - Member

Avatar #avatar-2670.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Na, beim polling eine Schleife, die regelmäßig bei allen Schnitstellen nachguckt. Wenn etwas da ist, dann agieren (event/Thread)

Mfg Hajoseb
"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.”
Anatole France
private Nachricht | Beiträge des Benutzers
JuyJuka
myCSharp.de - Experte

Avatar #avatar-2316.jpg


Dabei seit:
Beiträge: 2.187
Herkunft: Deutschland

beantworten | zitieren | melden

Tag,
Das ist ne interesante Aufgab. Ich geb mal meinen Senf dazu.

Für Ausfallsicherheit könntest du sorgen, in dem jedes angeschlossene Gerät mit einer eigenen Anwendung zu verwalten (Dann stürzt immer nur diese eine Anwendung ab ). Oder wenn du unbedingt EINE Anwendung willst, kannst du auch für jedes Gerät eine eigene AppDomain nutzen.

Zum Design:
Ich würde für die Geräte eine Proxy-Klasse schreiben (z.B.: Seriel.Geraet). Die Proxy-Klasse wiederum enthält 5 Instanzen einer Listener-Klasse für die Seriellenpots (z.B.: Seriel.Listener). Die Listener-Klasse lässen Intern (pro Instanz) einen Thread laufen, der den jeweiligen Port überwacht.
Die Erzeugung der Proxy-Objekte sollte wiederum eine Factory machen, da das zusammen fassen von 5 verschiedenen Ports zu einem Gerät sicherlich kompliziert ist (Für den Anfang kann man ja die Zusammenfassung aus einer Config lesen und später die Factory so ändern, dass sie die Geräte automatisch findet )

Ablauf:
Kommen jetzt Informationen über einen überwachten Port herrein, liest der Listener die Information aus. Der Listener löst ein Event aus (z.B.: Seriel.DataReciefed). Das Proxy-Reagiert auf das Event und interpretiert die Daten (z.B. Knopf-A gedrückt) und löst seinerseits ein Passendes Event aus (z.B.: Seriel.KnopAPressed ). Die eigentliche Verarbeitung der eingegangenen Informationen kann dann auf dieses Event reagieren.
Attachments
private Nachricht | Beiträge des Benutzers