Übersichtliche Struktur und das Problem mit Events
Hallo liebe Community,
ich bin an einem Projekt beschäftig, welches als Grundlage ein sehr komplexe LabVIEW Ansteuerung benötigt. Da das Programm sehr umfangreich ist / wird lege ich sehr viel Wert auf eine übersichtliche und klare Struktur. Vorallem da meine Arbeit von anderen auch nachvollzogen werden soll und eventl. eigene Änderungen dran vornehmen können.
Mein komplettes Programm besteht aus einer großen While-Loop, die solange durchlaufen wird - bis das Programm beendet wird. In der While-Loop habe ich eine Case, die die verschiedenen Programm Teile wiedergibt. Jede Case kann somit als einzelner Schritt eins Ablaufdiagramms gesehen werden - die je nach "programmierter Caseauswahl" zum nächsten Schritt springt.
Es gibt im Moment die folgenden Programmschritte:
- Initialisierung von Variablen und Daten
- Initialisierung des Frontpanels
- Verbindungsaufbau
- Hauptprogramm
- Programm beenden
Mein Programm läuft zu Beginn die oben genannten Punkte der Reihe nach durch bis "Verbindungsaufbau". Dort ist eine Event-Case die darauf wartet, dass der User entweder den Button "Connect" wählt, oder im Menü "Connect" oder je nach dem eine der anderen Optionen wie Hilfe, Programm beenden, etc.
Wurde Connect gewählt und die Verbindung wurde erfolgreich aufgebaut wird ins Hauptprogramm gesprungen. Wenn er das Programm beenden will, wird zum "Programm beenden" gesprungen.
Mein Problem dabei ist, dass ich jetzt im Haupprogramm aber wieder eine Event-Case brauche. Aber die Event-Case im Verbindungsaufbau kann ich auf Grund der ganzen Optionen auch nicht weglassen.
Und das zusammenfügen zu einem Case ist auch schwer - da ich die internen Schleifenabbrüche mit Semaphore Error verknüpft habe, der dann initialisiert ist wenn die Verbindung bereits besteht. Tritt eben dort ein Fehler auf, springt er wieder zur "Verbindung aufbauen"-Case...
Dadurch dass ich zwei Cases habe, die auch einige Events gleich haben, füllt sich zugleich bei einigen Aktionen der Event-Puffer beider Schleifen. Wenn ich dann in den Programmteil der nächsten Case komme - arbeitet er mir alle Aktionen in dem Puffer ab...
Gibts dafür eine Möglichkeit, den Event-Puffer zurückzusetzen?
Oder nach welcher Struktur arbeitet ihr - Ein Verbindungsaufbau muss bei euch ja auch immer der Fall sein. Wie handhabt ihr das auftauchen eines Fehlers und die damit verbundene Neu-Initialisierung etc..
Ich weiß viel Text, eventl ließt es wer und kann mir weiterhelfen - Vielen Dank!
MFG
Ragdar
|