' schrieb:Ich brauche einen ständigen Datenstrom von der Hardware.
Dieses prinzipielle Vorgehen finde ich richtig.
Zitat:Diesen möchte ich auf eine gewisse Größe puffern
Das soll also folgendes heißen: Die zur Verfügung gestellten Daten sollen z.B. die letzten 1000 Samples sein.
Zitat:und dann in einem Main.vi an andere SubVIs weiterreichen.
Das ist wohl in deinem Falle - 3 unabhängige Datenempfänger - auch sinnvoll.
Zitat:ich muss ihnen die Daten unabhängig von ihren VIs geben können.
Das gehört sich auch so. Und nicht nur, wenn es drei andere Programmierer sind.
Du könntest z.B. ein spezielles SubVI erstellen - von mir immer Klasse gemannt - das über eine Queue gesteuert wird. Dieses SubVI macht alles das, was mit der Task, also den Daten von der Hardware, gemacht werden muss: Create, Konfigurieren, Starten, Lesen, Stoppen, Schließen - etc. (Statemachine: Case-Sequenz in While-Schleife) In dem einen Case Lesen machst du das, was du jetzt auch schon machst: Mittels DaqMX-Read lesen und im Puffer speichern. Diesen Puffer stellst du nun per Melder der Allgemeinheit zur Verfügung.
Dieser Melder nun repräsentiert deinen Datenpuffer. Jeder kann den nun lesen und hat dann den aktuellen Puffer respektive die aktuellen Daten. D.h. du brauchst eigentlich, um für die 3 anderen SubVIs die Daten zur verfügung zu stellen, gar kein eigenes "Main.VI". Alleine schon das Schreiben der Daten in den Melder innerhalb der Klasse bewirkt, dass die Daten für die Allgemeinheit zur Verfügung stehen.
Was du halt brauchst, ist jemand, der die Klasse von außen steuert. Das kannst du mit dem Main.VI machen.