NI LabWindows™/CVI™ Supports Latest PC Technologies

As a modern development environment, NI LabWindows™/CVI can incorporate the latest technologies while consistently maintaining backwards compatibility and focusing on software stability. With continually improving PC hardware, developers need software tools that can use multiple cores with powerful and easy-to-implement parallelization of code and support extended memory addressing. Additionally, the prevalence of system distribution necessitates strong networking libraries and support for web technologies. LabWindows/CVI features continually evolve to simplify development of ever increasingly more complex applications.

Because industry standards are pushing more open technology and more powerful hardware, LabWindows/CVI incorporates technologies such as multithreading, .NET, XML Web services, Internet-enabled applications, and 64-bit extended memory addressing.

Table of Contents

Develop Multi-threaded Applications
Easily Integrate Microsoft .NET Libraries
Web Connectivity through Internet and XML Libraries
Support for Extended 64-Bit Memory
Additional Resources


 Develop Multi-threaded Applications

LabWindows/CVI software has natively supported multithreaded application creation since the mid-1990s. Now, with the widespread availability of multicore CPUs, you can use LabWindows/CVI to fully take advantage of multithreaded technology capabilities.

Figure 1. LabWindows/CVI provides a Threads window to view detailed debugging and stack trace information on a per-thread basis

LabWindows/CVI provides simplified ANSI C thread synchronization functions and optimized threading constructs to address the challenges associated with building multi-threadded applications such as memory access and communication between threads. It also contains several advanced features that simplify troubleshooting and design optimization on multicore systems.

The LabWindows/CVI multithreading library provides the following multiple performance optimizations over standard Windows SDK threading APIs:

  • Thread pools help you schedule functions for execution in separate threads.
  • Thread-safe queues abstract passing data between threads.
  • Thread-safe variables effectively combine a critical section and an arbitrary data type.
  • Thread locks simplify using a critical section or mutex by providing a consistent API and by automatically choosing the appropriate mechanism when necessary.
  • Thread-local variables provide per-thread instances of variables.


 Easily Integrate Microsoft .NET Libraries

With LabWindows/CVI, you can take advantage of the latest Microsoft .NET technologies to invoke methods and set and get properties from .NET assemblies. The .NET assemblies are the building blocks of all .NET applications; thus, LabWindows/CVI programmers can use this functionality to call Web services such as those for sending automated emails, accessing rich database functionality, and interacting directly with Microsoft Windows API methods including those for viewing CPU use and logging errors.

Figure 2. LabWindows/CVI .NET Controller Wizard wraps .NET assemblies for easy use in ANSI C code

LabWindows/CVI provides a .NET Controller Wizard to generate a LabWindows/CVI wrapper for a .NET assembly. LabWindows/CVI generates the wrapper in the form of an instrument driver, source file, and header file. You also can use the LabWindows/CVI .NET library functions in conjunction with the generated wrapper when calling a .NET assembly.


 Web Connectivity through Internet and XML Libraries

LabWindows/CVI also includes the Internet library, which you can use to instantly connect your applications to the web through email, FTP, Telnet, and ping. Use the client–side FTP file transfer, Telnet communication, and email capabilities to automatically send files to an FTP server, send commands to a Telnet server, or send and receive email from a LabWindows/CVI application. You can send email or text messages to notify operators of specific events, such as a machine overheating.

Acting as a client, a LabWindows/CVI application can download updated configuration or data files from an FTP server, read data from a Telnet server, or obtain and parse messages from a POP3 server. Furthermore, you can use the functions in the Internet library to launch the default web browser and navigate to a specified URL or ping a machine to check if it is available.

In addition, LabWindows/CVI contains an XML function library. The cvixml.fp instrument driver includes functions you can use to create and modify XML documents.


 Support for Extended 64-Bit Memory

Processors with 64-bits can handle arrays of larger sizes and can support more memory capacity than processors with 32-bits. When you combine a 64-bit processor with a 64-bit operating system, you can take advantage of increased memory and data storage for your applications. You can use LabWindows/CVI to create and distribute either 64-bit or 32-bit executables, DLLs, and static libraries.

 Additional Resources

Other Features in LabWindows/CVI

Feature Comparison Chart

Download LabWindows/CVI


Next Steps

Previous: Scientific User Interface Controls

Next: Linux and Real-Time Deployment Options


The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation in the United States and other countries.

All Products and Services