A: When NI-DAQmx is installed, it includes help documentation and examples for supported ADEs. This help documentation includes the NI-DAQmx Help, which you can access at Start»All Programs»National Instruments»NI-DAQ»NI-DAQmx Help.

Q:Why did NI create NI-DAQmx?

A: In the late 1990s, the NI-DAQ team recognized that the need to maintain API compatibility with previous releases increased the difficulty of adding new features and devices to Traditional NI-DAQ (Legacy). In addition, the Traditional NI-DAQ (Legacy) API, through its long evolution, had developed many problems that needed to be fixed. NI-DAQ developers were having difficulty intuitively extending the API and optimizing the increasingly broad spectrum of customer applications. NI concluded that a new API design and architecture would help NI-DAQ developers more easily add new features and new devices, fix many existing driver problems, and optimize performance at the same time.

Make it easier to add new features to the DAQ API. The Traditional NI-DAQ (Legacy) API had many functions with a large number of parameters and no efficient way to add new parameters. The NI-DAQmx API, in comparison, uses a property-based approach with a rich property hierarchy. This property-based approach is easy to extend. Adding a new feature is often as easy as adding a new property.

Make it easier to add new devices. NI had difficulty adding more devices to Traditional NI-DAQ (Legacy) without adding more bugs to existing functionality. Finding and fixing the accidental bugs took too much time each release. NI-DAQmx, in comparison, uses a componential plug-in design that facilitates adding new devices.

Make multithreaded data acquisition more efficient. Traditional NI-DAQ (Legacy) was initially designed for older OSes without multithreading. To run safely under a multithreaded OS, Traditional NI-DAQ (Legacy) restricts access to one thread at a time. For applications that need to concurrently perform two or more DAQ tasks, this restriction causes problems because both tasks cannot access the driver at the same time. NI-DAQmx solves this problem with a multithreaded design so that multiple threads can access the driver at the same time.

Speed up DAQ performance, especially single-point performance. Some applications using Traditional NI-DAQ (Legacy) experienced poor software-timed single-point performance because they implemented expensive operations, such as validating the configuration (verify), reserving resources (reserve), and programming the hardware (commit) repeatedly in the main loops. Traditional NI-DAQ (Legacy) did not give applications enough control over when to perform verify, reserve, and commit, so users could not rewrite these applications to run faster. NI-DAQmx speeds up performance with a design based on a well-defined state model. NI-DAQmx provides users with advanced API functions, such as verify, reserve, and commit; therefore, users have more control over when to perform expensive operations.

Improve driver quality and reliability. NI-DAQmx is designed with world-class data acquisition quality and robustness in mind. Since the beginning of NI-DAQmx development, every time a user adds a new feature or makes a change to the driver, a rigorous and comprehensive suite of automated functional and performance tests verifies that the change has not introduced a bug. This suite tests common and uncommon driver uses in a variety of device, sensor, and OS configurations. Uncommon or exceptional driver uses are important to overall reliability. NI-DAQmx is designed to handle exceptional conditions such as DAQ task abortion, watchdog timer expiration, and surprise device removal (such as unplugging a USB device from the computer).

Make data acquisition easier. In the mid-1990s, the NI-DAQ team added an Easy I/O and Intermediate I/O layer to Traditional NI-DAQ (Legacy) to make some common DAQ tasks easier. However, the layered approach caused some problems because as soon as users needed to add more advanced features to applications, they had to rewrite the applications with the more advanced API. NI-DAQmx makes developing applications easier through the following:

Configuration tools such as the NI-DAQmx DAQ Assistant. With the DAQ Assistant, users can graphically select the type of measurements they want to perform, save the configurations for later use, and generate code to include in applications.

Descriptive error reporting in NI-DAQmx. This feature helps users precisely identify the cause of an error and recommends solutions. Users have found that the advanced error reporting in NI-DAQmx makes debugging a DAQ application much easier.

Ease-of-use features beginning with LabVIEW 7. New features introduced in LabVIEW 7 that especially apply to NI-DAQmx include the ability to create Express VIs and polymorphic VIs. With Express VIs, users can replace large parts of a complex DAQ application with a simple configuration dialog. With polymorphic VIs, users can find features more easily. Because of both of these features, users develop applications in less time.

Polymorphic VIs simplify the NI-DAQmx API

Q: Which hardware does NI-DAQmx support? Not support?

A: Refer to the NI-DAQ Readme for device support lists. You can access the Readme at Start»All Programs»National Instruments»NI-DAQ»NI-DAQ Readme. You can also view the online device support table for additional information.

