LabVIEWForum.de
Array mit Case-Struktur verbinden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array mit Case-Struktur verbinden (/Thread-Array-mit-Case-Struktur-verbinden)

Seiten: 1 2


Array mit Case-Struktur verbinden - matzimus - 08.06.2010 14:25

Hallo zusammen,
bin noch nicht sehr erfahren mit LabVIEW und hab deshalb ne (hoffentlich) einfache Aufgabe für euch.
Mein Problem ist folgendes:

Mein Array:

001 xxx xxx
002 xxx xxx
003 xxx xxx

Nun möchte ich aus diesem Array einen bestimmten Wert auslesen (z.B. "001"). Dies habe ich mit "Array indizieren" gemacht. Meine Ausgabe war, wie erwünscht, "001".
Jetzt wollte ich als nächstes eine Case-Struktur anhängen, um verschiedene Alternativen für die verschiedenen Array-Elemente auszuführen.
Also:
Wenn "001" gewählt wird soll das Programm "x" ausgeführt, wenn "002" ausgewählt wird soll das Programm "y" ausfgeührt werden, usw.

Ich weiß schon, dass man ein Array und eine Case-Struktur eigentlich nicht verbinden kann, allerdings kann ich ja in der Case-Struktur nicht nur "True" und "False" anzeigen lassen, sondern auch (durch z.B. "Enum") "001", "002", "003".

Weiß jemand ne Lösung zu meinem Problem? Also das ich nach meiner "Array-Indizierung" die Ausgabe ("001") mit der Case-Struktur verbinden kann?

Danke,
Viele Grüße,
Matze


Array mit Case-Struktur verbinden - dimitri84 - 08.06.2010 14:33

Willst du denn immer diese eine Reihenfolge haben? Element_1, Element_2, Element_3, ...

[attachment=26953]


Array mit Case-Struktur verbinden - matzimus - 09.06.2010 07:44

Hallo Dimitri,
leider ist die Reihenfolge willkürlich.
Ich beschreibs grad noch mal kurz etwas genauer.
Ich habe ein Programm vorgelegt bekommen, welches Messungen durchführt und diese in eine Tabelle in folgender Form schreibt:

Messnummer___Name____Gerät_____Messwert____Einheit
___001_________xxx______xxx________240_______mA
___021_________yyy______yyy_________20_______mA
___342_________bbb______bbb_________23_______mA
____.____________.________.___________._________.
____.____________.________.___________._________.
____.____________.________.___________._________.


Jetzt soll geprüft werden, ob die einzelnen Messwerte in einem bestimmten Bereich liegen. Dieser Bereich ist durch die Messnummer definiert.

Das Programm soll nun folgendermaßen ablaufen:
- erste Messnummer wählen (001)
- dafür entsprechende Grenzwerte auswählen min/max (die in Case-Struktur stehen) und zu "Wertebereich prüfen und
erzwingen" senden)
- entsprechenden Messwert zur Messnummer wählen und ebenfalls, als "x-Wert", zu "Wertebereich prüfen und
erzwingen" senden
- nächste Messnummer auswählen bis keine Messnummern mehr vorhanden sind

Joa, das wärs. Der Mist will aber nicht so funktionieren wie ichs eben gern hätteSmile, ahhhhhhh.
Für Tipps bin ich sehr dankbar.

Grüße, Matze


Array mit Case-Struktur verbinden - dimitri84 - 09.06.2010 07:50

' schrieb:leider ist die Reihenfolge willkürlich.
So wie du es beschrieben hast ist nicht die Rheihenfolge willkürlich, sondern die "Messnummer".

Du brauchst ein Array wo nur die Messnummern drin stehen und dann machst du's so wie im Bild gezeigt. Hast du mein Vorschlag überhaupt probiert?


Array mit Case-Struktur verbinden - matzimus - 09.06.2010 08:08

