Hello,
The short answer is yes. You can keep it from using 100% CPU while waiting for points. I took a look at your code. One approach would be to put AI Read.vi in a loop, read a portion of your data at a time, then accumulate all the data at the end. A way to accomplish this would be to set "number of scans to read" input of AI Read.vi to zero, watch the "scan backlog" output, then do an actual read when the backlog has the number of scans you want. This allows the program to sleep between reads. Be sure to put a small wait in the read loop.
Another approach is to use DAQ Occurrences. In this case your program sleeps at the driver level. You can find an example of this by searching on "occurrences" in the NI Example Finder.
Best Regards,
Dou
g Norman