LabWindows/CVI Features

Features at a Glance

* Integrated ANSI C development environment with built-in libraries for
data acquisition, analysis, and presentation

* Project-oriented development system designed for easy integration of
multiple source files

* Simplified graphical user interface (GUI) programming for Windows and Sun
with LabWindows/CVI User Interface Editor and Library

* Function panels for interactive execution and automatic code generation
of function calls

* User protection against programming errors

* Integrated ANSI C compiler, linker, debugger, variable trace/display, and
memory checking capabilities for quickly creating, running, and
troubleshooting applications

* Open system architecture for integration with external ANSI C source
files, object modules, C libraries, and dynamic link libraries (DLLs)

* Over 300 instrument drivers for IEEE 488/488.2, VXI, and RS-232
instruments

* Libraries for controlling RS-232 serial interfaces and National
Instruments data acquisition (DAQ) and signal conditioning hardware, IEEE
488.2 interface boards, and VXIbus/MXI controllers

* Built-in analysis libraries rivaling dedicated analysis packages

* Cross-platform tool for developing applications under Microsoft Windows
and Sun Solaris

* Built-in TCP/IP and dynamic data exchange (DDE) interprocess
communication capabilities

* Migration path from DOS to Microsoft Windows on the PC or to X Window
System on Sun SPARCstations for LabWindows for DOS users

Features in Detail

Integrated Development Environment with Built-in Libraries

LabWindows/CVI is a software development environment for building Windows
and UNIX (Sun Solaris) instrumentation systems using the ANSI C standard
programming language. With built-in libraries for data acquisition,
analysis, and presentation, and integrated code-generation and debugging
tools, users can develop applications quickly within the LabWindows/CVI
environment. The objective of the LabWindows/CVI environment is fast and
easy application development and debugging, replacing the traditional,
batch-oriented edit-compile-link-debug C language development process with
a single environment. LabWindows/CVI provides tools for building a user
interface, and then creating, compiling, executing, and debugging the ANSI
C code for acquiring, analyzing, and presenting data. Each of these
development tools is encapsulated within a single, cohesive environment.
In addition to having built-in libraries that ensure seamless integration
between hardware and software, the LabWindows/CVI environment also has the
following development tools integrated into the system.

Project-Oriented Development System 

LabWindows/CVI is a project-oriented development system designed for easy
integration of multiple source files. Users simply list all of the source
files that make up a particular project in the LabWindows/CVI Project
Window. The Project Window acts as the manager for the application the
user is developing, keeping track of which files must be recompiled and
linked each time the project runs. Using the LabWindows/CVI open system
architecture, users can choose from a variety of source files, object
modules, library files, DLLs, instrument drivers, and user interface
files.

Function Panels 

Each function in the LabWindows/CVI built-in libraries has a corresponding
function panel. A function panel is a graphical representation of a
function and its parameters. Each function parameter is represented by a
corresponding control on its function panel. The user can call up a
function panel and adjust these controls to vary the parameter values.
After entering all parameter values, a user can interactively execute the
function to test its operation. The user can repeat this procedure as many
times as necessary, until appropriate parameter values are found. The user
then automatically pastes the function call, with the parameter values set
on the panel, into the program window where the source code resides.

Function panels are a vital tool in software development for LabWindows/CVI
users. Because each function panel has on-line help describing the
function and all of its parameters, users can quickly learn how to use
LabWindows/CVI functions. Function panels also generate the function calls
for the user, so each function call is syntactically correct as entered
into the source file, saving development and debugging time.

Included within the LabWindows/CVI environment are tools for developing
function panels for user libraries. Users integrating existing C libraries
can create function panels for each of the functions in their external
library. Therefore, users can add the same code-generation and on-line
help features of LabWindows/CVI function panels to their own library of
instrument driver functions.

User Protection 

The LabWindows/CVI development environment has a unique troubleshooting
feature that protects the user from run-time errors or previously
undetectable problems during program execution. In traditional C
programming development environments, many times the developer commits a
programming error that the compiler does not detect. For example, a
violation occurs if a 100-element character array is allocated in the
program, and during program execution more than 100 bytes are written to
the array (the string is overwritten). However, the compiler has no way of
finding this error at compile time. The excess bytes are simply written
into memory, corrupting memory locations past the end of the original
string, possibly allocated for different variables. The corrupted memory
locations may not be a problem at the time; however, it may manifest
itself at a later time during program execution.

Problems like overwriting arrays or indexing past the end of an array,
although easy to solve, are very time-consuming to pinpoint. The
LabWindows/CVI user protection capabilities will not only catch memory
violations like these, but also break from program execution and indicate
exactly which statement in the source code contains the offending
operation. The ability of LabWindows/CVI users to quickly and easily
discover where any run-time memory allocation problems exist can save
hours of debugging effort during the development process. User protection
is unique to LabWindows/CVI; no other C development environment has the
same level of built-in run-time memory checking and protection.

Compiler/Linker/Debugger 

