28.02.2007, 15:45
(Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2007 15:45 von monoceros84.)
Beitrag #1
|
|
|
28.02.2007, 16:01
(Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2007 16:06 von VDB.)
Beitrag #2
|
|
|
28.02.2007, 16:21
Beitrag #3
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Item eines Menu Ring selektieren
Hallo,
lade doch bitte mal Dein VI hoch, ich würde es mir gerne mal anschauen. Dann kann ich evtl. auch helfen.
Mir kommt es nämlich komisch vor, dass LabVIEW <2> reinschreibt.
Gruß Markus
' schrieb:Hi...
Ich habe einen Menu-Ring, den ich zur Laufzeit des Programms über die Eigenschaft StringsAndValues[] mit Daten fülle. Nun soll aber immer der erste Eintrag des Rings standartmäßig vorselektiert werden. Statt dessen schreibt LabVIEW einen Wert <2> oder ähnliches rein. Dies ist ein ungültiger Wert und verursacht in meinem Programm nur unnötigen Ärger. Der einfachste Weg wäre also eine Selektion des ersten Eintrages. Wie kann ich das lösen?
Danke für eure Hilfe!
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
28.02.2007, 16:30
(Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2007 16:33 von cb.)
Beitrag #4
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
Item eines Menu Ring selektieren
' schrieb:Hi...
Ich habe einen Menu-Ring, den ich zur Laufzeit des Programms über die Eigenschaft StringsAndValues[] mit Daten fülle. Nun soll aber immer der erste Eintrag des Rings standartmäßig vorselektiert werden. Statt dessen schreibt LabVIEW einen Wert <2> oder ähnliches rein. Dies ist ein ungültiger Wert und verursacht in meinem Programm nur unnötigen Ärger. Der einfachste Weg wäre also eine Selektion des ersten Eintrages. Wie kann ich das lösen?
Danke für eure Hilfe!
Das Problem entsteht durch eine s.g. Race Condition, vermutlich hast du die Property-Node zum Befüllen der Strings parallel zu einer lokalen Variablen gelegt, die den ersten Wert auswählt. Am einfachsten umgeht man das so:
Zur Erklärung: die Property-Node und die lokale Variable können nicht exakt zur gleichen Zeit verarbeitet werden. Wenn die Property Node und die lokale Variable parallel liegen, wird mehr oder weniger zufällig das eine oder das andere zuerst ausgeführt. Wenn nun die lokale Variable als erstes ausgeführt wird und der Ring noch keine Elemente hat, wird der Standard-Wert für den ausgewählten Index angezeigt. In deinem Fall ist das <2> für das 3. Element.
|
|
|
28.02.2007, 16:37
Beitrag #5
|
|
|
28.02.2007, 16:43
(Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2007 16:44 von VDB.)
Beitrag #6
|
VDB
LVF-Stammgast
Beiträge: 426
Registriert seit: Oct 2005
2010-2011
1997
kA
52134
Deutschland
|
Item eines Menu Ring selektieren
' schrieb:@VDB: Was soll das mit dem "Scan" bringen? Es reicht doch, die Ring-Variable nach dem Schreiben einfach mit "0" zu beschreiben! Hab ich da evtl. die Frage missverstanden?
@Markus: Das mit dem <2> kommt vor, wenn irgendwie ein Eintrag nicht "sauber" definiert wurde, oder wenn aus "Reihenfolge-Gründen" irgendwas nicht passt...ich konnte das jetzt grade auch nicht reproduzieren, aber ich hatte das auch schon mal...ist aber immer ein Verständnisproblem/Benutzerfehler!
Gruss
Achim
Es ist eine universelle Lösung, falls man ein bestimmtes Item einstellen möchte.
Um nur das erste Element zu setzen reicht i2dx Lösung aus...
VDB
|
|
|
28.02.2007, 17:21
Beitrag #7
|
monoceros84
LVF-Stammgast
Beiträge: 445
Registriert seit: Oct 2006
2011
2006
EN
Deutschland
|
Item eines Menu Ring selektieren
Danke für die schnellen Antworten. Ich bin leider schon daheim, deswegen kann ich das VI jetzt nicht posten. Aber es ist nicht viel dazu - im Grunde entspricht es dem, was i2dx gepostet hat. Nur wird anstatt der String- die StringsAndValues-Eigenschaft benutzt. Und das Array wird dynamisch erzeugt. Hintergrund ist der:
Der Benutzer wählt irgendwann am Anfang eine beliebige Variation aus 6 zu testenden Modulen aus. Dabei ist es wichtig zu wissen, ob er z.B. Modul 1, 2, 3 und 4 - oder Modul 2, 4, und 6 testen will. Diese ausgewählten Module werden in einem Array gespeichert. Und dieses Array soll letztendlich in den Menu Ring, um die Auswahl der grafischen Anzeige der Testdaten zu ermöglichen. Dabei kommt dann je nach Auswahl des Benutzers die entsprechende Modulnummer aus dem Ring. Es kann also passieren, dass in dem Ring nur die Values 2, 4 und 6 vorkommen, jedoch keine 0 oder 1.
Deswegen geht das mit der Konstante 0 im Beispiel von i2dx nicht. Ich habe auch keine lokalen Variablen definiert - einfach das Array dem Proporty-Knot übergeben.
Was ich weiterhin schon probiert habe, ist ähnlich dem Beispiel von i2dx: Im gleichen Proporty-Knot die Value-Eigenschaft zu setzen. Allerdings nicht mit einer Konstante, sondern mit dem Value-Wert des ersten Array-Eintrages. Dabei wechselt LabVIEW aber nicht zum ersten Listeneintrag, sondern versucht, dem gerade angezeigtem Eintrag <2> (oder manchmal auch <0>, <1> usw.) diesen Value-Wert zuzuweisen. Das geht meistens schief, weil es dann halt doppelte Values in dem Ring gibt.
Was ich nochmal probieren werde ist dem Ring direkt ohne Proporty-Knot den Value-Wert zuzuweisen - wie in dem Beispiel von VDB. An so was simples hab ich gar nicht gedacht.
|
|
|
28.02.2007, 21:27
(Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2007 21:28 von Achim.)
Beitrag #8
|
|
|
01.03.2007, 07:45
Beitrag #9
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Item eines Menu Ring selektieren
' schrieb:Statt dessen schreibt LabVIEW einen Wert <2> oder ähnliches rein. Dies ist ein ungültiger Wert und verursacht in meinem Programm nur unnötigen Ärger.
Bin mir nicht ganz sicher, aber wenn man in den Eigenschaften "undefinierte Werte zulassen" abhakt, dann dürfte das doch nicht mehr passieren...
|
|
|
01.03.2007, 08:14
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
Item eines Menu Ring selektieren
' schrieb:Bin mir nicht ganz sicher, aber wenn man in den Eigenschaften "undefinierte Werte zulassen" abhakt, dann dürfte das doch nicht mehr passieren...
doch, das kommt trozdem vor, weil man den Wert ja quasi *von intern aufdrängt*. Wenn der Haken bei "undefinierte Werte" gesetzt ist hat man noch den zusätzlichen Menüpunkt "andere" und kann einen anderen Wert eintragen, aber das will man ja bei einem Ring meistens gerade nicht ...
|
|
|
| |