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
@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.
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.
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