11-15-2007 10:51 AM
11-15-2007 11:11 AM
Peter,
Let me clear up some confusion. There's a difference between continuously polling the board in order to transfer data and continuously looking at the data coming in to determine when it changes. Data transfer between the board and your computer memory can be set up to use interrupts or DMA. In either case, the transfer will begin when there's enough data available and will stop when there's not. This will not rely on polling in any way to determine the status or transfer the data. When using interrupt mode we do use interrupts to tell us when there's data available. When using DMA that is no longer necessary. In either case, we never continuously poll the device for data.
When you call read in LabVIEW, and request a number of samples greater than the number of samples available, we have to check the computer memory to determine when such number is available. By the default we will check and then yield to ther processes, to reduce our CPU usage, however, you can set that up manually by setting the wait mode in the read property node. Depending on the DAQ product and task configurations, other available options could be polling and interrupts. Again, this is only within the computer's memory and not with the device.
On the other hand, there's the matter of observing the data and wait for changes in it. What you're requesting is to start your acquisition when an analog input changes. Current DAQ boards offer up to one analog trigger, so you could acquire your 5 signals when one of them changes, but not when any of them changes. For that you'd have to rely on the CPU. On the other hand, with a little external circuitry you could add your 5 signals into a 6th one that would be your analog trigger, and then you'd set up an acquisition of 6 channels, one of which would be the output of such a circuit. Still, you're left with the issue of how many samples you want to acquire every time the inputs change, and how soon after you finished acquiring them you need to be ready to detect changes again. If you need to watch the signals continuously without interruption and always be ready to acquire a set number of samples every time the inputs change then you need to acquire continuously and have labVIEW remove the uninteresting samples for you.
I hope that helps
Daniel D.
Staff Software Engineer
Multifunction DAQ
11-15-2007 11:59 AM
11-15-2007 03:58 PM
11-16-2007 10:44 AM
11-17-2007 08:37 AM
11-19-2007 10:50 AM
Hi Peter,
If you are concerned about how much CPU utilization the DAQmx driver uses, then why don't you test it out? The Windows Task Manager will tell you how much CPU utilization your data acquisition task is using.
We have designed DAQmx to maximize streaming performance while still minimizing CPU utilization. However, if you are seeing a problem that we have missed, then please let us know about it in this thread.
-- Jonathan