Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich hab ein kleines Problem mit dem VI "Aufruf über Referenz".
Das Szenario:
Ein Prüfablauf-VI wird mittels Aufruf über Referenz gestartet. Das klappt auch.
Nun möchte ich gerne vom aufrufenden VI über einen Cancel-Button den Prüfablauf stoppen können. Mein Problem ist jedoch, dass das aufrufende VI während der Abarbeitung des Prüfablaufs nicht gereagiert. Erst nach Ablauf des Prüfablaufs kann ich das abrufende VI wieder bedienen.
Gibt es eine Einstellung, sodass das aufrufende VI während der Abarbeitung bedienbar ist? Bzw. vielleicht hat jemandeine Idee, wie ich den Prüfablauf noch stoppen könnte.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Aufruf über Referenz
Hab hier schnell mal ein altes "Call by Reference" - Bsp. um einen Stop-Knopf erweitert.
Hoffentlich meintest Du auch "Call by Reference". Ich habe die deutsche Version nämlich nicht.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Vielen Dank für deine Antwort. So ähnlich habe ich das auch gelöst.
Das Problem ist nicht das Beenden an sich, sondern das sich das Haupt-VI nicht bedienen lässt, in der Zeit, wo der Prüfablauf abläuft.
Konkrekt: Das Haupt-VI reagiert nicht auf Buttonklicks oder sonst was. Erst wenn der Prüfablauf fertig ist, dann kann ich den Button wieder drücken bzw. er reagiert wieder.
Im Prüfablauf wird über eine Sequenzstruktur mehrere Messungen abgearbeitet. Ohne While-Schleife oder sonstiges.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Aufruf über Referenz
Dann lad' mal Deine VIs hoch.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Ich habe dir mal Screenshots gemacht. Es macht glaube ich wenig Sinn, die einzelnen VI's hochzuladen, weil dazu enorm viele andere Sub-VI's nötig wären.
in deinem Aufruf über Call by reference könntest du noch die Referenz eines Stop-Knopfes mit übergeben, oder du fragst deine globale Variable in diesem aufgerufenen VI auch mit ab, um darauf zu reagieren.
der Button Exit wird im Prüfablauf via globale Variabel abgefragt. Funktioniert auch aber ich kann das Haupt_VI nicht bedienen, sobald der Prüfablauf läuft (eingefroren).
Gruss Daniel
29.08.2013, 09:24 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2013 09:25 von jg.)
So wird das nichts. "Call by Reference" ist wie ein normaler SubVI Aufruf, du bleibst solange in der Event-Struktur hängen (MERKE: Lange andauernde Prozesse gehören NICHT in die Event-Struktur), bis das VI beendet ist. Deshalb wird im Aufrufer-VI auch nichts mehr abgearbeitet.
Lösungen:
1) Der SubVI Aufruf wird parallel zur Event-Struktur in einer eigenen Schleife aufgerufen.
2) Start des VI per Invoke Node "Run VI"
3) Ab LabVIEW gibt es auch asynchrones Aufrufen von VIs: http://zone.ni.com/reference/de-XX/help/..._vi_calls/
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
der Button Exit wird im Prüfablauf via globale Variabel abgefragt. Funktioniert auch aber ich kann das Haupt_VI nicht bedienen, sobald der Prüfablauf läuft (eingefroren).
Gruss Daniel
Hallo Daniel,
du kannst dem Event (Startknopf gedrückt) per Haken sagen, dass das FrontPanel eingefroren sein soll. Ich tippe mal, dass diese Einstellung gewählt ist.
@Marko: Haken oder nicht, das nützt bei dem Aufbau nichts. Wie schon gesagt, Call by Reference ist identisch zu einem SubVI Aufruf. Die Node wartet also, bis das SubVI abgearbeitet ist. Erst dann wird die Event Struktur beendet und erst danach kann ein weiteres Event verarbeitet werden.
THINK Dataflow.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!