LabWindows/CVI users have the option of compiling their source code with
debug information included, in which case users can step through their
source code while it executes for simplified debugging and
troubleshooting. At any time during program execution, users can insert
breakpoints in their code or track the values of program variables. With
the LabWindows/CVI C integrated compiler, linker, and debugger, users can
quickly create, run, and troubleshoot their applications. LabWindows/CVI
users can also execute their programs at the speed of compiled code, yet
debug their programs as if it were interpreted code.

Open System Architecture

LabWindows/CVI is built upon accepted industry standards for maximum
flexibility in incorporating existing ANSI C tools and libraries. Because
LabWindows/CVI complies with the full ANSI C language specification, users
who have developed applications or libraries that conform to the ANSI C
standard can use their source code within the LabWindows/CVI environment
with few or no changes.

Users with compiled C object modules can incorporate these modules into
LabWindows/CVI as well. LabWindows/CVI for Windows accepts object modules
compiled with the WATCOM C compiler (LabWindows/CVI is a 32-bit system),
and LabWindows/CVI for Sun accepts modules compiled with the Sun
Microsystems ANSI C compiler (acc) or the public domain GNU C compiler
(gcc). LabWindows/CVI for Windows users can call DLLs from the environment
as well. The LabWindows/CVI architecture offers a standard framework from
which users can call DLLs, object modules, libraries, or ANSI C source
code, providing a flexible, open environment for integration.

In addition to loading external object modules or existing C code, the
LabWindows/CVI environment itself is open to a certain level of
customization. Users can add entries to the standard LabWindows/CVI menus
that will execute user-defined C routines automatically. Developers or
integrators of ATE or process control systems can customize the look and
feel of the LabWindows/CVI development environment to seamlessly include
their own set of menu selections and utilities.

Simplified GUI Programming for Windows and Sun 

LabWindows/CVI provides tools for creating and controlling extensive GUIs
for the Windows and Sun platforms. The tools for building and controlling
a user interface with LabWindows/CVI provide a layer above the operating
system for fast and easy creation of windowing applications.
LabWindows/CVI hides the low-level details of the operating system
event-handling schemes.

The User Interface Editor is an interactive drag-and-drop utility for
designing graphic displays. Users can choose from graphs, strip charts,
pushbuttons, radio buttons, meters, knobs, thermometers, scale displays,
and many other controls to define the operator interface. Each of these
control types has a corresponding pop-up dialog box for setting the size,
color, label, fonts, and data type of the control. In addition, the editor
includes standard graphical editing features, such as cut and paste,
control grouping, and alignment and distribution capabilities to organize
controls easily on the user interface.

The user interface library contains the functions for controlling the
displays created in the User Interface Editor. Users can programmatically
modify any of the control attributes defined in the User Interface Editor
through functions in the User Interface Library, so the look and feel of
program displays can change dynamically during program execution. In
addition, the library contains all of the functions for sending data to
and receiving data from the front panel displays. With functions for
trapping and processing events from the user interface, whether they are
mouse clicks or keyboard entries, users can create extensive event-driven
programs for controlling their applications.

Controlling Windows or X Window System-based user interface panels from
LabWindows/CVI is made simple by the User Interface Library.
Traditionally, creating and controlling graphical panels has been very
difficult and time-consuming for Windows and X Window System developers
because it requires advanced programming skills and a working knowledge of
low-level operating system calls. LabWindows/CVI adds a layer on top of
Windows messages, so developers can process user interface events without
dealing with low-level Windows messaging issues.

Although LabWindows/CVI provides a simplified mechanism for GUI
programming, the programming methodology for processing events is both
functional and flexible. Users can program with a single event loop, which
continuously polls for user interface events and then executes a
particular section of code when an event is found. Or, they can use
callback functions associated with particular controls on their user
interface. For example, users can assign a particular function to a
control on the user interface so that every time the control is operated,
the function is called automatically to process the events. Developers can
recognize different types of events within a callback function for a
particular control, such as a left or right mouse button click. Using
callback functions is similar to the mechanism that traditional Windows
programming follows, whereas using event loops is how LabWindows-created
DOS programs are structured. Users can combine both of these GUI
programming methods within a single program in LabWindows/CVI. In either
case, the LabWindows/CVI developer has access to low-level event
information without encountering the issues of the underlying Windows or X
Window low-level windowing system.

Instrument Control with Ready-to-Use Drivers 

Controlling instruments with IEEE 488/488.2, RS-232, or VXIbus interfaces
from LabWindows/CVI is made faster and easier with instrument drivers. An
instrument driver is a high-level set of functions that initializes,
configures, measures, or controls a particular instrument. With an
instrument driver, users no longer have to learn the remote ASCII command
sets or register sets defined for their instrument. The instrument driver
automatically converts the configure or measure function into a lowlevel
command string understood by the instrument, which handles all GPIB,
RS-232, or VXI interface issues to send the command to the instrument.

LabWindows/CVI users have the benefit of using the same instrument drivers
as those currently available in the DOS version of LabWindows. Although
LabWindows/CVI is a new product, over 300 IEEE 488, RS-232, VXI
message-based and VXI register-based instrument drivers will be available
to developers when LabWindows/CVI Version 1.0 is shipped. With instrument
driver development and editing tools available in LabWindows/CVI, users
can build their own drivers or edit the source code of any existing
LabWindows/CVI instrument driver as needed.