Q: With which programming languages can I use NI-DAQmx?

A: You can use NI-DAQmx for Windows with a number of different programming languages including the following:

To install support for these ADEs, select the appropriate support during the NI-DAQmx installation. When you first install NI-DAQmx, expand the NI-DAQmx section on the feature tree. Then, select the APIs you plan to use to install the appropriate support. If you have already installed NI-DAQmx and want to change your preferences, run Add/Remove Programs. Select the NI Software entry and click Change. Next, select NI-DAQmx on the list of NI software installed on your machine. Click Modify to launch the NI-DAQmx installer, where you can specify your API support preferences. When installing NI-DAQmx for Linux, you can choose to install support for the following ADEs including:

NI LabVIEW 8 or higher

ANSI C Compiler (i.e. gcc)

Q: Which operating systems does NI-DAQmx support?

A: NI-DAQmx supports the following operating systems:

Windows 7 (32- and 64-bit)

Windows XP (32-bit)

Windows Vista (32- and 64-bit)

Windows 2000

Linux (SUSE, Redhat, Mandriva)

Phar Lap with LabVIEW Real-Time

Q: What is on the NI-DAQmx CD?

A: The NI-DAQmx installer includes driver support for various programming languages and application development environments. In addition, the installer includes NI LabVIEW SignalExpress and Measurement & Automation Explorer (MAX) software. The installer includes the following components:

NI-DAQmx Application Development Environment support for the following:

NI LabVIEW with examples, API support, and documentation (Refer to the NI-DAQ Readme for a supported versions of LabVIEW.)

If you are using a Microsoft development environment, consider using Measurement Studio to dramatically reduce your application development time. Measurement Studio provides tools designed specifically for Microsoft Visual Basic, Visual C# .NET, and Visual C++ to bring you simplified integration with data acquisition and instrument control interfaces for easier hardware integration. Refer to What is Measurement Studio for more information.

Q: How do I use NI-DAQmx with LabVIEW Project?

A: With the LabVIEW Project Explorer, you can create and organize NI-DAQmx tasks, global virtual channels and scales within the LabVIEW project. These components are saved with the project and are not added to MAX. Refer to Using NI-DAQmx with LabVIEW Project for more information.

Q:How is NI-DAQmx for Windows different from NI-DAQmx Base for Windows?

A: For a full description of how these tools compare, use the driver comparison chart at ni.com/dataacquisition/software.

Although NI-DAQmx and NI-DAQmx Base have a similar API, the two APIs also have completely different architectures. NI-DAQmx Base is written with the NI tool for custom driver development using register-level programming – the NI Measurement Hardware DDK (driver development kit). One of the benefits of this is that the NI-DAQmx Base source code is available for review. This gives you the ability to open subVIs and “tunnel down” to view/edit register accesses in LabVIEW and add or modify functionality.

NI-DAQmx Base does not have several of the software features included with NI-DAQmx. A few of the features available only in NI-DAQmx include the following:

DAQ Assistant

Property nodes for advanced DAQ tasks

Multithreaded I/O performance

Q:Why would I choose not to develop using NI-DAQmx?

A: While NI encourages you to take advantage of NI-DAQmx benefits in your applications, there are a couple of situations where using NI-DAQmx is not ideal.

For your convenience, NI also offers copies of the NI-DAQmx for Windows and NI-DAQmx for Linux CDs for a small fee to cover administrative costs.

Q: Is NI-DAQmx localized for languages other than English?

A: NI-DAQmx is localized into six languages: English, French, German, Japanese, Korean, and Simplified Chinese. Increasing support for localized languages is a key priority for NI-DAQmx releases. For the latest information on device, software, and documentation localized support, please refer to the NI-DAQmx Readme.

Generate code in your NI application software for use in your application

View connection diagrams for your sensors

Calibrate a virtual channel from sensor to software

Note: You must use version 7.x or later of LabVIEW, LabWindows/CVI, and Measurement Studio and 2.x of LabVIEW SignalExpress to use the DAQ Assistant. You also can use the DAQ Assistant to generate NI-DAQmx code, run your tasks and global virtual channels, or move your tasks and channels to other systems.

The DAQ Assistant is built on top of the NI-DAQmx API and can serve as both a configuration tool and a learning tool to help you get up to speed quickly on the new NI-DAQmx API.

