LabVIEWForum.de - Erzeugen von Kanälen in For Schleife

LabVIEWForum.de

Normale Version: Erzeugen von Kanälen in For Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich würde gerne mehrere AI - Kanäle einem Task hinzufügen, wobei ich für die Kanäle unterschiedliche Skalierungen habe. Desweiteren möchte ich auch bei der Anzahl von Kanälen variabel bleiben. Dafür ist eine For-Schleife glaub ich die richtige Lösung. Leider komme ich nicht drauf, wie ich das Task nun weiter verweden kann, da es als Array ausgegeben wird. Im Screenshot stellt sich das Problem direkt nach der Schleife dar:

[attachment=23655]

Vielen Dank im voraus,

Kai
Ich stelle die Anzahl der Kanäle immer über folgendes Bedienelement ein:
[attachment=23656]
z.B. 0:3 -> 4 Kanäle


Gruß dimitri
Nur so ne Idee:
Forschleife um die DAQ Elemente..? Mit Autoindexing des Kanalarrays.

Gruß SeBa
Du kannst die kein Array von Tasks oder Kanälen auf die Weise verarbeiten, sondern musst jedes einzelne Element in deinem Array einzeln ansprechen.

Also Array in Einzelteile zerlegen und die Tasks weiterverarbeiten. Wenn das ganze dznamisch geschehen soll, dann bleiben dir nur noch mehr For-Schleifen um das zu machen.
Vielen Dank für die Antworten.

Ich hatte im Forum bereits diese Möglichkeit mit der For-Schleife gesehen:
http://www.LabVIEWforum.de/index.php?showt...mode=linearplus
welche dem sequentiellen Erzeugen von Kanälen in einem Task gleichwertig sein soll. Es müsste denke ich funktionieren.

Wenn ich alle DAQ-Elemente in die Schleife packe bekomme ich beim Auslesen des Tasks in der While-Schleife dasselbe Problem.
So,

ich habe eine Lösung gefunden die zu funktionieren scheint:
Ersetzen der Autoindizierung des Tasks durch Schieberegister.
Dann noch den ersten Kanal vor der Schleife erzeugen, ansonsten kommt LabVIEW wohl durcheinander. Das ganze sieht dann so aus:
[attachment=23675]

Bessere bzw. übersichtlichere Möglichkeiten mehrere Kanäle mit individuellen Einstellungen zu erzeugen würde ich natürlich gerne kennenlernen.

Grüße,

Kai
' schrieb:ich habe eine Lösung gefunden die zu funktionieren scheint:
So wie Du es gemacht hast ist es richtig. Der im vorigen Beitrag genannte Link führt auf ein Beispiel von mir, welches denselben Fehler enthält wie Du am Anfang gemacht hast. Bitte vielmals um Entschuldigung. Also Falsch: Autoindexieren der Task. Richtig: Shift-register.
' schrieb:mehrere Kanäle mit individuellen Einstellungen zu erzeugen
Ich bin mal so frei und poste hier wie ich das mache (gilt nur als Muster).

Lv85_img
' schrieb:Ich bin mal so frei und poste hier wie ich das mache (gilt nur als Muster).
Wieso wird in dieser Lösung kein Schieberegister benutzt ...
[attachment=25026]
... wie im letzten Screenshot von Likakir? Wo landet denn die Information über den neu erzeugten Kanal? Im Task-"String" wird's also nicht versteckt so wie ich es gedacht hätte.
' schrieb:Wo landet denn die Information über den neu erzeugten Kanal? Im Task-"String" wird's also nicht versteckt so wie ich es gedacht hätte.
Der "Task-Wire" ist keine Variable im engeren Sinne wie Int32, String, Cluster, Array etc., sondern ganz allgemein ein Handle! Alles, was für die Task benötigt wird, steht in irgendeiner Instanz irgendwo im DAQmx-Treiber. Der "Task-Wire" ist lediglich eine Kennung, damit der DAQmx-Treiber weis, welche Instanz gerade angesprochen werden soll. Und eine solche Kennung ist eben ein Handle.

Daher funktioniert die ganze Sache auch mit Tunnels. Dass Schieberegister diverse Vorteile haben, spielt in diesem Falle nur eine untergeordnete Rolle.


Nachtrag:
Es ohne Schieberegister zu machen, hat einen großen Nachteil: sollte sich der DAQmx-Treiber dazu hinreißen lassen, den Handle umzubennenen, tritt ein Problem auf. Ob der Treiber Umbenennungen machen kann oder grundsätzlich ausschließt, weis ich nicht. Kann's mir aber vorstellen.
Seiten: 1 2
Referenz-URLs