LabVIEWForum.de - Enum-Werte ändern

LabVIEWForum.de

Normale Version: Enum-Werte ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ein Enum ist doch im Prinzip nichts anderes, als ein numerisches Feld, in das man keine Werte eingeben, sondern aus vorgefertigten Werten einen aussuchen kann. Zur Vereinfachung für den Bediener wurde diesen numerischen Werten einfach ein Name zugewiesen.

Das müsste man doch in etwa so sagen können, oder?

Nun zu meiner Frage:

Ich möchte jetzt keine Dezimal-Werte, sondern Hexwerte, und die auch nicht einfach von 0-F, sondern selber festlegen können. Also Zeile1 sei 0, Zeile2 sei 3 und Zeile3 sei A, oder so in der Richtung.

Geht das irgendwie? Oder muss ich mir da immer eine Case-Struktur hinter den Enum legen, der mir dann aus dem 2er des Enums die 3 macht, die ich will, um bei obigem Beispiel zu bleiben?

Danke und Gruß

Dommas
Ich weiß nicht, ob das mit einem Enum geht, aber du könntest das doch einfach in einem konstanten Array ablegen und dann entsprechend indizieren.
So hast du dann doch das gleiche.
Element 0: 0x0
Element 1: 0x3
Element 2: 0xA
.
.
.
etc.

Gruß, Kai

EDIT: Das Array könntest du wiederum mit einem Enum indizieren. Ist zwar ein Umweg, aber müsste doch eigentl. gehen...
Enums sind für nur begrenzt sinnvoll als Control für den Bediener. Von der Funktion ist der Ring eher was du suchst, da kannst du nicht sequentielle Werte mit Namen verknüpfen. Allerdings kannst du den nicht ordentlich als (strikt) Typedef speichern (Konstantenproblem). Intern ist da der Enum mglw. wieder besser.
Dem Menüring kann man auch als Anzeigeformat Hex zuweisen.
Bei Objekten wie schon erwähnt Sequenzielle Werte abschalten und dann die eigenen Werte angeben.


Gruß SeBa
Ich muss das Thema hier nochmal kurz aufgreifen, da ich selbst ein ähnliches Problem habe.
Ich kommunizieren über LabView mit Messkarten von Meilhaus. Wenn ich einen Ausgang setzen oder rücksetzen möchte, muss ich den ganzen Port (8 Aus- bzw. Eingänge) machen. Dazu muss ich den aktuellen Zustand des Port ODER - bzw. UND verknüpfen mit dem Wert den ich brauche, damit ich die anderen Bits nicht verändere, sondern nur den Aus- bzw. Eingang, den ich brauche.
Da das ein etwas größeres Projekt werden soll, will ich ungern die reinen Zahlen mit denen verknüpft wird in meinem Quelltext sehen, sondern am liebsten nur quasi die Beschreibung, die hinter der Zahl steckt.
z.B.:
Set A1 - 1
Set A2 - 2
Set A5 - 16
Release A1 - 254
Release A2 - 253
Release A5 - 239
Es ist wohl nicht möglich den Wert in einem Enum frei zu wählen, so wie ich das hier verstanden habe.
Was könnte ich denn stattdessen machen? Ist ein Array einer Stuktur mit String und Zahl sinnvoll oder was meint ihr?

Danke und Gruß
TDO
Hallo TDO,

bei deinem Ansatz müsstest du ein Enum erstellen, in dem alle 256 möglichen Bitkombinationen entsprechend mit "Namen" verknüpft werden. Was für ein Aufwand…

Ich habe mir mal ein subVI für die user.lib geschrieben, das so aussieht:
[attachment=49590]
(Im TRUE-Case befindet sich ein OR statt NOT/AND. "bool" entscheidet über Setzen/Löschen des Bits.)

An die "Bitnummer" kannst du auch ein Enum mit "A1" bis "A8" (entsprechend der Bitnummer 0 bis 7) anschließen…
Hallo Gerd,

vielen Dank für deine Idee! Genauso mache ich es jetzt auch!

Gruß
TDO
Referenz-URLs