After configuration, the DAQ Assistant Express VI in LabVIEW contains all the API code necessary to run your configured task, but it is hidden from the block diagram. If you want to view or modify the API functions in your configuration instead of using DAQ Assistant dialogs, the DAQ Assistant includes code-generation capability for LabVIEW, LabWindows/CVI, and Measurement Studio applications.

Q:What is an NI-DAQmx task?

A: An NI-DAQmx task is a collection of one or more virtual channels with timing, triggering, and other properties. Conceptually, a task represents a measurement or generation you want to perform. You can set up and save the configuration information in a task and use the task in an application.

Q:What is the difference between a local virtual channel and a global virtual channel in NI-DAQmx?

A: In NI-DAQmx, you can configure virtual channels as part of a task or separate from a task. Virtual channels created inside a task are localvirtual channels. Virtual channels defined outside a task are globalvirtual channels.

You can create global virtual channels in MAX or in your application software and save them in MAX. You can use global virtual channels in any application or add them to a number of different tasks. If you modify a global virtual channel, the change affects all tasks that reference that global virtual channel.

Q: When should I use a task?

A: Tasks are necessary for any operation that utilizes timing and/or buffered operations. On demand operations can also utilize tasks to reuse settings and improve performance. Also, tasks can contain multiple physical channels and global virtual channels with different gain, terminal configuration and custom scaling settings while using the same timing settings.

Q: When should I use a global virtual channel?

A: A global virtual channel references only a single physical channel and does not contain timing or triggering. However, a global virtual channel can be contained and referenced by multiple tasks, making them ideal for channels that need to be used in multiple tasks while maintaining settings such as physical channels, terminal configuration and custom scaling.

Q:Can I programmatically save “virtual channels” with NI-DAQmx?
A: With NI-DAQmx 7.4 and later, you can programmatically create and save tasks, global virtual channels, and scales. The programmatically saved objects appear in MAX, and you can use them in the DAQ Assistant and in your applications.

Programmatically saving tasks, channels, and scales simplifies system configuration and deployment to multiple locations and reduces the chance for error and need for debugging.

Q:How do I import/export device, task, channel, and scale configurations?
A: Using MAX, you can export your system configuration for use as a backup or for deployment to other machines.

Use the export wizard to copy configuration data from a system to a file. To start the Export Wizard, select File»Export in MAX.

Q: What are property nodes?

A: Property nodes are LabVIEW constructs that you can use to access attributes on the referenced object. NI-DAQmx uses these constructs to provide complete programmatic control for all properties supported by the NI-DAQmx API, and these property nodes form the base functionality of the API.

In addition to property nodes, NI-DAQmx also provides a set of NI-DAQmx VIs that you can use to write your application. These VIs are functionally equivalent to using property nodes but are generally easier and more convenient to use. For instance, the following two examples are equivalent in functionality; however; the first example uses NI-DAQmx VIs, and the other example uses NI-DAQmx property nodes.

Use NI-DAQmx property nodes for advanced task customization

For most applications, NI-DAQmx VIs provide the functionality required. However, for more advanced applications, you may need the property nodes to access some driver attributes and features.

Q: How do I find advanced terminals?

A: Even with Filtering, the list of property nodes for a device can be extensive. To view a tree of the properties in the property node, right click on the property selector and click Select Property.

With this dialog box, you can browse the entire property node hierarchy. You can search for properties by clicking the search icon in to upper right hand corner of the Select Property dialog box.

Q:How can I simulate a DAQ device?

A: With NI-DAQmx for Windows 7.4 and later, you can create an NI-DAQmx simulated device of most devices supported by NI-DAQmx and add it to your hardware configuration in MAX. Then, you can use the simulated device in your application software. For instructions for creating an NI-DAQmx simulated device, refer to the Measurement & Automation Explorer Help for NI-DAQmx.

Create NI-DAQmx simulated devices

NI-DAQmx simulated devices are useful for creating and running NI-DAQmx programs and for trying out tools such as the DAQ Assistant or LabVIEW SignalExpress without any physical hardware present.

Tasks using NI-DAQmx simulated devices are verified just as they are on real devices. If a property is set to an invalid value, the error returned for a simulated device is identical to the error returned for a real device. All resources necessary for the task are reserved for NI-DAQmx simulated devices. RTSI lines, PXI trigger lines, DMA channels, counters, and so on are counted and reserved just as they are on real devices.

Q: Do you have to have administrative rights in order to install NI-DAQmx and use NI data acquisition hardware?