Mein Array ist pink. Die Verbindung geht dann so irgendwie nicht.
Die Messnummern variieren jenachdem was für ein Gerät angeschlossen wird, welches gemessen werden soll.
Mal steht 001 als erste Nummer da, mal ists die 023, 045, 245, ... .
Ich habs grad geschafft das Array mit der Case-Struktur zu verbinden.

Array -> Array indizieren (Mit Index 0, für erste Zeile) -> Array nach Cluster -> Aufschlüsseln -> Case-Struktur

Ich habe keine Ahnung was ich da gemacht habe, aber es funktioniertSmile.
Leider funktioniert das gleiche Spiel nicht wenn ich den Messwert (x-Wert) anwählen will. Er zeigt nen Fehler an, da ich jetzt einen Index für die Zeile (0, 1, 2, ...) und einen Index für die Spalte (3) habe. Irgendwie ists jetzt ein 2D-Array. Son Mist. Mit einer normalen Anzeige gibt er mir den richtigen Wert aus, ich kanns aber, warum auch immer, nicht mit dem Vergleichsteil verbinden.
Weißt du wie ich die verbinden könnte?


Array mit Case-Struktur verbinden - IchSelbst - 09.06.2010 08:10

' schrieb:Messnummer___Name____Gerät_____Messwert____Einheit
___001_________xxx______xxx________240_______mA
___021_________yyy______yyy_________20_______mA
___342_________bbb______bbb_________23_______mA

Jetzt soll geprüft werden, ob die einzelnen Messwerte in einem bestimmten Bereich liegen. Dieser Bereich ist durch die Messnummer definiert.
Wenn die Messnummern innerhalb eines so großen Bereiches wie 1 bis 342 liegen, dann ist eine Case-Sequenz ungeeignet. Dann lieber ein Algorithmus, der auf einer Array-Struktur beruht (array of cluster(Nr,min,max,...).

Wenn es nur diese drei Messnummern sind, dann geht es auch mit einer Case-Struktur: Mach es so wie dimitri84 vorgeschlagen hat. Natürlich musst du zuvor die Tabelleneinträge scannen. Kannst du das?

Ob die Reihenfolge willkürlich ist oder nicht, ist unerheblich. Was auf den Case-Selector geht ist ja nicht der Index des Arrays, sondern der Inhalt an der Stelle des Indexes.


Array mit Case-Struktur verbinden - IchSelbst - 09.06.2010 08:15

' schrieb:Ich habe keine Ahnung was ich da gemacht habe, aber es funktioniertSmile.
Das ist für einen Programmierer das Schlechteste, was es gibt.

Kannst du nicht ein VI posten?


Array mit Case-Struktur verbinden - dimitri84 - 09.06.2010 08:16

VI und Bild von BD hochladen ...

Edit: Hab' IchSelbst's Posts nicht gesehen.


Array mit Case-Struktur verbinden - GerdW - 09.06.2010 08:21

Hallo matzimus,

"Array indizieren (Mit Index 0, für erste Zeile) -> Array nach Cluster -> Aufschlüsseln -> ..."

Was bitte soll denn das? Kannst du nicht das erste Array-Index entsprechend erweitern, um gleich das Einzelelement zu indizieren? Oder ein zweites IndexArray, das das "Aufschlüsseln" übernimmt? Das ArrayNachCluster wäre nur dann sinnvoll, wenn du auf einen typedef-Cluster konvertieren würdest...

"Mein Array ist pink."

Eleganter wäre hier eine Aussage wie "Ich benutze ein 2D-Array of Strings"...Smile(Es gibt auch LabVIEW-Programmierer mit Farbseh-Schwäche...) Wie schon vorgeschlagen, würde ein Array of Cluster hier sinnvoll sein. Da kann man nämlich verschiedene Datentypen mixen und trotzdem elegant "aufschlüsseln" (UnbundleByName)!


Array mit Case-Struktur verbinden - SeBa - 09.06.2010 08:57

Hint 1:

[attachment=26971]

Gruß SeBa