08.06.2010, 14:25
Beitrag #1
|
matzimus
LVF-Gelegenheitsschreiber
Beiträge: 80
Registriert seit: Jun 2010
2010 SP1
2010
kA
7xxxx
Deutschland
|
Array mit Case-Struktur verbinden
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
|
|
|
08.06.2010, 14:33
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2010 14:33 von dimitri84.)
Beitrag #2
|
|
|
09.06.2010, 07:44
(Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2010 07:47 von matzimus.)
Beitrag #3
|
matzimus
LVF-Gelegenheitsschreiber
Beiträge: 80
Registriert seit: Jun 2010
2010 SP1
2010
kA
7xxxx
Deutschland
|
Array mit Case-Struktur verbinden
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ätte , ahhhhhhh.
Für Tipps bin ich sehr dankbar.
Grüße, Matze
|
|
|
09.06.2010, 07:50
(Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2010 07:53 von dimitri84.)
Beitrag #4
|
|
|
09.06.2010, 08:08
Beitrag #5
|
matzimus
LVF-Gelegenheitsschreiber
Beiträge: 80
Registriert seit: Jun 2010
2010 SP1
2010
kA
7xxxx
Deutschland
|
Array mit Case-Struktur verbinden
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 funktioniert .
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?
|
|
|
09.06.2010, 08:10
Beitrag #6
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Array mit Case-Struktur verbinden
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
09.06.2010, 08:15
Beitrag #7
|
|
|
09.06.2010, 08:16
(Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2010 08:17 von dimitri84.)
Beitrag #8
|
|
|
09.06.2010, 08:21
(Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2010 08:24 von GerdW.)
Beitrag #9
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
Array mit Case-Struktur verbinden
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"... (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" (Unbundle ByName)!
|
|
|
| |