A: With NI-DAQmx version 8.6 and newer, the NI-DAQmx driver is signed in accordance with Microsoft policies for driver signing. In addition to assuring system security, this feature allows for select NI USB DAQ devices to be installed on a Windows XP machine without requiring Administrator privileges or manually accepting a Windows prompt to install a device driver. In many situations including academic labs and using a machine as a guest, it is not possible to get Administrator privileges. A signed NI-DAQmx driver now alleviates the situation as long as the driver was originally installed by an Administrator. Supported devices include:

NI CompactDAQ and all supported modules

USB-6008 and 6009

USB-6501

USB-9162 (USB sleeve for C Series modules)

Bus-Powered USB M Series (USB-621x)

Wall-Powered USB M Series (USB-622x and USB-625x)

Vernier SensorDAQTM

For Windows Vista x64 Edition, Microsoft requires a digital signature on all drivers. By requiring new, signed drivers, Microsoft aims to reduce failures and improve stability by shining a spotlight on vendor responsibility for bugs. With Windows Vista x86, administrators can install unsigned drivers, but Microsoft continues to discourage their use. All NI-DAQmx data acquisition devices are digitally signed for Windows Vista x86 and x64. With digital signing, all devices will install without user prompts or Administrator privileges. PCI devices will install automatically upon start up, and USB devices will install when plugged in and (if necessary) powered on.

3. Performance

Q: How does NI-DAQmx take advantage of emerging PC technologies?

A: NI-DAQmx includes support for LabVIEW, which can take advantage of the increased processing power of multicore processor technology. LabVIEW is multithreaded and inherently parallel. When used with a multithreaded driver such as NI-DAQmx, the LabVIEW compiler automatically finds parallelisms in the code and assign them to run on separate processors to optimize operation.

Along with LabVIEW, NI-DAQmx is now optimized for multicore systems. Originally, NI-DAQmx was introduced to provide a new easy-to-use, high-performance driver that would allow the next generation of data acquisition systems to keep pace with emerging PC technologies. One of the performance improvements of NI-DAQmx is multithreaded access. The ability to access the driver from multiple threads unblocks system bottlenecks and can greatly improve performance in DAQ applications. With the emergence of multicore PCs, NI-DAQmx now allows I/O tasks to execute in parallel on different cores through multithreaded operation.

Additionally, NI-DAQmx leverages the new multithreaded support added in LabVIEW Real-Time providing greater performance on multicore real-time targets. Multiple NI-DAQmx real-time tasks can execute in parallel on different cores allowing real-time DAQ applications to fully utilize the multicore architecture of modern processors.

NI-DAQmx provides support for PC buses including USB 2.0, PCI, PCI Express, PXI, and PXI Express. Unlike other data acquisition drivers, NI-DAQmx provides a bus and device impartial framework to allow for the same driver and developed application to run on multiple devices. For instance, an application originally developed for use with the PCI-6229 low-cost M Series device also works with the PXI-6281 high-accuracy M Series device, the USB-6259 BNC high-speed M Series device, and more.

Q: Can I make NI-DAQmx smaller so that it doesn't take up so much disk space?

A: You can select different runtimes of the NI-DAQmx driver to decrease the disk space by more than 70 percent. This allows you to repackage NI-DAQmx so that you can install it with your deployed applications.

NI-DAQmx installs much more than just the basic .dll driver. NI-DAQmx is a componentized, extensible driver software package featuring necessary components required to simplify configuration, device management, development, and cross-device functionality. In addition, NI-DAQmx includes a set of measurement services which go far beyond a basic API to make device function calls. NI-DAQmx includes LabVIEW SignalExpress LE, Measurement & Automation Explorer (MAX), documentation, examples, and the DAQ Assistant.

The NI-DAQmx installer extracts the installation files to your hard disk in the C:\National Instruments Downloads\NI-DAQmx folder. After the installation of NI-DAQmx is complete, the installation files remain on the hard disk and take up close to 1 GB of disk space. If you ever need to free up disk space on your hard disk, you can delete these files without affecting the functionality of NI-DAQmx. However, in the future, if you wish to install additional features of NI-DAQmx or include NI-DAQmx in an installer created in LabVIEW, you must extract these files back onto your hard disk or place them on a CD-ROM.

Q: Can I include NI-DAQmx as an additional installer with the stand-alone application I have created in LabVIEW?

A: Many deployed LabVIEW and NI LabWindows/CVI data acquisition applications do not require support for all of the functionality of the NI-DAQmx driver and utilities. With NI-DAQmx version 8.6.1 and previous, you can deploy five different runtime versions of NI-DAQmx, ranging from the full-featured driver to a size-optimized runtime engine. With any version 8.7.1 or newer, the only install type selectable is Full. The additional options were removed because omitting specific features such as Measurement & Automation Explorer (MAX), makes it much harder to program the source files that use the DAQmx driver. Before choosing a limited runtime of NI-DAQmx, be aware of the difficulty in future development if building an NI-DAQmx installer with the limited selections.

