High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

how to read multiple channels on PXI-5122

Hello all,

I have a quation about reading multiple channels on a PXI-5122.  Currently my system is reading the data through a channel list and therefor the data is stored as an interleaved array.

For example, with a two-channel list, the following is how the data is index:

index 0 = record 0, channel 0
index 1 = record 0, channel 1
index 2 = record 1, channel 0
index 3 = record 1, channel 1


I am finding this approach is very slow as I need to decimate the 2D array before I can signal process. Is there an efficient way to acquire the data so channel 0 is in the first row of the output array and channel 1 is in the second row of the array, so when I read the data I just read the respective row index? I have attached a jpeg of what I would like to do, also is there a way to accomplish this without duplicating the data to save on memory?

Thanks,

Azazal
 



Azazel

Pentium 4, 3.6GHz, 2 GB Ram, Labview 8.5, Windows XP, PXI-5122, PCI-6259, PCI-6115
0 Kudos
Message 1 of 2
(6,438 Views)
Hi Azazel,

From what I understand in your post, you'd rather have the Multi-Fetch I16 VI return only two rows: one with all of the records for channel 0 and one with all of the records for channel 1.

At any rate, there isn't another way to request waveform data from the driver when doing multi-record fetches. During a multi-record fetch, the digitizer is doing single fetches and adds them to the on-board memory in temporal order. The card has been programmed to use the advance trigger to start the next record fetch, and so this is how software interaction is removed from a multi-fetch process. Since the records are stored in the order they were taken, they are returned that way as well.

National Instruments welcomes feedback on products and drivers to improve our customers' experiences. That feedback page is called the Product Suggestion Center. Please add your comments 🙂

If you're worried about software performance during the decimation and signal processing steps in your program, you may want to consider using queues and parallel while loops to distribute the processing load. If you're not familiar with queues, take a look at the Producer/Consumer template under File » New... and then VI » From Template » Frameworks » Design Patterns » Producer/Consumer Design Pattern (Data). There is also a Developer Zone tutorial explaining in more detail how queues help streamline data processing applications:

Optimizing Automated Test Applications for Multicore Processors with NI LabVIEW, section "Optimizing Hardware-in-the-Loop Applications"
http://zone.ni.com/devzone/cda/tut/p/id/5899#toc3

Please let me know if you'd like further clarification.

Joe Friedchicken
NI Configuration Based Software
Get with your fellow OS users
[ Linux ] [ macOS ]
Principal Software Engineer :: Configuration Based Software
Senior Software Engineer :: Multifunction Instruments Applications Group (until May 2018)
Software Engineer :: Measurements RLP Group (until Mar 2014)
Applications Engineer :: High Speed Product Group (until Sep 2008)
0 Kudos
Message 2 of 2
(6,430 Views)