LabVIEWForum.de
Signale (Cluster) beliebigen Ausgängen zuordnen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Signale (Cluster) beliebigen Ausgängen zuordnen (/Thread-Signale-Cluster-beliebigen-Ausgaengen-zuordnen)



Signale (Cluster) beliebigen Ausgängen zuordnen - demo66 - 22.02.2008 16:48

Hallo!
Ich habe ein Programm erstellt, mit dem man verschiedene Signale an ein Ausgangsmodul schicken kann.
Ich habe ca. 30 Signale, die ich in beliebiger Reihenfolge an AOs schicken möchte. Ein Signal besteht aus einem Cluster mit einem Signalnamen und einem Array, in dem die Ausgangswerte gespeichert sind. Ich möchte im Programm auswählen können welchem Ausgang ich welches Signal zuordne.

Kann mir jemand sagen, was aus seiner Sicht die beste Lösung ist?

Vielen Dank!


Signale (Cluster) beliebigen Ausgängen zuordnen - IchSelbst - 22.02.2008 21:31

Du könntest folgendes machen:

In den Cluster legt du noch einen Enumerator mit allen Ausgängen. Der Anwender kann dann genau einen Ausgang wählen. Dann fasst du alle Cluster in einem Array zusammen. So kann der Anwender jedem Cluster (respektive Kanal) einen eigenen Ausgang zuordnen.

Das Array kannst du per Melder/Queue an ein beliebiges "Ausgangsmodul" senden. Jedes Arrayelement enthält alle relevanten Daten: mindestens Ausgang und Daten.


Signale (Cluster) beliebigen Ausgängen zuordnen - demo66 - 22.02.2008 22:15

Vielen Dank für Deine Hilfe.
Ist eine gute Idee. Dabei kann es aber vorkommen, dass ich auf einen Ausgang mehrere Kanäle lege. Optimal wäre ein Enum Aus dem die "verbrauchten" Ausgänge verschwinden. Hast Du da vielleicht auch eine Lösung?
Mit Melder habe ich noch nicht gearbeitet, muss ich mir morgen anschauen.

Danke nochmals.


Signale (Cluster) beliebigen Ausgängen zuordnen - IchSelbst - 22.02.2008 23:29

' schrieb:Dabei kann es aber vorkommen, dass ich auf einen Ausgang mehrere Kanäle lege.
Das haben enumeratoren so an sich. Tongue

Zitat:Optimal wäre ein Enum Aus dem die "verbrauchten" Ausgänge verschwinden. Hast Du da vielleicht auch eine Lösung?
Programmatisch lösen.

Der Enumerator hat einen "(none)"-Wert (praktischerweise die erste Position). Das kann man verwenden, um einen versehentlich gesetzten Kanal wieder zu löschen. Außerdem ist das die Vorbesetzung vor der Eingabe. Wenn die Eingabe beendet ist, müssen alle Kanäle einen Ausgang ungleich none haben.

Immer wenn der Anwender eine Eingabe gemacht hat (Event-Case!) prüfst du das gesamte(!) Array. Und zwar so: In Array aufaddieren und gleichzeitig prüfen. Ist der Enumerator schon im Array => Fehler. Ich hab mal ein Bild gemacht.


Signale (Cluster) beliebigen Ausgängen zuordnen - demo66 - 25.02.2008 17:46

Vielen Dank für Deine Hilfe IchSelbst!
Habe meine Kanäle nach diesem Prinzip aufgebaut und es funktioniert wunderbar. Die Melder/Queues habe ich noch weggelassen und die Werte einfach über Controls übergeben.