With NI-DAQmx, you can either build the different runtime engines yourself while building an installer for your LabVIEW application, or you can download one of the different runtimes from ni.com. The following sections describe the five different NI-DAQmx runtime engines and provide possible use cases for each version.

Complete the following steps to access the custom runtime capabilities:

On your development machine, create and save your NI-DAQmx application into a new LabVIEW project. Save the LabVIEW project.

From the Project Explorer, right-click Build Specifications and select New > Installer.

In the installer properties window, click Additional Installers under Categories.

Select NI-DAQmx 8.6 or later, and select the Installer Type from the drop-down list in the top-right of the window.

Full

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Use Case: This is the default selection when building a custom installer that includes NI-DAQmx. Use this version if you need to do additional development in NI-DAQmx on your target machine.

Runtime

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Application development environment (ADE) support for LabVIEW, LabWindows/CVI, and NI Measurement Studio

Use Case: If you are deploying your NI-DAQmx application into an executable that requires no further development, and you used the DAQ Assistant in the development of the application, you can use this option when creating the NI-DAQmx installer.

Runtime 2

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Application development environment (ADE) support for LabVIEW, LabWindows/CVI, and Measurement Studio

The DAQ Assistant

Use Case: If you are deploying your NI-DAQmx application into an executable that requires no further development, and you did not use the DAQ Assistant in the development of the application, you can use this option when creating the NI-DAQmx installer.

Runtime 3

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Application development environment (ADE) support for LabVIEW, LabWindows/CVI, and Measurement Studio

The DAQ Assistant

NI-DAQmx documentation

Use Case: If you are deploying your NI-DAQmx application into an executable that requires no further development, you did not use the DAQ Assistant in the development of the application, and you do not require NI-DAQmx documentation including help files on your target machine, you can use this option when creating the NI-DAQmx installer.

Runtime 4

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Application development environment (ADE) support for LabVIEW, LabWindows/CVI, and Measurement Studio

The DAQ Assistant

NI-DAQmx documentation

LabVIEW Real-Time support

Use Case: If you are deploying your NI-DAQmx application into an executable that requires no further development, you did not use the DAQ Assistant in the development of the application, you do not require NI-DAQmx documentation including help files on your target machine, and the application will not be deployed to a LabVIEW Real-Time target, you can use this option when creating the NI-DAQmx installer.

Runtime 5

This distribution installs all the driver software included in NI-DAQmx but does not include:

NI LabVIEW SignalExpress

Application development environment (ADE) support for LabVIEW, LabWindows/CVI, and Measurement Studio

The DAQ Assistant

NI-DAQmx documentation

LabVIEW Real-Time support

Measurement & Automation Explorer (MAX)

Use Case: If you are deploying your NI-DAQmx application into an executable that requires no further development; you did not use the DAQ Assistant in the development of the application; you do not require NI-DAQmx documentation including help files on your target machine; the application will not be deployed to a LabVIEW Real-Time target; and you do not require MAX for such things as troubleshooting installation, setting up device configurations including device names, tasks, scales, and channels, you can use this option when creating the NI-DAQmx installer.

Q:How does a state machine help improve the performance of NI-DAQmx?

A: The NI-DAQmx task state machine keeps track of which configuration operations you need to perform before a data acquisition or generation can begin. Configuration operations include checking the configuration (verify), reserving resources (reserve), and programming the hardware (commit).

NI-DAQmx implements a state machine to ensure that expensive operations such as task verification, resource reservation, and hardware programming are performed only when needed. A DAQ application can benefit from improved performance when performing explicit configuration operations outside the main acquisition or generation loop. NI-DAQmx offers explicit commands that cause a verify, reserve, or commit operation to be performed. When a task is explicitly verified, reserved, committed, or started outside an acquisition or generation loop, NI-DAQmx does not repeat these operations at every loop iteration, so overall, the application runs faster.

NI-DAQmx improves performance by enforcing a state model for DAQ tasks

For additional information about each of the NI-DAQmx states, refer to the NI-DAQmx Help.

Q:What are the primary factors that limit streaming-to-disk performance?

Disk I/O Bandwidth
The typical system with an IDE drive is primarily limited by the disk throughput.

