Lavio,
This thread is growing very long and I wonder if it might be better to address individual concerns (in separate threads) rather than everything at once.
This being said I will try to make some comments on your concerns:
1. Direct Access to the buffer
We understand your request for direct access into the buffer, however, for the reasons stated by Jonathan earlier in this thread it is unlike to happen. Is the biggest concern that you will have to re-architect your application without such access or is it a concern over performance? If it is a concern over performance can you provide specific benchmarking code that you have found to be less efficient in DAQmx than Traditional DAQ? Any such benchmarking code is welcome and we will be happy to look into it.
2. Scaling M-Series Data
When you read Unscaled data or Raw data it hands you the data as if it came directly from the ADC. No modification, no adaption, no scaling. M-Series employs a technology called MCal. MCal is software calibration based on a third-order polynomial that is created when the board is calibrated. It allows for very linear measurements across the entire range. E-Series employed a hardware calibration and raw data returned from the ADC was therefore precalibrated. However, since hardware calibration is significantly more complicated, the calibration algorithm (albeit an analog calibration algorithm) only adjusted for a single offset and single gain error. Calibrated M-Series data ends up being far more accurate since it can adjust for none linear gain error. For more information on this take a look at:
New NI-MCal Calibration Methodology Improves Measurement Accuracy (
http://zone.ni.com/devzone/cda/tut/p/id/3688)
By reading the coefficients from the driver you can post-scale your data with these third-order polynomial coefficents and gain this accuracy. If you don't apply these coefficents I imagine your data can be much less accurate that raw E-Series data.
Usually in situations where a customer is streaming to disk they save the prescaled data along with the polynomial coefficients. Since the polynomial coefficients don't change during the acquisition the file size overhead is very small. These coefficients can be pulled out later to scale the data.
3. Why NI-DAQmx?
First let me say for the record that NI-DAQmx was not a ploy by National Instruments to try to get more people to use LabVIEW. While Traditional DAQ (Legacy) was a world class driver for its time, when it was originally designed we did not know how many products would eventually be supported. As devices were added and the API grew more complicated it became clear that a new generation of driver would be needed to address the growing needs of our customers while still being able to continually release world class products such as M-Series, Compact DAQ, and others.
At that point we decided to tackle the driver from the ground up and we did a lot of thinking. A lot of thinking... In fact development of DAQmx was a very, very large undertaking and our developers (some of which have contributed on this very thread) took it very seriously. It was not trivial to design or produce a driver that would meet the needs of our very diverse customer base that ranges from the very expert software developer such as yourself all the way to the first year engineering student.
Obviously, the fact that we have a very diverse customer base doesn't help you in your application and I understand your specific concerns. We do hear these concerns and continually look for ways to improve our driver (as noted by Jonathan's earlier comments).
I also understand that the transition from Traditional DAQ to NI-DAQmx in our customer's code is often non-trivial and often requires a major rethinking and overhaul of how things are done. Such changes are never convenient, but in most cases the end result is much better with more maintainable, easier to understand code and higher performance even in C or C++.
Change is often difficult, but progress is rarely achievable without change (Sorry to wax a bit philosophical)...
Let me know if I have misinterpreted any of your concerns and let us know if you have any additional questions (although you may want to start a new thread for them).
Regards,
Neil S.
Multifunction DAQ PSE
National Instruments