From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Implementing De-interleave in TDMS Write

My VI controls a 128 pixel linear photosensor array and converts/displays/stores the photosensor's analog voltage output.  The analog waveform coming out of the photosensor is entrained to a clock and serially represents the 128 pixel (plus some reset clocks) voltage values which were generated at the same time and thus will be mapped as t0

 

My goal is to extract a subset of the pixels, de-interleave, and store the resulting data as separate channels in a tdms file, for subsequent analysis in Diadem.

 

However, I seem to be having difficulty with implementing the de-interleave function for tdms write. One loop of my waveform read VI is 128+ clocks of data which represent the voltage values of 128 pixels at time n (plus reset clocks).  My region of interest is a subset of pixels centered around pixel 15 or so. My VI extracts from this larger waveform the appropriate subset and sends that along for display and tdms write.

 

While this waveform can be wired to the tdms write, I could not specify a 1d array of string channel names necessary to de-interleave the data into separate channels.

 

My workaround solution (extract y values, decimate, build 3 separate waveforms, merge them) functions properly but is way too slow and obviously amateurish.

 

I think there is something fundamental that I am missing which could avoid the mess of extraction and merging currently in my code (see area to the left of text box).

 

Any assistance would be greatly appreciated.

 

Matthew Klassen

0 Kudos
Message 1 of 4
(2,408 Views)

I have looked at my code a little more carefully and realize that I am not using the interleave function of TDMS write at all. My workaround de-interleaves before sending the data to write tdms. How can I implement the de-interleave function within the write tdms vi?

 

Also, is there an easy way to set the properties of multiple channels at the same time? I would like my waveform x name to be Time and units to be seconds for all 5 channels. The set tdms properties seems to only allow one channel to be modified at a time? Does this mean that I have to create a loop to set the properties for my 5 channels?

 

Thanks in advance,

 

Matthew Klassen

 

0 Kudos
Message 2 of 4
(2,393 Views)

I'm not aware of a way to perform that sort of operation on a multi-channel waveform if it's in a cluster or array other than to iterate through the channels. There may be a way to do it, but I'm not aware of it. What part of that VIs execution (specific VI) is going too slow? It might point to a work around if you can narrow it down to a specific function.

0 Kudos
Message 3 of 4
(2,381 Views)

Currently “TDMS Set Properties" only supports setting one channel at one time. You have to create a loop to set all channels.

 

0 Kudos
Message 4 of 4
(2,367 Views)