Potential improvements include adding a dedicated drive or controller for streaming. A dedicated drive circumvents performance problems due to fragmentation and disk access by the OS or other application. High-speed drives and a high-speed RAID controller increase the disk I/O bandwidth.

Note: Check the CPU bandwidth and bus bandwidth before investing in drives and controllers to avoid increasing disk I/O beyond what you can realistically use.

CPU Bandwidth
For unscaled data, processor bandwidth generally impacts performance only in systems where a high-speed RAID controller has been installed. In these systems, the CPU can impact how quickly you can retrieve and write acquired data to the disk drive. Even with a dedicated RAID controller, a portion of the CPU bandwidth is consumed while writing data to disk. For scaled data, processor bandwidth is often the limiting factor.

Increasing the number of CPUs in the system and the speed of the CPUs increases the system bandwidth.

Even when a CPU uses less than 100 percent, minimize tasks and operations done in parallel. Competition for scarce resources can lower streaming-to-disk performance.

Finally, tune the streaming code for the particular system. For systems with multiple CPUs, executing some code in parallel may increase the throughput of the system.

Optimize code to avoid memory copies and other operations that waste CPU bandwidth.

Bus Bandwidth
A typical desktop system with a single PCI/PXI bus can be limited by bus bandwidth. The theoretical bandwidth for standard PCI/PXI is around 130 MB/s. The actual bandwidth is lower depending on the amount of bus contention. Generally, more devices operating at the same time on the same bus lower bus bandwidth.

Note: A single NI 6115 DAQ device can generate 80 MB/s of data.

Increasing the number of buses in the system is the only way to increase bus bandwidth. For example, some high-end motherboards include two or more independent PCI buses. This helps you set up a system with a RAID controller and DAQ devices on separate buses. For these motherboards, bridge chips may limit the total throughput of all of the combined buses.

Q:How well does NI-DAQmx perform high-speed streaming to disk?

A: NI-DAQmx primarily affects streaming-to-disk performance because it uses CPU bandwidth while moving and scaling data acquired by devices. Therefore, on systems where CPU bandwidth is a limiting factor, it is critical that NI-DAQmx efficiently uses the CPU.

NI-DAQmx has undergone multiple optimizations since its first release to reduce CPU usage while reading and writing. For example, between the NI-DAQ 7.3 and 7.4 releases, the performance of scaled analog input benchmarks has increased from 8 to 60 percent. The performance of unscaled analog input benchmarks has increased from 12 to 40 percent. The performance increase translates directly to higher streaming-to-disk throughput on systems where CPU bandwidth is an issue.

NI-DAQmx implements an extremely simple form of compression. Bits at the end of samples are simply thrown out and the resulting samples are packed into memory. NI-DAQmx does not implement any other lossless or lossy compression algorithms such as LZW or JPEG.

In some cases, no data is “lossed” because the samples already contain unused bits. For example, a channel with 12-bit resolution and a 16-bit sample size contains four unused bits. You can discard the four bits with no loss while reducing the required disk space by 25 percent.

In addition, you can configure NI-DAQmx to discard one or more of the least significant bits in a sample. For example, you can configure a channel with 24-bit resolution and a 32-bit sample size to return only the 20 highest-order bits. A total of 12 bits are discarded, including eight unused bits, which reduces the required disk space by 37.5 percent.

4. Traditional NI-DAQ (Legacy)

Q: Why would I upgrade to NI-DAQmx from Traditional NI-DAQ (Legacy)?

A: Upgrading from Traditional NI-DAQ (Legacy) to NI-DAQmx offers a number of benefits. One important reason is that NI engineers focus on improving the productivity and performance of NI-DAQmx, not Traditional NI-DAQ (Legacy). NI-DAQmx users stand to reap the benefits of innovation if they are using the latest version of NI-DAQmx.

Independent of the current engineering efforts, users may choose to upgrade to NI-DAQmx simply because of software feature advantages when compared to Traditional NI-DAQ (Legacy). A few of these advantages include the following:

Improved state model

Multithreaded driver

Reliability in exceptional conditions

Simplified synchronization

Decreased LabVIEW diagram clutter

Smooth transition from easy to advanced programming

Another reason to upgrade to NI-DAQmx is to take advantage of the latest DAQ hardware NI offers. The newest and most innovative DAQ devices provide technologies available with no other vendor and on no other devices. The latest NI DAQ devices are supported only by NI-DAQmx.

Q: Which resources are available to help me upgrade my applications from Traditional NI-DAQ (Legacy) to NI-DAQmx?

