LabVIEWForum.de
Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus (/Thread-Queue-leeren-gibt-nicht-braunes-1D-Array-von-Signalverlaeufen-aus)



Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - wernerIBN - 03.07.2012 14:11

Hi,
wie zu sehen [attachment=40523] erfasse ich mehrere Kanäle blockweise als 1D Array von Signalverläufen. Die zeige ich in einem Kurvendiagramm an. Geht.

Nun möchte ich diese Daten auch in einen TDMS-File streamen.

Mit einem einzigen Kanal lief das bereits, aus meinem Queue leeren-VI kam der Datentyp "1D Array von Signalverläufen" raus den ich genau so an mein TDMS: Schreiben VI geben konnte.

Nun habe ich das DAQmx lesen VI von "1Kanal NSamples" auf "NKanäle NSamples" umgestellt, und aus dem Queue leeren-VI kommt nun der Datentyp "1D Array aus Cluster aus 1D Array von Signalverläufen" raus, und zwar in rosa, den ich so nicht an mein TDMS: Schreiben VI geben kann.

Wie bekomme ich meine mehreren Kanäle in die TDMS-Datei ?

Werner


RE: Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - Schwand - 03.07.2012 16:41

Moin,


du könntest das Array, das aus dem Queue leeren rauskommt, in einer For-Schleife und anschließend noch den Cluster aufschlüsseln und dann einzeln ins tdms-File schreiben.

Grüßle
S.


RE: Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - wernerIBN - 04.07.2012 12:57

Aha. Probier ich aus, danke.

Ich wunder mich, wieso das TDMS-Schreiben so was "übliches" wie mehrere Kanäle auf einmal wegschreiben nicht kann...

Werde ich erst morgen testen können...

Werner


RE: Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - GerdW - 04.07.2012 13:53

Hallo werner,

Zitat:wieso das TDMS-Schreiben so was "übliches" wie mehrere Kanäle auf einmal wegschreiben nicht kann
Kann es doch. Es hat doch dein 1D-Array of Waveform problemlos gespeichert...
Es kann nur nicht mit dem kruden Datenformat nach der Queue umgehen: Array of Cluster of Array...

Du verwendest dummerweise nur die falsche Funktion zum Auslesen der Queue: nämlich nicht Dequeue, sonst EmptyQueue! Und damit EmptyQueue mit deinen Daten klarkommt, wird ein Cluster in den Datentyp eingefügt! Selbst schuld...

Hntergrund:
Dein Datentyp ist schon ein 1D-Array. EmptyQueue gibt ein Array des in die Queue geschobenen Datentyps aus.
Dummerweise würde jetzt ein 2D-Array herauskommen, was aber problematisch ist, da die einzelnen 1D-Array durchaus verschiedene Längen haben können. Deshalb wird also ein Array of Cluster of Array ausgegeben: hier kann das innere Array wieder verschiedene Anzahl Elemente aufweisen...


RE: Queue leeren gibt nicht braunes 1D Array von Signalverläufen aus - wernerIBN - 04.07.2012 14:50

(04.07.2012 13:53 )GerdW schrieb:  Hallo werner,

Zitat:wieso das TDMS-Schreiben so was "übliches" wie mehrere Kanäle auf einmal wegschreiben nicht kann
Kann es doch. Es hat doch dein 1D-Array of Waveform problemlos gespeichert...
Es kann nur nicht mit dem kruden Datenformat nach der Queue umgehen: Array of Cluster of Array...

Du verwendest dummerweise nur die falsche Funktion zum Auslesen der Queue: nämlich nicht Dequeue, sonst EmptyQueue! Und damit EmptyQueue mit deinen Daten klarkommt, wird ein Cluster in den Datentyp eingefügt! Selbst schuld...

Hntergrund:
Dein Datentyp ist schon ein 1D-Array. EmptyQueue gibt ein Array des in die Queue geschobenen Datentyps aus.
Dummerweise würde jetzt ein 2D-Array herauskommen, was aber problematisch ist, da die einzelnen 1D-Array durchaus verschiedene Längen haben können. Deshalb wird also ein Array of Cluster of Array ausgegeben: hier kann das innere Array wieder verschiedene Anzahl Elemente aufweisen...

Danke für die fundierte Erklärung... und den Tip. Idee