LabVIEWForum.de
Wert nicht ausgeben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wert nicht ausgeben (/Thread-Wert-nicht-ausgeben)

Seiten: 1 2


RE: Wert nicht ausgeben - J.Engel - 29.10.2014 12:18

Hi,
ich habe ein sehr ähnliches Problem und wollte daher keine neue Forum-Topic eröffnen.
Ich möchte ein Cluster aus 4 Datentypen erstellen, die vorher in diese umgewandelt werden müssen (mein Polymorphes! Sub-VI mit dem blauen Pfeil in dem Bild).
Case 0-2 erstellen mir die Werte für die ersten 3 Datentypen (Bool, Uint16 und Uint 32), von dort aus sind alle anderen Werte SGLs, die ich daher in einem Array zusammenfasse.
Das Problem ist nun, dass ich natürlich so wie ich es programmiert habe erst einmal drei Nullen in den Array bekomme (nämlich von Case 0,1 und 2). Wie man sehen kann schneide ich diese im Moment ab. Gerds erste Lösung kommt für meinen Fall nicht in Frage, die zweite natürlich schon (also ich könnte ein Schieberegister nutzen, aber das würde zu noch mehr Kabelsalat führen. Gibt es nicht die Möglichkeit statt einer konstanten quasi einen leeren Wert zu nehmen?

Case 0 und 1 sehen fast genau so aus wie 2, daher hab ich sie nicht angefügt


RE: Wert nicht ausgeben - J.Engel - 29.10.2014 12:37

Habe grad eine Lösung für das Problem gefunden Smile
Und zwar kann man auf den Tunnel der Forschleife mit rechtsklick klicken und dann unter Tunnelmodus "bedingt" einstellen. Nun verbindet man in den nicht gewünschten Cases mit einer False-konstante, wenn kein Wert angefügt werden soll.


RE: Wert nicht ausgeben - GerdW - 29.10.2014 12:40

Hallo J.,

Zitat:Gibt es nicht die Möglichkeit statt einer konstanten quasi einen leeren Wert zu nehmen?
Nein. Wie soll ein "leerer" numerischer Wert aussehen? Kannst du das mit Mathe-Kenntnissen der 6. Klasse erläutern? Hmm

Zitat:ich könnte ein Schieberegister nutzen, aber das würde zu noch mehr Kabelsalat führen
Wieso?
Ein Schieberegister, und jeweils ein BundleByName im Case…

Wenn man Array-Elemente indizieren will, nimmt man IndexArray. Wieso musst du das Array erst in einen Cluster umwandeln?

Zitat:Habe grad eine Lösung für das Problem gefunden
Erstens funktioniert das erst ab LV2012 und zweitens ist das keine Lösung, sondern ein Workaround für die schlechte Problemanalyse vorher…


RE: Wert nicht ausgeben - J.Engel - 29.10.2014 13:57

Zitat:Nein. Wie soll ein "leerer" numerischer Wert aussehen? Kannst du das mit Mathe-Kenntnissen der 6. Klasse erläutern? Hmm

Mit einem leeren Wert meine ich, dass ich quasi "nichts" als Ergebnis bekomme.
Ich habe z.B. eine Case Struktur (wie im Beispiel) die erst 3mal false und dann true (true sei für das Beispiel einmal der Wert 2) gibt. Im false Fall, habe ich das Array mit einer Konstanten [0] verbunden.
Nun bekomme ich als array 0 0 0 2 2 ... 2. Ich möchte aber eigentlich nur die zweien ohne Nullen davor haben. Also, dass ich bei false nichts bekomme.


Zitat:Wieso?
Ein Schieberegister, und jeweils ein BundleByName im Case…
Kannst Du mir das einmal als screenshot zeigen? Ich kann mir das irgendwie nicht vorstellen wie das funktioniert?

Zitat:Wenn man Array-Elemente indizieren will, nimmt man IndexArray. Wieso musst du das Array erst in einen Cluster umwandeln?

Achja stimmt, danke, da stand ich wohl aufm Schlauch Blush


RE: Wert nicht ausgeben - GerdW - 29.10.2014 14:05

Hallo J.,

Zitat:Mit einem leeren Wert meine ich, dass ich quasi "nichts" als Ergebnis bekomme.
Wie willst du "nichts" auf einem Draht, der einen skalaren numerischen Wert transportiert, darstellen? Wie stellst du "nichts" mathematisch dar?
Hmm

Beispiel:
[attachment=51196]


RE: Wert nicht ausgeben - NoWay - 29.10.2014 14:09

(29.10.2014 13:57 )J.Engel schrieb:  Mit einem leeren Wert meine ich, dass ich quasi "nichts" als Ergebnis bekomme.

Diesen Gedankengang solltest du grundsätzlich aus deinem biologischen Datenspeicher entfernen, wenn du mit Labview weiterarbeiten möchtest. Das Datenflussmodel ist die Grundlage von Labview. Wenn du demnach Eingänge verdrahtest, solltest du dir IMMER im klaren darüber sein, dass dort ein Ergebnis ankommen MUSS. Die Denkarbeit muss also dann davor oder danach gemacht werden.


RE: Wert nicht ausgeben - J.Engel - 29.10.2014 14:31

Achso, danke Gerd für das angefügt Bild. Ich werde mal versuchen das auf mein Beispiel zu übertragen.

Also was ich mit nichts meine ist mathematisch eine Leere Menge oder halt tatsächlich nichts: Wie gesagt ich möchte nicht 0, 0, 0, 2,2,2 sondern einfach nur 2,2,2 somit steht dann vor den zweien nichts. Sprich bei meinem case: True: füge eine 2 hinzu, bei false: füge kein weiteres Element hinzu (also auch keine 0).


RE: Wert nicht ausgeben - GerdW - 29.10.2014 14:37

Hallo J.,

Zitat:Also was ich mit nichts meine ist mathematisch eine Leere Menge
Eine leere Menge kannst du nur auf einem Draht darstellen, der ein Array transportiert. Eine leere Menge ist für skalare Werte nicht definiert…

Zitat:case: True: füge eine 2 hinzu, bei false: füge kein weiteres Element hinzu
Dann mach das doch genau so wie du es schreibst: Im TRUE-Case ein BuildArray, im FALSE-Case keine Operation, sondern nur den Draht durchführen!
Letztendlich macht das der ConditionalTunnel genau so - aber eben nur für LV2012+…


RE: Wert nicht ausgeben - J.Engel - 29.10.2014 14:40

Okay Smile, vielen Dank für die Hilfe!