A: The Developer Zone at ni.com includes excellent resource for helping Traditional NI-DAQ (Legacy) users upgrade their applications to NI-DAQmx.

One tutorial, Transition Traditional NI-DAQ to NI-DAQmx, shows that although many of the programming techniques are similar between Traditional NI-DAQ (Legacy) and NI-DAQmx, there are some slight differences. This tutorial describes the similarities and differences between the most common VIs and functions in each of the APIs.

For users who plan to upgrade to NI-DAQmx but want to use their current Traditional NI-DAQ (Legacy) applications with new NI-DAQmx-supported hardware, NI has created the Traditional NI-DAQ (Legacy) compatibility VIs. These VIs replace certain Traditional NI-DAQ (Legacy) VI libraries with libraries that work with both Traditional NI-DAQ (Legacy) and NI-DAQmx. These VIs look identical to the existing Traditional NI-DAQ (Legacy) VIs and integrate seamlessly into existing applications. The compatibility VIs were created to use while waiting for the application to be rewritten using NI-DAQmx, but you can still use NI-DAQmx-only devices.

Note: These VIs do not support all features on all devices and are not guaranteed to be updated with future revisions. To learn more about these VIs, visit ni.com.

Additionally, the NI Web site has thousands of DAQ example programs available at ni.com/examples. Hundreds of these examples show how to use NI-DAQmx to accomplish the most common DAQ tasks.

Q: Can I use Traditional NI-DAQ (Legacy) and NI-DAQmx at the same time?

A: You can use Traditional NI-DAQ (Legacy) and NI-DAQmx at the same time if you have two DAQ devices and one of them is using Traditional NI-DAQ (Legacy) and the other NI-DAQmx. If you only have one DAQ device, you can still use both Traditional NI-DAQ (Legacy) and NI-DAQmx but only in sequence – not at the same time. You need to reset your device to switch between Traditional NI-DAQ (Legacy) and the NI-DAQmx driver as part of the sequence.

In LabVIEW, use the Device Reset VI at the end of Traditional NI-DAQ (Legacy) sequence and the DAQmx Reset Device VI at the end of your NI-DAQmx sequence. You still need to create a Traditional NI-DAQ (Legacy) virtual channel and an NI-DAQmx Task for use with each driver respectively.

Traditional NI-DAQ (Legacy) and NI-DAQmx can be used in the same application

Q: How do I move my configuration between machines without the NIConfig.DAQ file?

A: You can now use the Export function in NI-DAQmx to transfer your hardware configurations between machines.

Go to MAX and select File»Export to start the Configuration Export Wizard. Using this wizard, you can select the configurations to export and save them to a file of your choice for exporting. To import the configurations, go to MAX, File»Import and import the configurations from the file generated by the Configuration Export Wizard.

Import/Export hardware configurations using MAX

Q: How do I use SCXI devices now? The “ob0!sc1!md1!0” channel string syntax doesn’t work in NI-DAQmx.

A: SCXI channel strings used in Traditional NI-DAQ (Legacy) are no longer used with NI-DAQmx. The format is now SCxMody/channel.

x refers to the SCXI chassis ID chosen when configuring the chassis.

y refers to the slot position of the module. The slots in the chassis are numbered from left to right, starting at 1.

I/channel has different formats depending on the type of data acquisition performed:

Analog Input: /ai#. # is the number of the analog input channel on the module. For example, SC1/MOD1/ai1 refers to the physical analog input channel 1 of the module in slot 1 of the SCXI chassis that has ID of 1. If you have multiple channels configured with the same SCXI module, you can include them all in the format of SC1/MOD1/ai1, 2, 4. It refers to analog input channel 1, 2, and 4 of the same SCXI module.

Analog Output: /ao#. # is the number of the analog output channel on the module. For example, /ao2 refers to the physical analog output channel 2.

Digital I/O: port#/line#. The first number refers to the digital port and the second number refers to the digital line of the port being used. For example, port0/line2 means the physical digital port 0 line 2.

Counter I/O: ctr#. # is the number of the counter on the module. For example, /ctr0 means the counter 0 of the module.

Q: How do I program with counters using NI-DAQmx?

A: The table below shows similar NI-DAQmx and Traditional NI-DAQ (Legacy) VIs to help convert them:

A: If you are doing double-buffered I/O, you would most likely be polling the buffers to continuously acquire data. In NI-DAQmx, you can achieve this simply by using the NI-DAQmx timing function and setting the Sample Mode parameter to Continuous.