Libraries for Programming Instrument Control, Data Acquisition, and Signal
Conditioning Hardware 

LabWindows/CVI has built-in libraries for controlling IEEE 488.2 interface
boards, plug-in DAQ boards, VXIbus embedded or MXI controllers, and RS-232
serial interfaces. These libraries are built upon the same standard
National Instruments NI-488.2, NI-DAQ, and NI-VXI DLLs that developers can
use with any Windows development environment that accepts DLLs.

The Windows version of LabWindows/CVI works with National Instruments
hardware for PC/XT/AT/EISA and PS/2 computers, including interfaces for
GPIB and VXI instrument control, plug-in DAQ boards for real-world signal
acquisition, and SCXI signal conditioning hardware.

National Instruments instrument interface hardware for the SPARCstation
that works with LabWindows/CVI includes an plug-in SBus GPIB interface
board, an external GPIB-to-SCSI interface, a plug-in MXIbus interface for
controlling MXI-equipped VXI and VME systems, and the GPIB-ENET/Sun for
communicating with and controlling IEEE 488 devices from anywhere on an
Ethernet-based TCP/IP network. The company is currently developing SBus
DAQ hardware for the SPARCstation and expects first products to be
available by the end of the year.

See the National Instruments 1994 catalog for more details on PC and
SPARCstation-compatible hardware products.

Built-In Analysis Capabilities Rival Dedicated Packages 

Built-in analysis capabilities are a key link between data acquisition and
presentation tasks in user applications. The benefits of the
LabWindows/CVI Advanced Analysis Library are two fold. Because the
analysis functions are fully integrated into the LabWindows/CVI
environment, just like the IEEE 488.2 or DAQ libraries, the programmer can
maintain the same cohesive development methodology for all acquisition,
analysis, and presentation tasks. Additionally, the Advanced Analysis
Library itself contains functions powerful and flexible enough to rival
dedicated analysis packages. These analysis functions include signal
processing, windowing, filtering, curve fitting, statistics, vector and
matrix algebra, interpolation, and complex array manipulation. Over 200
functions are available for performing complex data analysis tasks within
LabWindows/CVI applications.

As the technology leader in software, National Instruments has gained a
strong reputation in the acquisition arena, with the NI-488.2, NI-DAQ, and
NI-VXI device drivers, as well as the user interface arena through LabVIEW
and LabWindows. However, recent years have seen increased emphasis on the
analysis capabilities of our application software products, culminating in
the development of the Gabor Spectrogram - a new joint time-frequency
analysis algorithm for faster and higher resolution signal analysis. The
analysis functions have also been made more usable for the scientist and
engineer, incorporating measurement-based analysis techniques to maintain
proper units and scaling throughout an application. LabWindows/CVI
represents another framework for bringing these advanced analysis
algorithms and techniques to the end-user.

Cross-Platform Application Development Tool 

Developers using LabWindows/CVI have the ability to create applications
that can run on Microsoft Windows or Sun Solaris. Users can port
applications that were originally developed under DOS to Windows and UNIX
to become multiplatform applications. LabWindows/CVI provides a set of
tools and guidelines for those developers interested in creating
applications to run on several platforms. Using these tools, developers
can ensure that the applications not only function across platforms, but
also maintain their graphical "look and feel" in terms of control styles,
colors, and text fonts used.

Networking/Interprocess Communication 

Using the networking libraries built into the LabWindows/CVI environment,
developers can create applications that access external Windows
applications or computers across a network. Both Windows and Sun users
have access to TCP/IP functions in LabWindows/CVI for networking. In
addition, LabWindows/CVI has built-in DDE capabilities for Windows
interprocess communication.

Migration Path from DOS to Windows/UNIX 

Existing DOS users of LabWindows can port their applications to the
Microsoft Windows or Sun Solaris operating systems with little or no
modifications. Translator utilities in LabWindows/CVI convert DOS user
interface resource files, function panel files, and source files to
formats readable from LabWindows/CVI. Because the National Instruments
IEEE 488.2, VXI, and DAQ libraries in LabWindows for DOS are identical to
the functions available in corresponding Windows DLLs, most of the source
code involving acquisition will remain unchanged under Windows.

Availability and How to Get More Information 

The Windows version of LabWindows/CVI will be available from National
Instruments in November. LabWindows/CVI for Sun will be available from
National Instruments in December. For additional details, see the press
release and other product background information in this press kit.

For more information, please contact National Instruments at 6504 Bridge
Point Parkway, Austin, TX 78730-5039, (512) 794-0100. Call toll free at
(800) 433-3488. Fax: (512) 794-8411.

 ==========================================================
 From the 'New Product Information' Electronic News Service
 ==========================================================
 This information was processed from data provided by the
 above mentioned company. For additional details, contact 
 the company at the address or telephone number indicated.
 ==========================================================
 All submissions for this service should be addressed to:
 BAKER ENTERPRISES,  20 Ferro Dr,  Sewell, NJ 08080  U.S.A.
 Email:  RBakerPC (AOL/Delphi), rbakerpc@aol.com (Internet)
 ==========================================================
