12.05.2009, 13:11
Beitrag #1
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
Mein Problem ist: ein Sub-VI ist für den Datenaustausch zwischen einem µController und dem Haupt-VI über eine serielle Schnittstelle zuständig.
Für Testzwecke soll es aber auch bei direktem Aufruf funktionieren.
Der Unterschied ist: Bei direktem Aufruf sollen die auf dem Frontpanel einstellbaren Schnittstellenparameter gelten.
Bei SUB-VI-Aufruf sollen die Paramter gelten, die in der Datei LV.ini stehen.
Kein Problem, so etwas zu programmieren, aber: wie kann man erkennen, ob das VI direkt oder als SubVI gestartet wurde?
|
|
|
12.05.2009, 13:16
Beitrag #2
|
|
|
12.05.2009, 13:26
(Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2009 13:31 von RoLe.)
Beitrag #3
|
|
|
12.05.2009, 13:37
Beitrag #4
|
|
|
12.05.2009, 13:39
Beitrag #5
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
' schrieb:vielleicht kannst Du Deinem SubVi bei Aufruf einen Text mitgeben der auf dem FP angezeigt wird.
Wird das VI nicht aus einem anden VI aufgerufen erscheint auf dem VI der Default-Text.
Danke, aber das ist gerade das Problem, daß ich beim Sub.VI-Aufruf über die Eingänge nichts mitgeben kann. Wenn ich das könnte, würde ich die Parameter ganz normal über die SUB-VI-Eingänge übergeben.
Ich rufe das SUB-VI so auf:
und erreiche damit, daß der Aufruf nicht das Haupt-VI blockiert, wärend das Sub-VI läuft (Das Sub-VI soll parallel zum Haupt-VI laufen)
|
|
|
12.05.2009, 13:53
(Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2009 13:58 von Lucki.)
Beitrag #6
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
' schrieb:call chain, Aufrufkette.
Wenn nur der eigene VI-Name dann direktaufruf.
' schrieb:Du kannst es über Property-Nodes herausfinden:
1. Execution-State:
Wenn dein VI als Sub VI gestartet wird ist der Execution-State Running, wenn nicht als Sub VI ist der Execution-State Run top level.
2. Callers Name:
Es wird dir der Name des VI's ausgegeben, welches dein Sub VI ausführt.
Danke, das funktioniert bestimmt alles Dreies, so daß ich jetzt nur noch die Qual der Wahl habe.
Habe auch einen dilletantischen Veruch gemacht, das VI mit Eingangsparameteren aufzurufen, ohne daß es während der Ausführungszeit alles andere blockiert. Dann brauchte ich die LV.ini für diesen Zweck nicht und das Sub-VI würde einfacher.
Mein Versuch sah so aus:
Die Funktion "Aufruf über Referenz" (ganz rechts) wartet aber hier, bis das VI beendet ist, d.h alles wird blockiert. Es ist also alles genau so, als wenn ich das VI direkt als Sub-VI aufgerufen hätte.
Falls jemand weiß, ob und wie man das Blockieren verhindern kann, bitte sagt es mir.
|
|
|
12.05.2009, 14:00
Beitrag #7
|
|
|
12.05.2009, 14:34
Beitrag #8
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
' schrieb:Durch den dynamischen Aufruf wird dein VI ja nicht mehr als Sub VI ausgeführt.
Offensichtlich triffst Du damit ins Schwarze. Denn große Enttäuschung: Alle drei Vorschläge funktionieren nicht, das VI verhält sich beim dynamischen Aufruf genau so, als wäre es TOP-Level. Es sind alo mit keiner der drei Vorschläge Unterschiede gegenüber dem direkten Aufruf auszumachen..
|
|
|
12.05.2009, 14:54
Beitrag #9
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
Du kannst einen Wert auch über die Referenz setzen, das habe ich früher mal so verwendet. hier mal aufs minimum reduziert:
Main.vi (Größe: 6,12 KB / Downloads: 270)
Anzeige.vi (Größe: 3,75 KB / Downloads: 243)
später habe ich das ganze durch queues und melder ersetzt. evtl kannst du ja etwas davoin gebrauchen.
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
12.05.2009, 15:16
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Erkennung direkter Aufruf oder SubVI-Aufruf
' schrieb:Du kannst einen Wert auch über die Referenz setzen, das habe ich früher mal so verwendet. hier mal aufs minimum reduziert:
später habe ich das ganze durch queues und melder ersetzt. evtl kannst du ja etwas davoin gebrauchen.
Erster Test: sehr vielversprechend, das ist wahrscheinlich die Lösung. Melde mich wieder. (Queues verwende ich schon für den Datenaustausch, für die einmalige Übergabe von Konfigurationsparameteren erscheint mir das unpassend)
|
|
|
| |