<div align="left">
' schrieb:Ist es üblich eine große While-Schleife über alles zu machen?
Was ist besser eine case oder eine Ereignisstruktur.
Soll am so viel wie möglich in eine Ereignistruktur packen?
Also ich fang mal an mit ein paar Hinweisen.
Ein universelle Struktur, mit der sich gut leben läßt, ist diese:
Ganz außen eine große Sequenz mit drei (übereinanderliegenden) Rahmen.
Sequenz 0: Initialisierungen
Sequenz 1: Hauptprogramm
Sequenz 2: Beendigungen, wie Files schließen, DAQ rücksetzen usw.
Die Sequenz 1, Hauptprogramm, wird ausgefüllt durch die While-Hauptschleife, dort drin ist auch die Ereignignisbehandlung.
Für die Platzierung der Ereignisstruktur gibt es zwei Möglichkeiten:
Entweder: Die Ereignisstruktur füllt die gesamte While-Schleife aus, und der Haupteil des Programms findet im Ereignisrahmen "timeout" statt.
Oder: Die Ereignisstruktur ist so klein wie möglich, und der Hauptteil des Programms findet außerhalb der Ereignisstruktur in der While-Schleife statt.
(Der timeout darf natürlich nicht auf -1 gesetzt sein)
Der Unterschied ist bei zwei gleichzeitigen Ereignissen;
Im Falle a) werden erst beide Ereignsise behandelt, bis des Hauptprogramm wieder ausgeführt wird.
Im Falle b) wird zwischen jedem Ereignis, auch wenn es gleichzeitige Ereignisse sind, das Hauptprogramm ab gearbeitet.
Da a) vom Platzbedarf und auch so günstiger ist, bevorzuge ich a)
Vorsicht bei Verwendung von Lokalen Variablen und Ereignsiknoten im zeitkritischen Tel des Programms. Das Gleiche gilt für Sequenzstrukturen. Dagegen kann zwischen den drei Hauptrahmen in schamloser Weise von lokalen Variablen usw. Gebrauch gemacht werden, so daß man u.U ohne eine einzige Verbindungsleitung zwischen diese Rahmen auskommt.
</div>