LabVIEWForum.de - Adressenkonflikt vermeiden / Sub VI soll aussetzen

LabVIEWForum.de

Normale Version: Adressenkonflikt vermeiden / Sub VI soll aussetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi folks,

ich hadere gerade mit einem (oder eigentlich mehreren) Adressenkonflikten:

Das Hauptproblem liegt darin, dass ein Sub VI damit beschäftigt ist über eine Adresse ständig Daten zu erfassen (Temperaturabfrage). Dummerweise soll über diese Adresse auch manchmal ein Befehl an das Gerät selbst (z.B. Programmabbruch).

Sprich, wenn das VI sendet, soll das Sub VI nicht aktiv sein.

Ich habe das Problem bisher so gelöst, dass ich das Sub VI einfach in eine Case Strukture eingebunden habe. So lange der Abbruch Knopf auf False steht, wird brav das Sub VI ausgeführt. Sobald aber der Knopf auf True steht wird eben der Abbruch ausgelöst (und somit das Sub VI nicht ausgeführt).

Nun soll aber eine dritte Möglichkeit eingebunden werden: Und zwar das Programm nich direkt abzubrechen, sondern einfach anzuhalten. Und später wieder fortzuführen (wieder eine Sendung von Daten).

Vielleicht kommen später noch weitere Wünsche dazu, wie in das laufende Programm eingegriffen werden soll. Rolleyes

Anyway!

Also die Frage bleibt: Wie kann ich z.B. kurz ein Sub VI ausführen (es z.B. Daten senden lassen), während in der Zeit ein anderes Sub VI aussetzt?

Cheers.
Hi

wenn ich das richtig verstanden hab... brauchst du nur das subvi was pausieren soll und das was senden soll in ne case struktur zu packen .... wenn das eine dann das andere nicht ...

das funktioniert natürlich nur wenn deine subvis direkt aus dem hauptvi gestartet werden und nicht im hintergrund mittels referezen gestarten werden ...

dann bruchste ne notifier/queue komunikation mit start/stop/pause/etc

toaran
' schrieb:Das Hauptproblem liegt darin, dass ein Sub VI damit beschäftigt ist über eine Adresse ständig Daten zu erfassen (Temperaturabfrage). Dummerweise soll über diese Adresse auch manchmal ein Befehl an das Gerät selbst (z.B. Programmabbruch).
Das Problem ist folgendes: Du hast eine Schnittstelle und mehrere, die diese eine Schnittstelle benutzen wollen.

Es ist aus diversen Gründen nicht möglich, dass mehrere gleichzeitig und unabhängig auf eine einzelne Schnittstelle zugreifen. Hier muss immer jemand her, der diese Zugriffe organisiert - also gemeinhin ein Treiber.

Die Lösung ist eigentlich ganz einfach: Ein quasi im Hintergrund ständig laufendes SubVI mit eine Statemachine, die durch eine Queue gesteuert wird. Das SubVI kann z.B. über Melder den aktuellen Zustand bekannt geben. Wenn einer mit der Schnittstelle irgendetwas machen will - lesen, schreiben oder sonstwas - muss der dies per Queue dem SubVI sagen. Dieses managert dann alles derart, dass es nicht zu Überschneidungen kommen kann. Wie das VI das macht und was das VI sonst noch alles möglicherweise automatisch macht, steht auf einem anderen Blatt.
Referenz-URLs