' schrieb:stell dir anstelle von "Verarbeitung..." ein Blockdiagramm, das nicht auf zwei 1024x768 Bildschirme passt, vor.
Das ist schon mal ganz schlecht. Siehe diverse Threads, die gerade aktuell sind.
Für ein so großes BD gilt übrigens in besonderem Maße folgendes: Ein Nachteil bei LV ist, dass das Ändern bestehender Sources schwierig bis hin zu unmöglich werden kann (ohne größere Umstrukturierungen).
Zitat:Vielleicht muss ich auch komplett anders ran,
So nebenbei: Das BD in SubVIs auslagern.
Zum Herausführen von Daten aus einer While-Schleife gibt es mehrere Möglichkeiten:
Erstens:
Globale Variablen - nicht zu empfehlen respektive abzuraten. Für Lokale Variablen gilt im übrigen beinahe das selbe.
Zweitens:
Funktionales SubVI. Ein solches SubVI stellt funktional eine Globale Variable dar. Es hat einen Enum-Eingang mit (mindestens) den Werten WriteVar und ReadVar. Intern befindet sich eine While-Schleife mit Schieberegister, das die Daten enthält, sowie eine Case-Sequenz für die Enum-Werte.
Drittens:
Melder. Ein Melder kann als Globale Variable aufgefasst werden. Schreiben und Lesen gehen automatisch mittels entsprechender Elemente. Queues wären in diesem Falle ein Sonderfall von Melder. Wenn du als Daten den kompletten Satz hast, dann nimm Melder. Bei Datenänderung, also jedesmal nue die neuen Daten, dann Queue nehmen.
Viertes:
Möglicherweise würde auch über Benutzerereigniss was machbar sein. Das fällt mir aber gerade erst so ein.
Ich hab dir mal was angehängt, wie ich in meinen Programmen die "Hardwaredaten" "für die Allgemeinheit" zur Verfügung stelle. Das eine ist die Klasse, die für die Task zuständig ist und die Daten sampled und per Melder zur Verfügung stellt. Das andere SubVI dient lediglich zum Erstellen eines Datensatzes, mit dem die Klasse gesteuert wird, und dem Senden dieses Datensatzes per Queue zur Klasse.