NI-DAQmx uses circular buffers. For input operations, portions of data are read from the buffer while the buffer is filled. Likewise for output operations, portions of the buffer can be written to while the buffer is emptied. Using a circular buffer, you can set up your device to continuously acquire data in the background while NI-DAQmx retrieves the acquired data.

NI-DAQmx simplifies double-buffered data acquisition

Q: How do I configure my SCXI modules using NI-DAQmx?

A: Refer to the Measurement & Automation Explorer Help for NI-DAQmx for instructions on configuring SCXI devices.

You can still set SCXI module properties in MAX by selecting NI-DAQmx Devices, right-clicking the SCXI chassis, and selecting Properties. You see each module that resides in your chassis and you can set the properties of each module by clicking the Details tab.

Configure SCXI modules and chassis with MAX

The only property not exposed in MAX is the gain setting. NI-DAQmx can automatically configure the device for the best gain settings based on the I/O limits of your signal.

Note: NI-DAQmx for Linux does not include MAX but does include a separate utility for configuring hardware devices including SCXI. To learn more about this utility, visit the NI-DAQmx for Linux FAQ at ni.com/dataacquisition/nidaqmx.

Q:How is pulse train polarity and duty cycle control functionality different in NI-DAQmx?

A: In NI-DAQmx, you can simplify your program by using the general DAQmx Create Channel functions and select Counter Output»Pulse Generation»Frequency. In Traditional NI-DAQ (Legacy), you must use the Generate Pulse Train function to define the polarity, frequency, and duty cycle of the pulse train. Besides frequency and duty cycle, NI-DAQmx uses the Idle State parameter to configure the polarity of the pulse train.

NI-DAQmx simplifies counter/timer applications

Q:Why are some DAQ devices supported only by NI-DAQmx?

A: Future NI DAQ devices will be supported by NI-DAQmx but not by Traditional NI-DAQ (Legacy). NI engineers focus on the productivity and performance of NI-DAQmx instead of using resources to develop legacy driver software.

Refer to the NI-DAQ Readme for a complete list of device support.

Q: Is NI going to continue to develop Traditional NI-DAQ (Legacy)?

A: NI has no plans to continue developing Traditional NI-DAQ (Legacy). However, to maintain existing applications, NI will continue to support Traditional NI-DAQ (Legacy) and make it available for users.

Q:Which performance improvements does NI-DAQmx offer?

A: DAQ performance in a user application is a combination of many factors, including sampling rate, bus speed, driver performance, analysis, and other operations. NI-DAQmx can increase application performance over Traditional DAQ (Legacy) in many applications because of the driver architecture improvements including the following:

Multithreaded operation. With NI-DAQmx, if you use LabVIEW or a multithreaded C program, performance increases because multiple threads can access the NI-DAQmx driver at the same time as long as those threads are executing different NI-DAQmx tasks. The ability to access the driver from multiple threads unblocks bottlenecks in DAQ applications and can greatly improve performance in some cases. Multithreaded operation makes the most difference in applications that are performing multiple tasks and are also reading or writing multiple samples at a time.

Better control of expensive DAQ operations. With NI-DAQmx, you have more control over driver operations–such as checking the configuration (verify), reserving resources (reserve), and programming the hardware (commit)–that can bottleneck some applications. With NI-DAQmx, you can develop an application that verifies, reserves, or commits a task outside of the main DAQ loop so that the driver does not need to perform these operations repeatedly.

Built-in hardware-timed single-point operation. NI-DAQmx 7.2 introduced built-in support for applications that need to perform hardware-timed single-point data acquisition. The new built-in mode has several advantages over Traditional NI-DAQ (Legacy), including better performance for single-point tasks using multiple channels

Q:Has single-point I/O performance improved?

A: NI-DAQmx offers better single-point I/O performance than Traditional NI-DAQ (Legacy) in almost every case. However, there are cases when Traditional NI-DAQ (Legacy) offers better performance.

Hardware-timed single point for applications with only one input and one output channel

Sometimes Traditional NI-DAQ (Legacy) is faster because NI-DAQmx offers more functionality than Traditional NI-DAQ (Legacy). For instance, you can arbitrarily group lines and ports with NI-DAQmx digital channels. Support for multithreading and handling exceptional conditions, such as surprise device removal, adds some additional overhead.

The NI-DAQmx team is constantly working on new features that improve the performance of the driver.

Note: Traditional NI-DAQ (Legacy) users may not be familiar withhardware-timed single point. More specifically, these applications use hardware timing, a buffer size of zero, and reading or writing one sample at a time.