05.03.2012, 14:36
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2012 14:40 von Lucki.)
Beitrag #1
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Diese Frage stelle ich mir schon seit Jahren, und wahrscheinlich gibt es darauf keine Antwort - aber die Hoffnung stirbt zuetzt, und so will ich wenigstens mal gefragt haben.
Beispiel siehe das angehänge VI. Es hat einen Eingang, einen Ausgang, und einen Modus-Schalter mit den Werten Write, Read, Release.
Ich möchte dass das VI den Modus von selbst erkennt,
und zwar so:
Wenn am Eingang etwas angeschlossen ist und am Ausgang nichts, dann Modus = Write.
Im umgekehrte Falle: Modus = Read
Wenn überhaupt nichts angeschlossen ist, dann Modus = Release.
Wenn beides angeschlossen ist, dann ist egal was passiert, es sollte nicht vorkommen.
Test.vi (Größe: 19,6 KB / Downloads: 270)
|
|
|
05.03.2012, 15:14
Beitrag #2
|
|
|
05.03.2012, 18:29
Beitrag #3
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Das habe ich mir auch schon überlegt, nur beim Ausgang fällt mir nichts ein.
Komisch ist: Beim Fehlerstrang merkt ein VI, ob am Ausgang etwas angeschlossen ist oder nicht. Ist nichts angeschlossen und man hat einen Fehler, stoppt das Programm an dieser Stelle und blendet ein Pop-up mit der Meldung ein. Ist ein Fehlerstrang angeschlossen, dann passiert das nicht. So eine Erkennung müsste doch auch allgemein mit jedem Ausgang irgendwie möglich sein.
|
|
|
05.03.2012, 20:18
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2012 20:19 von phylin.)
Beitrag #4
|
phylin
LVF-Gelegenheitsschreiber
Beiträge: 60
Registriert seit: Nov 2011
8.5
2011
DE
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Hab ich mir auch schon gewünscht und hatte das selbe gefunden wie erik.brennecke: Standardwerte abfragen.
http://digital.ni.com/public.nsf/allkb/1...24006FA6DF
Oder dieses ominöse VI-scripting machen.
https://decibel.ni.com/content/docs/DOC-10021
Ich benutze momentan stattdessen polymorphe VI, wobei ich das polymorphe VI + Selector-VIs in eine llb packe.
|
|
|
05.03.2012, 20:25
Beitrag #5
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Das mit dem Fehler-Dialog stimmt aber auch nur, solange du das automatische Fehler-Handling von LabVIEW nicht deaktivierst.
Für den Ausgang ist mir auch kein Automatismus bekannt. Wobei ich sagen muss, irgendwann geht es auch mit dem Automatismus zu weit, sonst weiß man im BD gar nicht mehr, welcher Fall des SubVIs aufgerufen wird.
Ein anderer Vorschlag zu deiner Frage: Kapsel die 3 Funktionalitäten deines SubVIs in 3 weiteren VIs, die dann nur die benötigten Anschlüsse haben. Damit gewinnst du wieder viel Übersicht!
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
05.03.2012, 21:38
Beitrag #6
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Danke für die sehr hilfreichen Antworten. Es geht also, aber vom Aufwand/Nutzen-Verhältnis bzw. von der Verlangsamung des VIs her wird man sich überlegen müssen, ob es sich wirklich lohnt. Das VI "Terminal Checker" werde ich auf jeden Fall mal probieren - ob ich es dann jemals noch verwende, sei dahingestellt.
|
|
|
05.03.2012, 23:23
Beitrag #7
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
(05.03.2012 20:18 )phylin schrieb: Ich benutze momentan stattdessen polymorphe VI, wobei ich das polymorphe VI + Selector-VIs in eine llb packe.
Wenn es verschiedene Instanzen des VIs sind, haben die dann auch alle einen eigenen Speicherbereich - dadurch geht doch Funktionalität verloren.
Ich würde nie auf Selektor Enums an VIs verzichten - diese zwingen einen immer ein Mindestmaß an BD Doku mitzuschleifen. Durch Einheitliche Bezeichnungen hat man direkt eine gehaltvolle Zusatzinfo zum VI.
Gruß
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
05.03.2012, 23:44
Beitrag #8
|
phylin
LVF-Gelegenheitsschreiber
Beiträge: 60
Registriert seit: Nov 2011
8.5
2011
DE
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Ja, so habe ich es davor gemacht (Stichwort Action engine). Man hat alles praktischerweise in einem VI drin.
Nur, dann sollte man auch zwingend eine typ-def vom selector enum machen. Ich hab das nicht gemacht und hab mich nachher schwarz geärgert, als ich ständig alle selector-enums neu erstellen musste, jedesmal, wenn ich die enum geändert/erweitert habe.
Der Nachteil an diesen Enum-selectoren ist allerdings, das sie immer noch freibeweglich rumschwirren. Ich hab damit schon viel Kabelsalat verursacht. Beim Polymorphen VI hab ich den Vorteil, dass der Selector direkt unter dem VI klebt. Für mini-dokumentation ist also gesorgt. Weitere Vorteile von Polymorphen VI sind, dass man zusätzlich das VI-Icon je nach gewählten Selector anpassen kann, und man nur die Anschlüsse sieht, die für den jeweiligen Selector wichtig sind.
Was meinst du mit der folgenden Aussage? Speicherplatz auf der Festplatte?
Zitat:Wenn es verschiedene Instanzen des VIs sind, haben die dann auch alle einen eigenen Speicherbereich - dadurch geht doch Funktionalität verloren.
|
|
|
06.03.2012, 00:06
(Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2012 00:06 von phylin.)
Beitrag #9
|
phylin
LVF-Gelegenheitsschreiber
Beiträge: 60
Registriert seit: Nov 2011
8.5
2011
DE
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
edit: okay, mit nem polymorphen VI lässt sich natürlich nur schwer eine funktionale globale Variable realisieren. Passt also nicht sonderlich gut zum Read/Write beispiel.
|
|
|
06.03.2012, 08:50
(Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2012 09:03 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Kann ein VI erkennen, ob an den Ports ein Draht angeschlossen ist?
Um noch mal auf mein Beispiel zu kommen: ich werde alles so lassen wie ich es vorher schon hatte. Nämlich zur Erstellung und Speicherung der Queue-Referenz dieses FGV-ähnliche Sub-VI verwenden:
EventQueue-1.vi (Größe: 23,48 KB / Downloads: 239)
und für Queue schreiben, lesen, freigeben kein besonderes Sub-VIs erstellen. Einfach direkt ausführen:
|
|
|
| |