Laden...

serial Port nutzung bei mehreren UserControls

Erstellt von Krachgarten vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.418 Views
K
Krachgarten Themenstarter:in
8 Beiträge seit 2017
vor 6 Jahren
serial Port nutzung bei mehreren UserControls

Guten Morgen zusammen,

aktuell arbeite ich an einem Projekt zur Ansteuerung von einem Ticketdrucker.
Das ganz Programm ist also Windos Forms mit einem SplitContainer aufgebaut:
Panel1 = Menüleiste Panel2 = Bereich in dem die einzelnen UserControls angezeigt werden.

Jetzt muss ich von allen USerControls zugriff auf meinen SerialPort haben. Nutze ich die UserControls einzeln funktioniert alles , da ich jeweils in der UC den Port Öffne und auch wieder schließe.
Wenn ich dann aber per Menüleiste auf eine Andere Seite/UC wechsel, in welcher dann der ComPort wieder geöffnet wird, bekomme ich eine Exception die mir sagt das der Zugriff auf den COM Port verweigert wurde.

Jetzt die Frage, weiß jemand wie ich beim wechsel der UC den Port wieder freigebe? Oder kann ich den Port irgendwie einmal beim Start der Anwendung öffnen so das alle UC darauf zugreifen können?

Sollte meine Frage unverständlich sein bitte einfach nachfragen =) Ist sehr wichtig.

Danke schonmal für eure Hilfe

Grüße Krachgarten

T
2.219 Beiträge seit 2008
vor 6 Jahren

@Krachgarten
Hier brauchst du eine Zentrale Anlaufstelle um mit dem Port zu arbeiten.
Ich würde das ganze in einer static Klasse kapseln und nur darüber sollten die Forms/UC dann mit dem Seriellen Port arbeiten.
So kannst du auch parallele Abfragen des Ports abfangen, in dem du prüfst ob dein Port gerade offen ist.
Am besten wäre es auch, wenn du beim starten den Port öffnest und offen hälst bis du ihn nicht mehr brauchst oder das Programm beendest.
Somit sollte sich das Problem lösen lassen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

K
Krachgarten Themenstarter:in
8 Beiträge seit 2017
vor 6 Jahren

Ein Beispiel hast du da nicht für oder ? 😄

P
441 Beiträge seit 2014
vor 6 Jahren

Hi,

die Lösung deines Problems wäre eine [Artikel] Drei-Schichten-Architektur .
"Irgendwo" laufen Daten in einer Datenschicht an und werden der GUI zur Verfügung gestellt. Das würde allerdings ein Refactoring deines Programms bedeuten.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

grundsätzlich kannst du dich an folgendem Beispiel orientieren:
Template SerialPort

Musst halt schauen, dass du das mit der Kapselung noch einbaust, dass nicht zwei oder mehr auf einmal den eigentlichen SerialPort benützen.

LG