LabVIEWForum.de - MainVI stoppen, SubVI öffnen

LabVIEWForum.de

Normale Version: MainVI stoppen, SubVI öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Irgendwie komm ich nicht so ganz hin mit einer Lösung: Mein Problem - ich habe ein "Main.vi" in diesem wird in einer Dauerschleife auch ein SubVi aufgerufen, pro Schleifendurchlauf einmal. Nun möchte ich in dem Main VI einen Button der mir das Main VI stoppt und das SubVI öffnet. Und die Invoke-Methode Frontpanel während des Betriebes von Main.vi hilft mir nichts, da ich in dem SubVi eigens etwas verändern muss.

Wenn ich jedoch Versuche das bereits angesprochene SubVi nochmal zu öffnen (run vi), dann kommt natürlich ein Fehler. Ja aber wie realisier ich das in meiner Main.vi-Schleife? Sowas wie eine Methode "stop VI" gibts ja nicht :-)
Kannst Du mal Deine beiden VIs hochladen?

Gruß Markus
Was ist mit dem Methodenknoten "Abort VI" von einer VI-Referenz?

Eleganter statt "Abort VI" ist die Verwendung einer Queue oder einer globalen Variable, um das Ende zu signalisieren und das SubVI geordnet zu beenden.

Mit einer VI-Referenz und dem Methodenknoten "Run VI" kann man das VI starten und wenn man "Wait until done" auf False setzt, wird das das aufrufende VI sofort weiter ausgeführt.
[attachment=31920]

Hier das Main Programm mit dem SubVi "Umrechnung.vi". Das wird natürlich kontinuierlich aufgerufen da es den Kern der Anwendung darstellt. Die eigentliche Benutzeroberfläche ist aber in dem Main.vi, auf der ich einen Button habe "calibration curve" mit dem ich in das "Umrechnung.vi" reinspringen möchte (dort kann dann eine Kalibrierung durchgeführt werden). Der Code den Ihr da seht is natürlich weiter unten Rotz, funktioniert ja auch nicht so.

Wie kann ich das Main.vi beenden und dann das Umrechnung.vi starten?

@unicorn: Das Abort VI kann ich verwenden um mein main.vi zu beenden? Zweite Variante meinst du - mit globaler Variable das Umrechnung.vi beenden, und dann könnte ich im main.vi dieses wieder aufrufen in einem neuen Fenster? Geht das überhaupt oder beisst sich da was in den Schwanz. Ich würd ja gern das subvi aufrufen und dabei eben das main.vi stilllegen, also anhalten. Nur wenn ich das anhalte, wird mir ja kein Button mehr gepollt :-) Also beisst sich die Katze ja wieder in den Schwanz oder nicht? :-s
Du rufst das VI innerhalb der Whileschleide doppelt auf (einmal per VI Server und einmal indem Du es auf das Block Diagramm platzierst. Ich blicke das Vorgehen nicht so ganz. Was willst Du damit bezwecken? Außerdem kapiere ich Deine Abbruchbedingung der Whileschleife nicht. Da kannst Du das "Oder" auch weglassen. "Irgendetwas" ODER "False" ist immer "Irgendetwas". Unsure

Gruß Markus
Ja das oder is noch von einem Umbau da, ich hatte noch eine andere Abbruchbedingung drin, und daher zwei...

Ich weiss dass es Misst ist der Code, aber wie bekomm ich`s hin dass ich mein main.vi stoppe (dass ja das Subvi nutzt) und dann das Subvi aufmache und laufen lasse.

Das hier funktioniert auch nicht...

[attachment=31926]

Meine Vorstellung davon - wenn ich auf den Button drücke, dann wird die main-Schleife beendet und infolge des Datenflussprinzips gehts dann in der zweiten Schleife weiter. Ich glaub hier gibts eine einfache Lösung für meine Problem...kann ja eigentlich nicht so schlimm sein :-(
Hallo McGonahy,

versuch mal so was.

MfG
Nedzad
Lv10
Hallo Nedzad,

danke dir...aber ich kanns leider nicht öffnen, da die LV Version wohl zu neu für mich ist :-(
Ich kapier nicht dass die Invoke-Methode "Run VI" immer den Fehler 1000 schmeißt wenn doch das SubVi in der Schleife davor schon beendet ist (bzw. sein sollte)...ich kann da machen was ich will...

Wird das SubVi bei Programmstart irgendwie geladen oder irgendwo in den Speicher gelegt und bekomm ich deswegen den Fehler von der Methode Run Vi? Das ganze sieht mir nach einem generellen Verständnisproblem aus was ich habe, denn wenn ich das SubVi im main.vi garnicht anspreche und dann parallel über die Invoke Methode "RunVi" laufen lassen möchte, selber Fehler 1000!!! Also mach ich hier generell was falsch!
Hallo,

vielleicht jetzt..

MfG
NedzadLv85_img
Seiten: 1 2
Referenz-URLs