LabVIEW User Manual [628427]

LabVIEWTM
User Manual
LabVIEW User Manual
April 2003 Edition
Part Number 320999E-01

Support
Worldwide Technical Support and Product Information
ni.com
National Instruments Corporate Headquarters
11500 North Mopac Expressway Aust in, Texas 78759-3504 USA Tel: 512 683 0100
Worldwide Offices
Australia 61 2 9672 8846, Austria 43 0 662 45 79 90 0, Belgium 32 0 2 757 00 20, Brazil 55 11 3262 3599,
Canada (Calgary) 403 274 9391, Canada (Montre al) 514 288 5722, Canada (Ottawa) 613 233 5949,
Canada (Québec) 514 694 8521, Cana da (Toronto) 905 785 0085, Canada (Vancouver) 514 685 7530,
China 86 21 6555 7838, Czech Republic 420 2 2423 5774, Denmark 45 45 76 26 00,
Finland 385 0 9 725 725 11, France 33 0 1 48 14 24 24, Germany 49 0 89 741 31 30, Greece 30 2 10 42 96 427,
Hong Kong 2645 3186, India 91 80 51190000, Israel 972 0 3 6393737, Italy 39 02 413091,
Japan 81 3 5472 2970, Korea 82 02 3451 3400, Malaysia 603 9059 6711, Mexico 001 800 010 0793,
Netherlands 31 0 348 433 466, New Zeala nd 64 09 914 0488, Norway 47 0 32 27 73 00,
Poland 48 0 22 3390 150, Portugal 351 210 311 210, Russia 7 095 238 7139, Singapore 65 6 226 5886,
Slovenia 386 3 425 4200, South Africa 27 0 11 805 8197, Spain 34 91 640 0085, Sweden 46 0 8 587 895 00,
Switzerland 41 56 200 51 51, Taiwan 886 2 2528 7227, United Kingdom 44 0 1635 523545
For further support information, refer to the Technical Support and Pr ofessional Services appendix. To comment
on the documentation, send email to [anonimizat] .
© 1992–2003 National Instruments Cor poration. All ri ghts reserved.

Important Information
Warranty
The media on which you receive National In struments software are warranted not to fail to execute programming instructions, due to defects
in materials and workmanship, for a period of 90 days from date of shipment, as eviden ced by receipts or other documentation. N ational
Instruments will, at its option, repair or replace software medi a that do not execute programmin g instructions if National Inst ruments receives
notice of such defects during the warranty period. National Inst ruments does not warrant that the operation of the software sha ll be
uninterrupted or error free.
A Return Material Authorization (RMA) number must be obtained fro m the factory and clearly marked on the outside of the package before
any equipment will be accepted for warranty wo rk. National Instruments wi ll pay the shipping costs of returning to the owner pa rts which are
covered by warranty.
National Instruments believes that the info rmation in this document is accurate. The document has b een carefully reviewed for te chnical
accuracy. In the event that technical or typ ographical errors exist, Nati onal Instruments reserves the right to make changes to subsequent
editions of this document without prior notice to holders of this edition. The reader should consult National Instruments if er rors are suspected.
In no event shall National Instruments be liable for any damages arising out of or related to this document or the information c ontained in it.
EXCEPT AS SPECIFIED HEREIN , NATIONAL INSTRUMENTS MAKES NO WARRANTIES , EXPRESS OR IMPLIED , AND SPECIFICALLY DISCLAIMS ANY WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE . CUSTOMER ’S RIGHT TO RECOVER DAMAGES CAUSED BY FAULT OR NEGLIGENCE ON THE PART OF
NATIONAL INSTRUMENTS SHALL BE LIMITED TO THE AMOUNT THERETOFORE PAID BY THE CUSTOMER . NATIONAL INSTRUMENTS WILL NOT BE LIABLE FOR
DAMAGES RESULTING FROM LOSS OF DATA , PROFITS , USE OF PRODUCTS , OR INCIDENTAL OR CONSEQUENTIAL DAMAGES , EVEN IF ADVISED OF THE POSSIBILITY
THEREOF . This limitation of the liability of National Instruments will apply regardless of the form of action, whether in contract or tort, including
negligence. Any action against National Instruments must be brought within one year af ter the cause of action accrues. National Instruments
shall not be liable for any delay in perform ance due to causes beyond its reasonable control. The warranty provided herein does not cover
damages, defects, malfunctions, or servi ce failures caused by owner’s failure to follo w the National Instruments installation, operation, or
maintenance instructions; owner’s modification of the product; ow ner’s abuse, misuse, or negligent acts; and power failure or s urges, fire,
flood, accident, actions of third parties, or other events outside reasonable control.
Copyright
Under the copyright laws, this publication may not be reproduced or transmitted in any form, el ectronic or mechanical, includin g photocopying,
recording, storing in an information retrie val system, or translating, in whole or in part, without the prior written consent of National
Instruments Corporation.
Trademarks
CVI™, DAQPad™, DataSocket™, DIAdem™, IMAQ™, IVI™, LabVIEW™, Measurement Studio™, National Instruments™, NI™, ni.com™,
NI-DAQ™, NI Developer Zone™, NI-IMAQ™, NI-VISA™, NI-VXI™, and SCXI™ are trademarks of Nation al Instruments Corporation.
Product and company names mentioned herein are tradem arks or trade names of their respective companies.
Patents
For patents covering National Instruments pr oducts, refer to the appropriate location: Help»Patents in your software, the patents.txt file
on your CD, or ni.com/patents .
WARNING REGARDING USE OF NA TIONAL INSTRUMENTS PRODUCTS
(1) NATIONAL INSTRUMENTS PRODUCTS ARE NOT DESIGNED WITH COMPONENTS AND TESTING FOR A LEVEL OF
RELIABILITY SUITABLE FOR USE IN OR IN CONNECTION WITH SURGICAL IMPLANTS OR AS CRITICAL COMPONENTS IN ANY LIFE SUPPORT SYSTEMS WHOSE FAILURE TO PERFORM CAN REASONABLY BE EXPECTED TO CAUSE SIGNIFICANT
INJURY TO A HUMAN.
(2) IN ANY APPLICATION, INCLUDING THE ABOVE, RELIABIL ITY OF OPERATION OF THE SOFTWARE PRODUCTS CAN BE
IMPAIRED BY ADVERSE FACTORS, INCLUDING BUT NOT LIMITED TO FLUCTUATIONS IN ELECTRICAL POWER SUPPLY, COMPUTER HARDWARE MALFUNCTIONS, CO MPUTER OPERATING SYSTEM SOFTWARE FITNESS, FITNESS OF COMPILERS
AND DEVELOPMENT SOFTWARE USED TO DEVELOP AN APPLICATION, INSTALLATION ERRORS, SOFTWARE AND
HARDWARE COMPATIBILITY PROBLEMS, MALFUNCTIONS OR FA ILURES OF ELECTRONIC MONITORING OR CONTROL
DEVICES, TRANSIENT FAILURES OF E LECTRONIC SYSTEMS (HARDWARE AND/OR SO FTWARE), UNANTICIPATED USES OR
MISUSES, OR ERRORS ON THE PART OF THE USER OR APPL ICATIONS DESIGNER (ADVERSE FACTORS SUCH AS THESE ARE
HEREAFTER COLLECTIVELY TERMED “SYSTEM FAILURES”). ANY APPLICATION WHERE A SYSTEM FAILURE WOULD CREATE A RISK OF HARM TO PROPERTY OR PERSONS (INCLUDING THE RISK OF BODILY INJURY AND DEATH) SHOULD
NOT BE RELIANT SOLELY UPON ONE FORM OF ELECTRONIC SYSTEM DUE TO THE RISK OF SYSTEM FAILURE. TO AVOID
DAMAGE, INJURY, OR DEATH, THE USER OR APPLICATION DESIGNER MUST TAKE REASONABLY PRUDENT STEPS TO
PROTECT AGAINST SYSTEM FAILURES, INCLUDING BUT NO T LIMITED TO BACK-UP OR SHUT DOWN MECHANISMS.
BECAUSE EACH END-USER SYSTEM IS CUSTOMIZED AND DIFFERS FROM NATIONAL INSTRUMENTS' TESTING
PLATFORMS AND BECAUSE A USER OR APPLICATION DESIGNER MAY USE NATIONAL INSTRUMENTS PRODUCTS IN COMBINATION WITH OTHER PRODUCTS IN A MANNER NOT EVALUATED OR CONTEMPLATED BY NATIONAL
INSTRUMENTS, THE USER OR APPLICATION DESIGNER IS ULTIMATELY RESPONSIBLE FOR VERIFYING AND VALIDATING
THE SUITABILITY OF NATIONAL INSTRUMENTS PRODUCTS WHENEVER NATIONAL INSTRUMENTS PRODUCTS ARE INCORPORATED IN A SYSTEM OR APPLICATION, INCLUDING, WITHOUT LIMITATION, THE APPROPRIATE DESIGN,
PROCESS AND SAFETY LEVEL OF SUCH SYSTEM OR APPLICATION.

© National Instruments Corporation v LabVIEW User ManualContents
About This Manual
Organization of This Manual……………………………………………………………………………..xxi
Conventions …………………………………………………………………………………………………….x xii
PART I
LabVIEW Concepts
Chapter 1
Introduction to LabVIEW
LabVIEW Documentation Resources ………………………………………………………………….1-1
LabVIEW Template VIs, Example VIs, and Tools ……………………………………………….1-4
LabVIEW Template VIs……………………………………………………………………….1-4LabVIEW Example VIs ……………………………………………………………………….1-4LabVIEW Tools ………………………………………………………………………………….1-4
Chapter 2
Introduction to Virtual Instruments
Front Panel…………………………………………………………………………………………………….. .2-1
Block Diagram…………………………………………………………………………………………………2-2
Terminals……………………………………………………………………………………………2-3Nodes…………………………………………………………………………………………………2-4Wires………………………………………………………………………………………………….2-4Structures……………………………………………………………………………………………2-4
Icon and Connector Pane …………………………………………………………………………………..2-4
Using and Customizing VIs and SubVIs ……………………………………………………………..2-5
Chapter 3
LabVIEW Environment
Controls Palette………………………………………………………………………………………………..3 -1
Functions Palette………………………………………………………………………………………………3- 1
Navigating the Controls and Functions Palettes .. ………………………………………………….3-2
Tools Palette …………………………………………………………………………………………………… 3-3
Menus and the Toolbar ……………………………………………………………………………………..3-3
Menus ………………………………………………………………………………………………..3-3
Shortcut Menus ………………………………………………………………………3-4
Shortcut Menus in Run Mode………………………………………3-4

Contents
LabVIEW User Manual vi ni.comToolbar ……………………………………………………………………………………………… 3-4
Context Help Window……………………………………………………………………………………… 3-4Customizing Your Work Environment …………. …………………………………………………… 3-5
Customizing the Controls and Functions Palettes……………………………………. 3-6
Adding VIs and Controls to the User and Instrument Drivers
Subpalettes…………………………………………………………………………. 3-6
Creating and Editing Custom Palette View……………………………….. 3-6
How LabVIEW Stores Views …………………………………….. 3-7
Building ActiveX Subpalettes …………………………………………………. 3-7Representing Toolsets and Modules in the Palettes ……………………. 3-8
Setting Work Environment Op tions………………………………………………………. 3-8
How LabVIEW Stores Options ……………………………………………….. 3-8
Windows………………………………………………………………….. 3-8Mac OS……………………………………………………………………. 3-8UNIX………………………………………………………………………. 3-9
Chapter 4
Building the Front Panel
Configuring Front Panel Objects……………………………………………………………………….. 4-1
Showing and Hiding Optional Elements………………………………………………… 4-2Changing Controls to Indicators and Indi cators to Controls……………………… 4-2
Replacing Front Panel Objects……………………………………………………………… 4-2
Configuring the Front Panel ……………………………………………………………………………… 4-3
Setting Keyboard Shortcuts for Controls ….. …………………………………………… 4-3
Controlling Button Behavior with Ke y Navigation…………………….. 4-4
Setting the Tabbing Order of Front Panel Objects ……………………… 4-4
Coloring Objects ………………………………………………………………………………… 4-5Using Imported Graphics …………………………………………………………………….. 4-5Aligning and Distributing Objects ………………………………………………………… 4-6Grouping and Locking Objects … ………….. ………….. ……….. ………… ……….. …… 4-6
Resizing Objects ………………………………………………………………………………… 4-6Scaling Front Panel Objects…………………………………………………………………. 4-7Adding Space to the Front Panel without Resizing the Window ………….. …… 4-9
Front Panel Controls and Indicators……………… …………………………………………………… 4-9
3D and Classic Controls and Indicators…. ……………………………………………… 4-9
Slides, Knobs, Dials, Digital Displays, and Time Stamps………………………… 4-10
Slide Controls and Indicators ……….. ………………………………………… 4-10
Rotary Controls and Indicators……… ………………………………………… 4-10
Digital Controls and Indicators………………………………………………… 4-11
Numeric Formatting ………………………………………………….. 4-11
Time Stamp Control and Indicator ….. ………………………………………. 4-11
Color Boxes ………………………………………………………………………….. 4-11Color Ramps …………………………………………………………………………. 4-12

Contents
© National Instruments Corporation vii LabVIEW User ManualGraphs and Charts ……………………………………………………………………………….4-12
Buttons, Switches, and Lights ……………………………………………………………….4-12Text Entry Boxes, Labels, and Path Displays ………………………………………….4-13
String Controls and Indicators ………………………………………………….4-13Combo Box Controls ………………………………………………………………4-13Path Controls and Indicators…………………………………………………….4-14
Invalid Paths ……………………………………………………………..4-14Empty Paths………………………………………………………………4-14
Array and Cluster Controls and Indicators………………………………………………4-14Listboxes, Tree Controls, and Tables……………………………………………………..4-15
Listboxes ……………………………………………………………………………….4-15Tree Controls………………………………………………………………………….4-15Tables ……………………………………………………………………………………4-16
Ring and Enumerated Type Controls and Indicators ………………………………..4-16
Ring Controls …………………………………………………………………………4-17Enumerated Type Controls ………………………………………………………4-17
Advanced Enumerated Type Controls and Indicators……..4-18
Container Controls……………………………………………………………………………….4-18
Tab Controls…………………………………………………………………………..4-18Subpanel Controls…………………………………………………………………..4-19
I/O Name Controls and Indicators…………… …………………………………………….4-20
Waveform Control ………………………………………………………………….4-21Digital Waveform Control ……………………………………………………….4-21Digital Data Control………………………………………………………………..4-21
Converting Data to Digital Data …………………………………..4-22
Acquiring a Digital Subset ………………………………………….4-23Appending Digital Samples and Signals ……………………….4-24Compressing Digital Data …………………………………………..4-24Searching for a Pattern ……………………………………………….4-24
References to Objects or Applications ….. ……………………………………………….4-25
Dialog Controls and Indicators……………….. …………………………………………….4-25
Labeling ……………………………………………………………………………………………………….. ..4-26
Captions……………………………………………………………………………………………..4-27
Text Characteristics ………………………………………………………………………………………….4-27Designing User Interfaces …………. …………… ………….. ………….. ……….. ……….. ………… ….4-28
Using Front Panel Controls and Indicators ……………………………………………..4-29Designing Dialog Boxes……………………………………………………………………….4-29Selecting the Screen Size………………………………………………………………………4-30

Contents
LabVIEW User Manual viii ni.comChapter 5
Building the Block Diagram
Relationship between Front Panel Objects an d Block Diagram Terminals ……………… 5-1
Block Diagram Objects ……………………………………………………………………………………. 5-1
Block Diagram Terminals……………………………………………………………………. 5-1
Control and Indicator Data Types ……………………………………………. 5-2Constants ……………………………………………………………………………… 5-5
Universal Constants…………………………………………………… 5-5User-Defined Constants …………………………………………….. 5-5
Block Diagram Nodes…………………………………………………………………………. 5-6
Functions Overview…………………………………………………………………………………………. 5-7
Numeric Functions……………………………………………………………………………… 5-7Boolean Functions………………………………………………………………………………. 5-7String Functions …………………………………………………………………………………. 5-8Array Functions………………………………………………………………………………….. 5-8Cluster Functions ……………………………………………………………………………….. 5-8Comparison Functions ………………………………………………………………………… 5-9Time and Dialog Functions… ……………………………………………………………….. 5-9
File I/O Functions ………………………………………………………………………………. 5-9Waveform Functions…………………………………………………………………………… 5-9Application Control Functions……………………………………………………………… 5-10Advanced Functions……………………………………………………………………………. 5-10Adding Terminals to Functions…………………………………………………………….. 5-10
Using Wires to Link Block Diagram Objects…. …………………………………………………… 5-11
Automatically Wiring Object s ……………………………………………………………… 5-12
Manually Wiring Objects…………………………………………………………………….. 5-13Routing Wires ……………………………………………………………………………………. 5-14Selecting Wires ………………………………………………………………………………….. 5-14Correcting Broken Wires …………………………………………………………………….. 5-14Coercion Dots ……………………………………………………………………………………. 5-15
Polymorphic VIs and Functions ………………………………………………………………………… 5-16
Polymorphic VIs ………………………………………………………………………………… 5-16
Building Polymorphic VIs……………. ………………………………………… 5-17
Polymorphic Functions ……………………………………………………………………….. 5-19
Express VIs…………………………………………………………………………………………………….. 5-19
Creating Express VIs as SubVIs …………………………………………………………… 5-19Dynamic Data Type ……………………………………………………………………………. 5-20
Converting from Dynamic Data ……… ………………………………………. 5-21
Converting to Dynamic Data…………………………………………………… 5-22
Handling Variant Data……………………………………………………………………………………… 5-22Numeric Units and Strict Type Checking ……… …………………………………………………… 5-23
Units and Strict Type Checking ……………………………………………………………. 5-23

Contents
© National Instruments Corpor ation ix LabVIEW User ManualBlock Diagram Data Flow …………………………………………………………………………………5-25
Data Dependency and Artificial Data De pendency…………………………………..5-26
Missing Data Dependencies……………………………………………………..5-27
Data Flow and Managing Memory………….. …………………………………………….5-27
Designing the Block Diagram…………………………………………………………………………….5-28
Chapter 6
Running and Debugging VIs
Running VIs…………………………………………………………………………………………………….6 -1
Configuring How a VI Runs………………………………………………………………….6-2
Correcting Broken VIs………………………………………………………………………………………6-2
Finding Causes for Broken VIs ……………………………………………………………..6-2Common Causes of Broken VI s…………………………………………………………….6-3
Debugging Techniques ……………………………………………………………………………………..6-3
Execution Highlighting ………………………………………………………………………..6-5Single-Stepping …………………………………………………………………………………..6-5Probe Tool ………………………………………………………………………………………….6-6
Types of Probes………………………………………………………………………6-6
Generic……………………………………………………………………..6-6Using Indicators to View Data …………………………………….6-7Supplied ………….. ………….. …………… ………….. ………….. …….6-7
Custom……………………………………………………………………..6-7
Breakpoints…………………………………………………………………………………………6-8Suspending Execution ………………………………………………………………………….6-9
Determining the Current Instance of a SubVI …………………………….6-9
Commenting Out Sections of Block Diagra ms ………………………………………..6-9
Disabling Debugging Tools ………. …………… ………….. ………….. ……….. ……….. ………… ….6-10
Undefined or Unexpected Data…………………………………………………………………………..6-10
Default Data in Loops ………………………………………………………………………….6-11
For Loops ………………………………………………………………………………6-11
Default Data in Arrays………………………………………………………………………….6-11Preventing Undefined Data …………………………………………………………………..6-11
Error Checking and Error Handling………………… ………………………………………………….6-12
Checking for Errors ……………………………………………………………………………..6-12Error Handling…………………………………………………………………………………….6-13
Error Clusters …………………………………………………………………………6-13Using While Loops for Error Handling ……………………………………..6-14
Using Case Structures for Error Handling ………………………………….6-14

Contents
LabVIEW User Manual x ni.comChapter 7
Creating VIs and SubVIs
Planning and Designing Your Project ………………………………………………………………… 7-1
Designing Projects with Multiple Develope rs ………………………………………… 7-2
VI Templates ………………………………………………………………………………………………….. 7- 2
Creating VI Templates ………………………………………………………………………… 7-3Other Document Types ……………………………………………………………………….. 7-3
Using Built-In VIs and Functions………………………………………………………………………. 7-3
Building Instrument Control and Data Acquisition VIs and Functions………. 7-3Building VIs That Access Ot her VIs …………………………………………………….. 7-4
Building VIs That Communicate with Other Appli cations ………………………. 7-4
SubVIs …………………………………………………………………………………………………………. .. 7-4
Watching for Common Operations ……………………………………………………….. 7-5Setting up the Connector Pane ……………………………………………………………… 7-6
Setting Required, Recommended, and Optional Inputs
and Outputs………………………………………………………………………… 7-8
Creating an Icon …………………………………………………………………………………. 7-8Displaying SubVIs and Express VIs as Icons or Expandable Nodes …………. 7-9
Creating SubVIs from Sections of a VI …………………………………………………. 7-10Designing SubVIs ………………………………………………………………………………. 7-10Viewing the Hierarchy of VIs………………………………………………………………. 7-11
Saving VIs ……………………………………………………………………………………………………… 7-12
Advantages of Saving VIs as Individual Files ………………………………………… 7-12
Advantages of Saving VIs as Libraries.. ………………………………………………… 7-12
Managing VIs in Libraries …………………………………………………………………… 7-13Naming VIs ……………………………………………………………………………………….. 7-13Saving for a Previous Version ……………………………………………………………… 7-14
Distributing VIs………………………………………………………………………………………………. 7- 14
Building Stand-Alone Applications and Shared Libraries …………………………………….. 7-15
PART II
Building and Editing VIs
Chapter 8
Loops and Structures
For Loop and While Loop Structur es………….. ………….. ………….. ………….. ………….. …… 8-2
For Loops ………………………………………………………………………………………….. 8-2While Loops………………………………………………………………………………………. 8-2
Avoiding Infinite While Loops………………………………………………… 8-3

Contents
© National Instruments Corpor ation xi LabVIEW User ManualAuto-Indexing Loops……………………………………………………………………………8-4
Auto-Indexing to Set the For Loop C ount ………………………………….8-4
Auto-Indexing with While Loops ……………………………………………..8-5
Using Loops to Build Arrays…………………………………………………………………8-5Shift Registers and the Feedback Node in Loops……………………………………..8-6
Shift Registers………………………………………………………………………..8-6Stacked Shift Registers ……………………………………………………………8-7Replacing Shift Registers with Tunnel s……………………………………..8-7
Replacing Tunnels with Shift Register s……………………………………..8-8
Feedback Node ……………………………………………………………………………………8-8
Initializing Feedback Nodes……………………………………………………..8-10Replacing Shift Registers with a Feed back Node………………………..8-10
Controlling Timing………………………………………………………………………………8-10
Case and Sequence Structures ……………………………………………………………………………8-11
Case Structures ……………………………………………………………………………………8-11
Case Selector Values and Data Types………………………………………..8-11Input and Output Tunnels . ………….. …………… ………….. ………….. …….8-12
Using Case Structures for Error Handling ………………………………….8-13
Sequence Structures……………………………………………………………………………..8-13
Flat Sequence Structure …………………………………………………………..8-13Stacked Sequence Structure ……………………………………………………..8-13Using Sequence Structures……………………………………………………….8-14Avoiding Overusing Sequence Structures ………………………………….8-15
Replacing Sequence Structures…………………………………………………8-16
Chapter 9
Event-Driven Programming
What Are Events? …………………………………………………………………………………………….9-1
Why Use Events? ………………………………………………………………………………..9-2Event Structure Components………………….. …………………………………………….9-2
Notify and Filter Events…………………………………………………………..9-4
Using Events in LabVIEW……………………………………………………………………9-5
Static Event Registration………………………………………………………….9-7Dynamic Event Registration …………………………………………………….9-8
Dynamic Event Example …………………………………………….9-10
Modifying Registration Dynamically … ……………………………………..9-11
User Events…………………………………………………………………………………………9-12
Creating and Registering User Events .. ……………………………………..9-12
Generating User Events …………………………………………………………..9-13Unregistering User Events ……………………………………………………….9-13User Event Example………………………………………………………………..9-14

Contents
LabVIEW User Manual xii ni.comChapter 10
Grouping Data Using Stri ngs, Arrays, and Clusters
Strings………………………………………………………………………………………………………… …. 10-1
Strings on the Front Panel……………………………………………………………………. 10-2
String Display Types ……………………………………………………………… 10-2
Tables ……………………………………………………………………………………………….. 10-2Programmatically Editing Strings…………. ……………………………………………… 10-3
Formatting Strings………………………………………………………………………………. 10-4
Format Specifiers…………………………………………………………………… 10-4
Numerics and Strings ………………………………………………………………………….. 10-5Converting Data to and from XML……………………………………………………….. 10-5
Using XML-Based Data Types ……………………………………………….. 10-7LabVIEW XML Schema ………………………………………………………… 10-8
Grouping Data with Arrays and Clusters ………. ………….. …………… ………….. …………….. 10-8
Arrays……………………………………………………………………………………………….. 10-8
Indexes…………………………………………………………………………………. 10-8Examples of Arrays ……………………………………………………………….. 10-9Restrictions for Arrays……………………………………………………………. 10-11Creating Array Controls, In dicators, and Constants……………………. 10-11
Array Index Display ………………………………………………………………. 10-12Array Functions …………………………………………………………………….. 10-13
Automatically Resizing Array Fu nctions……………………… 10-13
Clusters……………………………………………………………………………………………… 10-14
Chapter 11
Local and Global Variables
Local Variables……………………………………………………………………………………………….. 11 -1
Creating Local Variables …………………….. ……………………………………………… 11-2
Global Variables……………………………………………………………………………………………… 11- 2
Creating Global Variables……………………………………………………………………. 11-2
Read and Write Variables…………………………………………………………………………………. 11-3Using Local and Global Variables Carefully ………………………………………………………. 11-4
Initializing Local and Global Variables …………………………………………………. 11-4Race Conditions ………… ………….. ………….. ………….. ……….. ………… …………….. 11-4
Memory Considerations when Using Local Variables …………………………….. 11-5
Memory Considerations when Using Global Variables …………………………… 11-5

Contents
© National Instruments Corpor ation xiii LabVIEW User ManualChapter 12
Graphs and Charts
Types of Graphs and Charts……………………………………………………………………………….12-1
Graph and Chart Options …………………………………………………………………………………..12-2
Multiple X- and Y-Scales on Graphs and Charts ……………………………………..12-2
Anti-Aliased Line Plots for Graphs and Ch arts………………………………………..12-2
Customizing Graph and Chart Appearance… …………………………………………..12-3
Customizing Graphs …………………………………………………………………………….12-3
Graph Cursors ………………………………………………………………………..12-4Autoscaling ……………………………………………………………………………12-5
Waveform Graph Scale Legend …………………………………..12-5
Axis Formatting ……………………………………………………………………..12-5Dynamically Formatting Graphs……………………………………………….12-6Using Smooth Updates…………………………………………………………….12-6
Customizing Charts ……………………………………………………………………………..12-6
Chart History Length ………………………………………………………………12-7Chart Update Modes ……………………………………………………………….12-7Overlaid versus Stacked Plots…………………………………………………..12-7
Waveform and XY Graphs ………………………………………………………………………………..12-8
Single-Plot Waveform Graph Data Types… …………………………………………….12-9
Multiplot Waveform Graph…………………………………………………………………..12-9Single-Plot XY Graph Data Types………….. …………………………………………….12-10
Multiplot XY Graph Data Types……………………………………………………………12-11
Waveform Charts……………………………………………………………………………………………..12-11Intensity Graphs and Charts………………………… …………………………………………………….12-12
Color Mapping…………………………………………………………………………………….12-13Intensity Chart Options…………………………………………………………………………12-14Intensity Graph Options ……………………………………………………………………….12-14
Digital Waveform Graphs………………………………………………………………………………….12-14
Masking Data………………………………………………………………………………………12-17
3D Graphs ………………………………………………………………………………………………………. 12-17
Waveform Data Type………………………………………………………………………………………..12-18Digital Waveform Data Type …………………………………………………………………………….12-18
Chapter 13
Graphics and Sound VIs
Using the Picture Indicator ………………………………………………………………………………..13-1
Picture Plots VIs ………………………………………………………………………………………………13 -2
Using the Polar Plot VI as a SubVI………………………………………………………..13-2Using the Plot Waveform and Plot XY VIs as SubVIs……………………………..13-3
Using the Smith Plot VIs as SubVIs……………………………………………………….13-3

Contents
LabVIEW User Manual xiv ni.comPicture Functions VIs ………………………………………………………………………………………. 13-4
Creating and Modifying Colors with the Picture Functions VIs ……………….. 13-6
Graphics Formats VIs………………………………………………………………………………………. 13-6Sound VIs ………………………………………………………………………………………………………. 13-7
Chapter 14
File I/O
Basics of File I/O…………………………………………………………………………………………….. 14 -1
Choosing a File I/O Format………………………………………………………………………………. 14-2
When to Use Text Files……………………………………………………………………….. 14-2When to Use Binary Files ……………………………………………………………………. 14-3When to Use Datalog Files ………………………………………………………………….. 14-4
Using High-Level File I/O VIs………………………………………………………………………….. 14-5Using Low-Level and Advanced File I/O VIs and Functions………………………………… 14-6
Disk Streaming…………………………………………………………………………………… 14-7
Creating Text and Spreadsheet F iles ………………………………………………………………….. 14-8
Formatting and Writing Data to Files ………. …………………………………………… 14-8
Scanning Data from Files…………………………………………………………………….. 14-8
Creating Binary Files……………………………………………………………………………………….. 14-9Creating Datalog Files……………………………………………………………………………………… 14-9Writing Waveforms to Files …….. ………….. ………….. ………….. ………….. ………… ………….. 14-10
Reading Waveforms from Files……………………. …………………………………………………… 14-10
Flow-Through Parameters………….. ………….. ………….. ………….. ……….. ………… ………….. 14-11
Creating Configuration Files …………………………………………………………………………….. 14-12
Using Configuration Settings Files……….. ……………………………………………… 14-12
Windows Configuration Settings File Form at ………………………………………… 14-13
Logging Front Panel Data ………….. ………….. ………….. ………….. ……….. ………… ………….. 14-14
Automatic and Interactive Front Panel Data logging………………………………… 14-15
Viewing the Logged Front Panel Data Inte ractively ……………………………….. 14-15
Deleting a Record ………………………………………………………………….. 14-16Clearing the Log-File Binding………… ………………………………………. 14-16
Changing the Log-File Binding……………………………………………….. 14-16
Retrieving Front Panel Data Programmatical ly ………………………………………. 14-17
Retrieving Front Panel Data Using a SubVI ……………………………… 14-17
Specifying Records …………………………………………………… 14-18
Retrieving Front Panel Data Using F ile I/O Functions ……………….. 14-18
LabVIEW Data Directory……………………………………………………….. 14-19LabVIEW Measurement Data File …………………………………………… 14-20

Contents
© National Instruments Corpor ation xv LabVIEW User ManualChapter 15
Documenting and Printing VIs
Documenting VIs……………………………………………………………………………………………..15-1
Setting up the VI Revision History ………………………………………………………..15-1
Revision Numbers…………………………………………………………………..15-2
Creating VI and Object Descriptions ……………………………………………………..15-2Printing Documentation………………………………………………………………………..15-3
Saving Documentation to HTML, RTF, or Text Files………………….15-3
Selecting Graphic Formats for HT ML Files…………………..15-4
Naming Conventions for Graphic Files…………………………15-4
Creating Your Own Help Files ………. ………………………………………..15-4
Printing VIs……………………………………………………………………………………………………. .15-5
Printing the Active Window………………………………………………………………….15-5Printing VIs Programmatically………………………………………………………………15-6
Printing the Front Panel of a VI afte r the VI Runs ………………………15-6
Using a SubVI to Print Data from a Higher Level VI ………………….15-6
Generating and Printing Reports……………………………………………….15-7
Additional Printing Techniques……………………………………………………………..15-7
Chapter 16
Customizing VIs
Configuring the Appearance and Be havior of VIs ………………………………………………..16-1
Customizing Menus ………………………………………………………………………………………….16-2
Creating Menus …………………………………………………………………………………..16-2Menu Selection Handling……………………………………………………………………..16-3
Chapter 17
Programmatically Controlling VIs
Capabilities of the VI Server ……………………………………………………………………………..17-1
Building VI Server Applications …………………. …………………………………………………….17-2
Application and VI References ………………. …………………………………………….17-3
Manipulating Application and VI Settings ………. ………………………………………………….17-3
Property Nodes ……………………………………………………………………………………17-4
Implicitly Linked Property Nodes……………………………………………..17-4
Invoke Nodes…………. ………….. ………….. ………….. ………….. ………….. …………….17-4
Manipulating Application Class Properties and Methods………………………….17-5
Manipulating VI Class Properties and Met hods……………………………………….17-6
Manipulating Application and VI Class Properties and Methods……………….17-6

Contents
LabVIEW User Manual xvi ni.comDynamically Loading and Calling VIs……………………………………………………………….. 17-7
Call By Reference Nodes and Strictly Ty ped VI Refnums ………………………. 17-7
Editing and Running VIs on Remote Computers…. ……………………………………………… 17-8
Controlling Front Panel Objects.. ………….. ………….. ………….. ……….. ………… …………….. 17-8
Strictly Typed and Weakly Typed Control Refnums……… ………… ……….. …… 17-9
Chapter 18
Networking in LabVIEW
Choosing among File I/O, VI Server, Active X, and Networking …………………………… 18-1
LabVIEW as a Network Client and Server …………………………………………………………. 18-2Using DataSocket Technology………………………………………………………………………….. 18-2
Specifying a URL……………………………………………………………………………….. 18-3Data Formats Supported by DataSocket …… ………….. ………….. ………….. ……… 18-4
Using DataSocket on the Front Panel ……………………………………………………. 18-5Reading and Writing Live Data through th e Block Diagram ……………………. 18-6
Programmatically Opening and Closing DataSocket
Connections ……………………………………………………………………….. 18-7
Buffering DataSocket Data……………………………………………………… 18-7
Reporting Diagnostics……………………………………………….. 18-8
DataSocket and Variant Data…………………………………………………… 18-9
Publishing VIs on the Web………………………….. …………………………………………………… 18-10
Web Server Options ……………………………………………………………………………. 18-10Creating HTML Documents ………………………………………………………………… 18-11Publishing Front Panel Images …………………………………………………………….. 18-11
Front Panel Image Formats……………………………………………………… 18-11
Viewing and Controlling Front Panels Remotely ………………………………………………… 18-12
Configuring the Server for Clients………… ……………………………………………… 18-12
Remote Panel License ……………………………………………………………. 18-12
Viewing and Controlling Front Panels in LabVIEW or from
a Web Browser………………………………………………………………………………… 18-13
Viewing and Controlling Front Panels in LabVIEW ………………….. 18-13
Viewing and Controlling Front Panels from a Web Browser ………. 18-14
Functionality Not Supported in Viewing and Controlling Remote
Front Panels…………………………………………………………………………………….. 18-15
Emailing Data from VIs ……….. …………………………………………………………………………. 18-16
Selecting a Character Set …………………………………………………………………….. 18-16
US-ASCII Character Set………………… ………………………………………. 18-17
ISO Latin-1 Character Set ………………………………………………………. 18-17Mac OS Character Set ……………………………………………………………. 18-17Transliteration……………………………………………………………………….. 18-18

Contents
© National Instruments Corpor ation xvii LabVIEW User ManualLow-Level Communications Applications…………. ……………………………………………….18-19
TCP and UDP……………………………………………………………………………………..18-19Apple Events and PPC Toolbox (Mac OS) …… ………….. …………… ………….. ….18-20
Pipe VIs (UNIX)………………………………………………………………………………….18-20Executing System-Level Commands (Windows and UNIX)………. …………….18-20
Chapter 19
Windows Connectivity
.NET Environment……………………………………………………………………………………………19-2
.NET Functions and Nodes………………………………………………………………………………..19-3LabVIEW as a .NET Client ……………………………………………………………………………….19-4Data Type Mapping ………………………………………………………………………………………….19-5Deploying .NET Applications ……………………………………………………………………………19-5
Deploying an Executable………………………………………………………………………19-5Deploying VIs …………………………………………………………………………………….19-6Deploying DLLs………………………………………………………………………………….19-6
Configuring a .NET Client Application (Advanced )……………………………………………..19-6
ActiveX Objects, Properties, Me thods, and Events……………………………………………….19-6
ActiveX VIs, Functions, Controls, and Indi cators ……………………………………19-7
LabVIEW as an ActiveX Client …………………………………………………………………………19-7
Accessing an ActiveX-Enabled Application. …………………………………………..19-8
Inserting an ActiveX Object on the Front Panel ………………………………………19-8
Design Mode for ActiveX Objects…………………………………………….19-9
Setting ActiveX Properties……………………………………………………………………19-9
ActiveX Property Browser……………………………………………………….19-9ActiveX Property Pages …………………………………………………………..19-9Property Nodes……………………………………………………………………….19-10
LabVIEW as an ActiveX Server…………………………………………………………………………19-11
Support for Custom ActiveX Automation Inte rfaces………………………………..19-11
Using Constants to Set Parameters in ActiveX VIs……………………………………………….19-11ActiveX Events ………………………………………………………………………………………………..19- 12
Handling ActiveX Events……………………………………………………………………..19-13
Chapter 20
Calling Code from Text-Bas ed Programming Languages
Call Library Function Node………………………… …………………………………………………….20-1
Code Interface Node ……. ………….. …………… ………….. ………….. ……….. ……….. …………….20-1

Contents
LabVIEW User Manual xviii ni.comChapter 21
Formulas and Equations
Methods for Using Equations in LabVIEW ………………………………………………………… 21-1
Formula Nodes ……………………………………………………………………………………………….. 21-1
Using the Formula Node ……………………………………………………………………… 21-2Variables in the Formula Node …………………………………………………………….. 21-3
Expression Nodes ……………………………………………………………………………………………. 21-3
Polymorphism in Expression Nodes ……………………………………………………… 21-4
MATLAB Script Nodes …………………………………………………………………………………… 21-4
Programming Suggestions for MATLAB Scri pts……………………………………. 21-5
Appendix A
Organization of LabVIEW
Organization of the LabVIEW Directory Structur e ……………………………………………… A-1
Libraries ……………………………………………………………………………………………. A-1Structure and Support………………………………………………………………………….. A-2Learning and Instruction ……………………………………………………………………… A-2Documentation…………………………………………………………………………………… A-2Mac OS …………………………………………………………………………………………….. A-2
Suggested Location for Saving Files…………….. …………………………………………………… A-2
Appendix B
Polymorphic Functions
Numeric Conversion………………………………………………………………………………………… B-1
Polymorphism for Numeric Functions ……………………………………………………………….. B-2Polymorphism for Boolean Functions………………………………………………………………… B-4Polymorphism for Array Functions……………………………………………………………………. B-5Polymorphism for String Functions …………………………………………………………………… B-5
Polymorphism for String Conversion Func tions …………. ………….. ……….. …… B-5
Polymorphism for Additional String to Nu mber Functions………………………. B-5
Polymorphism for Cluster Functions………………………………………………………………….. B-6Polymorphism for Comparison Functions……… …………………………………………………… B-6
Polymorphism for Log Functions………………………………………………………………………. B-7
Appendix C
Comparison Functions
Comparing Boolean Values………………………………………………………………………………. C-1
Comparing Strings…………………………………………………………………………………………… C-1Comparing Numerics……………………………………………………………………………………….. C-2

Contents
© National Instruments Corporation xix LabVIEW User ManualComparing Arrays and Clusters………………………………………………………………………….C-2
Arrays ………………………………………………………………………………………………..C-2
Compare Elements Mode…………………………………………………………C-2Compare Aggregates Mode ……………………………………………………..C-3
Clusters………………………………………………………………………………………………C-3
Compare Elements Mode…………………………………………………………C-3Compare Aggregates Mode ……………………………………………………..C-3
Appendix D
Technical Support and Professional Services
GlossaryIndex

© National Instruments Corpor ation xxi LabVIEW User ManualAbout This Manual
This manual describes the LabVIEW graphical programming environment and techniques for building applications in LabVIEW, such as test and measurement, data acquisition, instrument control, datalogging, measurement analysis, and repo rt generation applications.
Use this manual to learn about LabVIEW programming features, including the LabVIEW user interface and programming workspaces, and the
LabVIEW palettes and tools. This manual does not include specific information about each palette, tool, menu, dialog bo x, control, or built-in
VI or function. Refer to the LabVIEW Help for more information about
these items and for detailed, step-by- step instructions for using LabVIEW
features and for building speci fic applications. Refer to the LabVIEW
Documentation Resources section of Chapter 1, Introduction to LabVIEW ,
for more information about the LabVIEW Help and accessing it.
The LabVIEW User Manual is also available in Po rtable Document Format
(PDF). If you select the Complete install option, LabVIEW installs PDF
versions of all LabVIEW manuals, which you can access by selecting Help»Search the LabVIEW Bookshelf in LabVIEW.
Note You must have Adobe Acrobat Reader with Search and Accessibility 5.0.5 or later
installed to view the PDFs. Refer to the Adobe Systems Incorporated Web site at
www.adobe.com to download Acrobat Reader.
You can access the PDFs from the LabVIEW Help , but you must install the
PDFs to do so. Refer to the LabVIEW Documentation Resources section of
Chapter 1, Introduction to LabVIEW , for information about accessing the
PDFs in t he LabVIEW Bookshe lf.
Organization of This Manual
The LabVIEW User Manual includes two sections. Part I, LabVIEW
Concepts , describes programming concepts for building applications in
LabVIEW. The chapters in this section introduce you to the LabVIEW programming environment and help you plan your application.Part II, Building and Editing VIs , describes LabVIEW features, VIs, and
functions you can use to make your applications operate in specific ways. The chapters in this section describe the use of each LabVIEW feature and
outline each class of VIs and functions.

About This Manual
LabVIEW User Manual xxii ni.comConventions
The following conventions appear in this manual:
» The » symbol leads you through nested menu items and dialog box options
to a final action. The sequence File»Page Setup»Options directs you to
pull down the File menu, select the Page Setup item, and select Options
from the last dialog box.
This icon denotes a tip, which alerts you to advisory information.
This icon denotes a note, which alerts you to important information.This icon denotes a caution, which advises you of precautions to take to
avoid injury, data loss, or a system crash.
bold Bold text denotes items that you must select or click in the software, such
as menu items and dialog box options. Bold text also denotes parameter names, controls and buttons on the front panel, dialog boxes, sections of
dialog boxes, menu names, and palette names.
italic Italic text denotes variables, emphasis, a cross reference, or an introduction
to a key concept. This font also denote s text that is a placeholder for a word
or value that you must supply.
monospace Text in this font denotes text or ch aracters that you should enter from the
keyboard, sections of code, programming examples, and syntax examples. This font is also used for the proper na mes of disk drives, paths, directories,
programs, subprograms, su broutines, device names, functions, operations,
variables, filenames and extensions, and code excerpts.
monospace bold Bold text in this font denotes the messages and responses that the computer automatically prints to the screen. This font also emphasizes lines of code
that are different from the other examples.
monospace italic Italic text in this font denotes text that is a placeholder for a word or value
that you must supply.
Platform Text in this font denotes a specific platform and indicates that the text
following it applies only to that platform.
right-click (Mac OS) Press <Command>-click to pe rform the same action as a
right-click.

© National Instruments Corporation I-1 LabVIEW User ManualPart I
LabVIEW Concepts
This part describes programming concepts for building applications in LabVIEW. The chapters in this section introduce you to the LabVIEW programming environment and help you plan your application.Part I, LabVIEW Conce pts, contains the following chapters:
 Chapter 1, Introduction to LabVIEW , describes LabVIEW, its
extensive documentation, and tools to help you design and build VIs.
 Chapter 2, Introduction to Virtual Instruments , describes the
components of virtual instruments, or VIs.
 Chapter 3, LabVIEW Environment , describes the LabVIEW palettes,
tools, and menus you use to build the front panels and block diagrams of VIs. This chapter also descri bes how to customize the LabVIEW
palettes and set several work environment options.
 Chapter 4, Building the Front Panel , describes how to build the front
panel of a VI.
 Chapter 5, Building the Block Diagram , describes how to build the
block diagram of a VI.
 Chapter 6, Running and Debugging VIs , describes how to configure
how a VI runs and to identify problems with block diagram organization or with the data passing through the block diagram.
 Chapter 7, Creating VIs and SubVIs , describes how to create your own
VIs and subVIs, distribute VIs, and build stand-alone applications and shared libraries.

© National Instruments Corporation 1-1 LabVIEW User Manual1
Introduction to LabVIEW
LabVIEW is a graphical programming la nguage that uses icons instead of
lines of text to create a pplications. In contrast to text-based programming
languages, where instructions determine program execution, LabVIEW uses dataflow programming, where the flow of data determines execution.In LabVIEW, you build a user interface with a set of tools and objects.
The user interface is known as the fr ont panel. You then add code using
graphical representations of functions to control the front panel objects.
The block diagram contains this code. In some ways, the block diagram resembles a flowchart.You can purchase several add-on software toolsets for developing specialized applications. A ll the toolsets integrate seamlessly in LabVIEW.
Refer to the National Instruments Web site at
ni.com for more information
about these toolsets.
LabVIEW Documentation Resources
LabVIEW includes extensive docume ntation for new and experienced
LabVIEW users. All LabVIEW manual s and Application Notes are also
available as PDFs. You must have A dobe Acrobat Reader with Search and
Accessibility 5.0.5 or later installed to view the PDFs. Refer to the Adobe Systems Incorporated Web site at
www.adobe.com to download Acrobat
Reader. Refer to the National Instruments Product Manuals Library at
ni.com/manuals for updated documentation resources.
 LabVIEW Book shelf—Use this PDF to search PDF versions of all
the LabVIEW man uals and App lication Note s. Access the LabVIEW
Bookshe lf by selecting Help»Search the LabVIEW Bookshel f.
 Getting Started with LabVIE W—Use th is manual to familiarize
yourself with the LabVIEW graph ical pr ogramming environ ment and
the basic LabVIEW features you use to build data acquisition and instrument control applications.
 LabVIEW Quick Reference Ca rd—Use this card as a reference for
information about help resources, keyboard shortcuts, terminal data types, and tools for editing, execution, and debugging.

Chapter 1 Introduction to LabVIEW
LabVIEW User Manual 1-2 ni.comLabVIEW User Manual —Use this manual to learn about LabVIEW
programming concepts, techniques, features, VIs, and functions you
can use to create test and measurem ent, data acquisition, instrument
control, datalogging, measurement analysis, and report generation applications.
LabVIEW Help —Use this help file as a reference for information
about LabVIEW palettes, menus, t ools, VIs, and functions. The
LabVIEW Help also includes step-by-step instructions for using
LabVIEW features. Access the LabVIEW Help by selecting Help»
VI, Function, and How-To Help .
The LabVIEW Help includes links to the following resources:
– LabVIEW B ookshel f, which incl udes PDF versions of all the
LabVIEW manuals and Application Notes
– Technical support resources on th e National Instruments Web site,
such as the NI Developer Zone, the KnowledgeBase, and the Product Manuals Library
Note (Mac OS and UNIX) National Instruments recommends that you use Netscape 6.0 or
later or Internet Explorer 5.0 or later to view the LabVIEW Help .
 LabVIEW Measurements Manual—Use this manual to learn more
about building data acquisition and instrument control applications in LabVIE W. If you are a new LabVIEW use r, read the Getting Started
with LabVIEW manual and the LabVIEW User Manu al before you
read this manual.
 LabVIEW Application Builder User Guide—Use th is document to
learn about the LabVIEW Applicatio n Builder, which is included in
the LabVIEW Professional Developm ent System and is available for
purchase separately. This user guide contains instructions for installing the Application Builder, descri bes system requirements for
applications, and describes the changes introduced between previous versions and the current version. This user guide also describes caveats
and recommendations to consider when you build a VI into an
application or shared library.
 LabVIEW De velopment Guidelines—Use t his manual to lea rn how
to build VIs that are easy to understand, use, and revise. This manual describes project tracking, design, and documentation techniques. This manual also contains r ecommended style guidelines.

Chapter 1 Introduction to LabVIEW
© National Instruments Corporation 1-3 LabVIEW User ManualNote The printed LabVIEW Development Guidelines manual is available on ly in the
LabVIEW Professional Development System. The PDF is available in all packages
of LabVIEW.
 LabVIEW Analysis Concept s—Use this manual to learn about
the analysis concepts used by LabVIEW. This manual includes
information about signal generation, the fast Fourier transform (FFT) and the discrete Fourier transform (DFT), smoothing windows, curve fitting, linear algebra, fundamental concepts of probability and statistics, and point-by-point an alysis for real-time analysis.
Note The LabVIEW Ana lysis Concepts manual is available only as a PD F.
 Using External Code in LabVIE W—Use th is manual to learn how
to use Code Interface Nodes and extern al subroutines to import code
written in text-based programming languages. The manual includes information about calling DLLs, shared external subroutines, libraries of functions, memory and file mani pulation routines, and diagnostic
routines.
Note The Using External Code in L abVIEW manual is available only as a PD F.
 LabVIEW Release Note s—Use these release not es to install and
uninstall LabVIEW. The release notes also describe the system requirements for the LabVIEW so ftware and known issues with
LabVIEW.
 LabVIEW U pgrade Notes—Use these u pgrade notes to up grade
LabVIEW for Windows, Mac OS, and UNIX to the latest version. The upgrade notes also describe new features and issues you might encounter when you upgrade.
LabVIEW Application Notes —Use the LabVIEW Application
Notes to learn about advanced or specialized LabVIEW concepts and
applications. Refer to the NI Developer Zone at
ni.com/zone for new
and updated Application Notes.
 LabVIEW VXI VI Reference Manua l—Use this manual to lea rn
about the VXI VIs for LabVIEW. This manual is a companion guide to the NI-VXI Programmer Reference Manual that comes with the
VXI hardware. National Instruments recommends using VISA technology for configuring, programming, and troubleshooting instrumentation systems consisting of VXI hardware.
Note The LabVIEW VXI VI Reference Man ual is available only as a PDF.

Chapter 1 Introduction to LabVIEW
LabVIEW User Manual 1-4 ni.comLabVIEW Template VIs, Example VIs, and Tools
Use the LabVIEW template VIs, exampl e VIs, and tools to help you design
and build VIs.
LabVIEW Template VIs
The LabVIEW template VIs include the subVIs, functions, structures, and
front panel objects you need to get st arted building common measurement
applications. Template VIs open as untitled VIs that you must save. Select File»New to display the New dialog box, which includes the template VIs.
You also can display the New dialog box by clicking the New button on the
LabVIEW dialog box.
LabVIEW Example VIs
LabVIEW includes hundreds of exampl e VIs you can use and incorporate
into your own VIs. You can modify an example to fit your application, or you can copy and paste from one or more examples into your own VI. Browse or search the ex ample VIs by selecting Help»Find Examples .
Refer to the NI Developer Zone at
ni.com/zone for additional
example VIs.
LabVIEW Tools
LabVIEW includes many tools to help you quickly configure your measurement devices. You can acces s the following tools from the Tools
menu.

(Windows) Measurement & Automation Explorer (MAX) helps you
configure National Instruments hardware and software.
 (Mac OS 9 or earlier) The NI-DAQ Configuration Utility helps you
configure National Instruments DAQ hardware.
 (Mac OS 9 or earlier) The DAQ Channel Wizard helps you define what
type of device is connected to the DAQ hardware channels. After you define a channel, the DAQ Channel Wizard remembers the settings.

(Mac OS 9 or earlier) The DAQ Channel Viewer lists the configured
DAQ channels.
 (Mac OS 9 or earlier) The DAQ Solution Wizard helps you find solutions
for common DAQ applications. You can choose from example VIs or create custom VIs.

Chapter 1 Introduction to LabVIEW
© National Instruments Corporation 1-5 LabVIEW User ManualUse the DAQ Assistant to graphically configure channels or common
measurement tasks. You can access th e DAQ Assistant in the following
ways: Place the DAQ Assistant Express VI on the block diagram. Right-click a DAQmx Global Channel control and select New
Channel (DAQ Assistant) from the shortcut menu. Right-click a
DAQmx Task Name control and select New Task (DAQ Assistant)
from the shortcut menu. Right-clic k a DAQmx Scale Name control and
select New Scale (DAQ Assistant) from the shortcut menu.
 Launch Measurement & Automation Explorer and select Data
Neighborhood or Scales from the Configuration tree. Click the
Create New button. Configure a NI-DAQmx channel, task, or scale.
Refer to the LabVIEW Measuremen ts Manual for more information about
using the DAQ Assistant.

© National Instruments Corporation 2-1 LabVIEW User Manual2
Introduction to Virtual
Instruments
LabVIEW programs are called virtua l instruments, or VIs, because
their appearance and operation imitate physical instruments, such as
oscilloscopes and multimeters. Every VI uses functions that manipulate
input from the user inte rface or other sources and display that information
or move it to other files or other computers.
A VI contains the following three components:
Front panel —Serves as the user interface.
Block diagram —Contains the graphical source code that defines the
functionality of the VI.
Icon and connector pane —Identifies the VI so that you can use the
VI in another VI. A VI within another VI is called a subVI. A subVI corresponds to a subroutine in text-based programming languages.
For more information…
Refer to the LabVIEW Help for more information about creating VIs and subVIs.
Front Panel
The front panel is the user interface of the VI. Figure 2-1 shows an example
of a front panel.

Chapter 2 Introduction to Virtual Instruments
LabVIEW User Manual 2-2 ni.com
Figure 2-1. Example of a Front Panel
You build the front panel with controls and indicators, which are the
interactive input and output terminals of the VI, respectively. Controls are
knobs, push buttons, dials, and other input devices. Indicators are graphs, LEDs, and other displays. Controls simulate instrument input devices and supply data to the block diagram of the VI. Indicators simulate instrument output devices and display data the block diagram acquires or generates. Refer to Chapter 4, Building the Front Panel , for more information about
the front panel.
Block Diagram
After you build the front panel, you add code using graphical representations of functions to contro l the front panel objects. The block
diagram contains this graphical source code. Front panel objects appear as
terminals on the block diagram. Refer to Chapter 5, Building the Block
Diagram , for more information about the block diagram.

Chapter 2 Introduction to Virtual Instruments
© National Instruments Corporation 2-3 LabVIEW User ManualThe VI in Figure 2-2 shows several primary block diagram
objects—terminals, functions, and wires.

Figure 2-2. Example of a Block Diagram and Corresponding Front Panel
Terminals
The terminals represent the data type of the control or indicator. You can
configure front panel controls or indicat ors to appear as icon or data type
terminals on the block diagram. By default, front panel objects appear as icon terminals. For example, a knob icon terminal shown at left, represents a knob on the front panel. The DBL at the bottom of the terminal represents a data type of double-precision, floating-point numeric. A DBL terminal, shown at left, represents a double-precision, floating-point numeric control or indicator. Refer to the Control and Indicator Data Types section of
Chapter 5, Building the Block Diagram , for more information about data
types in LabVIEW and their graphical representations.
Terminals are entry and exit ports th at exchange information between the
front panel and block diagram. Data y ou enter into the front panel controls
(a and b in Figure 2-2) enter the block diagram through the control
terminals. The data then enter the Add and Subtract functions. When the
Add and Subtract functions complete their internal calculations, they
produce new data values. The data flow to the indicator terminals, where
they exit the block diagram, reenter the front panel, and appear in front panel indicators ( a+b and a-b in Figure 2-2).

Chapter 2 Introduction to Virtual Instruments
LabVIEW User Manual 2-4 ni.comNodes
Nodes are objects on the block diagram that have inputs and/or outputs
and perform operations wh en a VI runs. They are analogous to statements,
operators, functions, and subroutines in text-based programming languages. The Add and Subtract functions in Figure 2-2 are nodes. Refer to the Block Diagram Nodes section of Chapter 5, Building the Block
Diagram , for more information about nodes.
Wires
You transfer data among block diagram objects through wires. In
Figure 2-2, wires connect the control and indicator terminals to the Add
and Subtract functions. Each wire has a single data source, but you can wire
it to many VIs and functions that read the data. Wires are different colors,
styles, and thicknesses, depending on their data types. A broken wire appears as a dashed black line with a red
X in the middle. Refer to the Using
Wires to Link Block Diagram Objects section of Chapter 5, Building the
Block Diagram , for more information about wires.
Structures
Structures are graphical re presentations of the loop s and case statements of
text-based programming languages. Use structures on the block diagram to repeat blocks of code and to execute code conditionally or in a specific order. Refer to Chapter 8, Loops and Structures , for examples and more
information about structures.
Icon and Connector Pane
After you build a VI front panel and block diagram, build the icon and the connector pane so you can use the VI as a subVI. Every VI displays an icon,
such as the one shown at left, in the upper right corner of the front panel
and block diagram windows. An icon is a graphical representation of a VI. It can contain text, images , or a combination of both. If you use a VI as a
subVI, the icon identifies the subVI on the block diagram of the VI. You can double-click the icon to customize or edit it. Refer to the Creating an
Icon section of Chapter 7, Creating VIs and SubVIs , for more information
about icons.
You also need to build a connector pane , shown at left, to use the VI as a
subVI. The connector pane is a set of terminals that correspond to the controls and indicators of that VI, simi lar to the parameter list of a function
call in text-based programming languages. The connector pane defines the

Chapter 2 Introduction to Virtual Instruments
© National Instruments Corporation 2-5 LabVIEW User Manualinputs and outputs you can wire to th e VI so you can use it as a subVI.
A connector pane receives data at its i nput terminals and passes the data to
the block diagram code through the front panel controls and receives the results at its output terminals from the front panel indicators.
When you view the connector pane fo r the first time, you see a connector
pattern. You can select a different pa ttern if you want to. The connector
pane generally has one terminal for each control or indicator on the front
panel. You can assign up to 28 terminals to a connector pane. If you anticipate changes to the VI that woul d require a new input or output, leave
extra terminals unassigned. Refer to the Setting up the Connector Pane
section of Chapter 7, Creating VIs and SubVIs , for more information about
setting up connector panes.
Note Try not to assign more than 16 terminals to a VI. Too many terminals can reduce the
readability and usability of the VI.
Using and Customizing VIs and SubVIs
After you build a VI and create its icon and connector pane, you can use it as a subVI. Refer to the SubVIs section of Chapter 7, Creating VIs and
SubVIs , for more information about subVIs.
You can save VIs as individual files, or you can group several VIs together
and save them in a VI library. Refer to the Saving VIs section of Chapter 7,
Creating VIs and SubVIs , for more information about saving VIs in
libraries.
You can customize the appearance and be havior of a VI. You also can create
custom menus for every VI you build, and you can configure VIs to show or hide menu bars. Refer to Chapter 16, Customizing VIs , for more
information about customizing a VI.

© National Instruments Corporation 3-1 LabVIEW User Manual3
LabVIEW Environment
Use the LabVIEW palettes, tools, and menus to build the front panels and
block diagrams of VIs. You can customize the Controls and Functions
palettes, and you can set several work environment options.
For more information…
Refer to the LabVIEW Help for more information about using the pa lettes, menus,
and toolbar, and customizi ng your work environment.
Controls Palette
The Controls palette is available only on the front panel. The Controls
palette contains the controls and indicat ors you use to create the front panel.
The controls and indicators are located on subpalettes based on the types of
controls and indicators. Refer to the Front Panel Controls and Indicators
section of Chapter 4, Building the Front Panel , for more information about
the types of controls and indicators. The controls and i ndicators located on
the Controls palette depend on the palette view currently selected. Refer to
the Creating and Editing Custom Palette View section of this chapter for
more information about palette views.
Select Window»Show Controls Palette or right-click the front panel
workspace to display the Controls palette. You can place the Controls
palette anywhere on the screen. LabVIEW retains the Controls palette
position and size so when you restart LabVIEW, the palette appears in the
same position and has the same size.
You can change the way the Controls palette appears. Refer to the
Customizing the Controls and Functions Palettes section of this chapter for
more information about customizing the Controls palette.
Functions Palette
The Functions palette is available only on the block diagram. The
Functions palette contains the VIs and functions you use to build the block

Chapter 3 LabVIEW Environment
LabVIEW User Manual 3-2 ni.comdiagram. The VIs and functions are located on subpalettes based on the
types of VIs and functions. Refer to the Functions Overview section of
Chapter 5, Building the Block Diagram , for more information about the
types of VIs and functions. The VIs and functions located on the Functions
palette depend on the palette view currently selected. Refer to the Creating
and Editing Custom Palette View section of this chapter for more
information about palette views.
Select Window»Show Functions Palette or right-click the block diagram
workspace to display the Functions palette. You can place the Functions
palette anywhere on the screen. LabVIEW retains the Functions palette
position and size so when you restart LabVIEW, the palette appears in the
same position and has the same size.
You can change the way the Functions palette appears. Refer to the
Customizing the Controls and Functions Palettes section of this chapter for
more information about customizing the Functions palette.
Navigating the Controls and Functions Palettes
When you click a subpalette icon, the entire palette changes to the
subpalette you selected. Click an object on the palette to place the object on
the cursor so you can place it on the front panel or block diagram. You also can right-click a VI icon on the palette and select Open VI from the
shortcut menu to open the VI.
Use the following buttons on the Controls and Functions palette toolbars
to navigate the palettes, to configure th e palettes, and to s earch for controls,
VIs, and functions:
Up—Takes you up one level in the palette hierarchy. Click this button
and hold the mouse button down to display a shortcut menu that lists each subpalette in the path to the current subpalette. Select a subpalette name in the shortcut menu to navigate to the subpalette.
 Search —Changes the palette to search mode so you can perform
text-based searches to locate controls , VIs, or functions on the palettes.
While a palette is in search mode, click the Return to Palette button
to exit search mode and return to the palette.
Options —Displays the Controls/Functions Palettes page of the
Options dialog box, in which you can select a palette view and a
format for the palettes.
 Restore Palette Size —Resizes the palette to its default size. This
button appears only if you resize the Controls or Functions palette.

Chapter 3 LabVIEW Environment
© National Instruments Corporation 3-3 LabVIEW User ManualTools Palette
The Tools palette is available on the front panel and the block diagram.
A tool is a special operating mode of the mouse cursor. The cursor
corresponds to the icon of the tool sel ected in the palette. Use the tools to
operate and modify front panel and block diagram objects.
Select Window»Show Tools Palette to display the Tools palette. You can
place the Tools palette anywhere on the screen. LabVIEW retains the Tools
palette position so when you restart LabVIEW, the palette appears in the same position.
Tip Press the <Shift> key and right-click to display a temporary version of the Tools
palette at the location of the cursor.
If automatic tool selection is enabled and you move the cursor over objects
on the front panel or block diagram, LabVIEW automatically selects the
corresponding tool from the Tools palette. You can disable automatic tool
selection by clicking the Automatic Tool Selection button on the Tools
palette, shown at left. Press th e <Shift-Tab> keys or click the Automatic
Tool Selection button to enable automatic to ol selection again. You also
can disable automatic tool selection by manually selecting a tool on the Tools palette. Press the <Tab> key or click the Automatic Tool Selection
button on the Tools palette to enable automatic tool selection again.
Menus and the Toolbar
Use the menu and toolbar items to operate and modify front panel and block
diagram objects. Use the toolbar buttons to run VIs.
Menus
The menus at the top of a VI window contain items common to other applications, such as Open , Save , Copy , and Paste , and other items
specific to LabVIEW. Some menu items also list shortcut key combinations.
(Mac OS) The menus appear at the top of the screen.
(Windows and UNIX) The menus display only the mo st recently used items by
default. Click the arrows at the bottom of a menu to display all items.You can display all menu items by default by selecting Tools»Options and
selecting Miscellaneous from the top pull-down menu.

Chapter 3 LabVIEW Environment
LabVIEW User Manual 3-4 ni.comNote Some menu items are unavailable while a VI is in run mode.
Shortcut Menus
The most often-used menu is the object shortcut menu. All LabVIEW
objects and empty space on the front panel and block diagram have
associated shortcut menus. Use the shor tcut menu items to change the look
or behavior of front panel and block diagram objects. To access the shortcut
menu, right-click the object, front panel, or block diagram.
Shortcut Menus in Run Mode
When a VI is running, or is in run mode, all front panel objects have an abridged set of shortcut menu items. Us e the abridged shortcut menu items
to cut, copy, or paste the contents of the object, to set the object to its default value, or to read the description of the object.
Some of the more complex controls have additional options. For example,
the array shortcut menu includes items to copy a range of values or go to the last element of the array.
Toolbar
Use the toolbar buttons to run and edit a VI. When you run a VI, buttons appear on the toolbar that you can use to debug the VI.
Context Help Window
The Context Help window displays basic information about LabVIEW
objects when you move the cursor ov er each object. Objects with context
help information include VIs, functio ns, constants, structures, palettes,
properties, methods, events, and dialog box components. You also can use the Context Help window to determine exactly where to connect wires to
a VI or function. Refer to the Manually Wiring Objects section of
Chapter 5, Building the Block Diagram , for more information about using
the Context Help window to wire objects.
Select Help»Show Context Help to display the Context Help window.
You also can display the Context Help window by clicking the Show
Context Help Window button on the toolbar, shown at left, or by pressing
the <Ctrl-H> keys.
(Mac OS) Press the <Command-H> keys. (UNIX) Press
the <Alt-H> keys.

Chapter 3 LabVIEW Environment
© National Instruments Corporation 3-5 LabVIEW User ManualYou can place the Context Help window anywhere on the screen. The
Context Help window resizes to accommodate each object description.
You also can resize the Context Help window to set its maximum size.
LabVIEW retains the Context Help window position and size so when you
restart LabVIEW, the window appear s in the same position and has the
same maximum size.
You can lock the current contents of the Context Help window so the
contents of the window do not change when you move the cursor over different objects. Select Help»Lock Context Help to lock or unlock the
current contents of the Context Help window. You also can lock or unlock
the contents of the window by clicking the Lock button in the Context
Help window, shown at left, or by pr essing the <Ctrl-Shift-L> keys.
(Mac OS) Press the <Command-Shift-L> keys. (UNIX) Press the
<Alt-Shift-L> keys.
Click the Show Optional Terminals and Full Path button in the Context
Help window, shown at left, to display the optional terminals of a
connector pane and to display the full path to a VI. Refer to the Setting
Required, Recommended, and Optional Inputs and Outputs section of
Chapter 7, Creating VIs and SubVIs , for more information about optional
terminals.
If a corresponding LabVIEW Help topic exists for an object the Context
Help window describes, a blue Click here for more help. link
appears in the Context Help window. Also, the More Help button in the
Context Help window, shown at left, is enabled. Click the link or the
button to display the LabVIEW Help for more information about the object.
Refer to the Creating VI and Object Descriptions section of Chapter 15,
Documenting and Printing VIs , for information about creating descriptions
to display in the Context Help window.
Customizing Your Work Environment
You can customize the Cont rols and Functions palettes, and you can use the
Options dialog box to select a palette view and set other work environment options.

Chapter 3 LabVIEW Environment
LabVIEW User Manual 3-6 ni.comCustomizing the Controls and Functions Palettes
You can customize the Controls and Functions palettes in the following
ways:
 Add VIs and controls to the palettes.
 Set up different views for differ ent users, hiding some VIs and
functions to make LabVIEW easier to use for one user while providing
the full palettes for another user.
 Rearrange the built-in palettes to make the VIs and functions you use
frequently more accessible.
 Convert a set of ActiveX controls into custom controls and add them
to the palettes.
 Add toolsets to the palettes.
Caution Do not save your own VIs and controls in the vi.lib directory because
LabVIEW overwrites these files when you upgrade or reinstall. Save your VIs and controls in the
user.lib directory to add them to the Functions and Controls palettes.
Adding VIs and Controls to the User and Instrument
Drivers Subpalettes
The simplest method for adding VIs and controls to the Functions and
Controls palettes is to save them in the labview\user.lib directory.
When you restart LabVIEW, the User Libraries and User Controls
palettes contain subpalettes fo r each directory, VI library ( .llb ), or menu
(.mnu ) file in labview\user.lib and icons for each file in labview\
user.lib . After you add files to or remove files from specific directories,
LabVIEW automatically updates the palettes when you restart LabVIEW.
The Instrument Drivers palette corresponds to the labview\instr.lib
directory. Save instrument drivers in this directory to add them to the
Functions palette.
When you add VIs or controls to the Functions and Controls palettes using
this method, you cannot set the name of each subpalette or the exact
location of the VIs or controls on the palettes.
Creating and Editing Custom Palette View
To control the name of each subpal ette and the exact location of the
controls and VIs you add to the Controls and Functions palettes, you must
create a custom palette view. LabV IEW includes two built-in palette

Chapter 3 LabVIEW Environment
© National Instruments Corporation 3-7 LabVIEW User Manualviews—Express and Advanced. Select Tools»Advanced»Edit Palette
Views to create or edit custom palette views.
Note You cannot edit a built-in palette view.
LabVIEW stores Controls and Functions palette information in the
labview\menus directory. The menus directory contains directories that
correspond to each view that you create or install. If you run LabVIEW on
a network, you can define individual menus direct ories for each user, which
makes it easy to transfer views to other users.
When you create a new view of a pa lette, LabVIEW uses a copy of the
original built-in view, upon which you can apply any changes. LabVIEW copies the original built-i n palette located in the
labview\menus directory
before you make any changes. The protection of the built-in palettes ensures that you can experiment with the palettes without corrupting the original view.
How LabVIEW Stores Views
The .mnu files and .llb files contain one Controls palette and one
Functions palette each. In addition, each file contains an icon for the
Controls and Functions palettes. You must store each subpalette you
create in a separate .mnu file.
When you select a view, LabVIEW checks the menus directory for a
directory that corresp onds to that view. It builds the top-level Controls
andFunctions palettes and subpalettes from the root.mnu file in that
directory that LabVIEW automatically creates every time you create a
view.
For each VI or control, LabVIEW creates an icon on the palette. For each
subdirectory, .mnu file, or .llb file, LabVIEW creates a subpalette on the
palette.
Building ActiveX Subpalettes
If you use ActiveX controls on the front panel, select Tools»Advanced»
Import ActiveX Controls to convert a set of ActiveX controls to custom
controls and add them to the Controls palette. LabVIEW saves the controls
in the user.lib directory by default because all files and directories in
user.lib automatically appear in the palettes.

Chapter 3 LabVIEW Environment
LabVIEW User Manual 3-8 ni.comRepresenting Toolsets and Modules in the Palettes
Toolsets and modules with controls or VIs in vi.lib\addons appear on
the Controls and Functions palettes after you restart LabVIEW. In the
built-in Express palette view, toolsets and modules install subpalettes on
the All Controls and All Functions subpalettes. In the built-in Advanced
palette view, toolsets and modules install subpalettes on the top level of the Controls and Functions palettes.
If you installed toolset or module controls and VIs outside the
vi.lib\
addons directory, you can move the controls and VIs to the vi.lib\
addons directory to add them to the palettes.
Setting Work Environment Options
Select Tools»Options to customize LabVIEW. Use the Options dialog box
to set options for front panels, block diagrams, paths, performance and disk issues, the alignment grid, palettes, undo, debugging tools, colors, fonts, printing, the History window, and other LabVIEW features.
Use the top pull-down menu in the Options dialog box to select among the
different categories of options.
How LabVIEW Stores Options
You do not have to edit options manually or know their exact format because the Options dialog box does it for you. LabVIEW stores options
differently on each platform.
Windows
LabVIEW stores options in a labview.ini file in the LabVIEW
directory. The file format is similar to other .ini files. It begins with a
LabVIEW section marker followed by the option name and the values, such as
offscreenUpdates=True .
If you want to use a different options f ile, specify the file in the shortcut you
use to start LabVIEW. For example, to use an options file on your computer
named lvrc instead of labview.ini , right-click the LabVIEW icon on
the desktop and select Properties . Click the Shortcut tab and type
labview -pref lvrc in the Target text box.
Mac OS
LabVIEW stores options in the LabVIEW Preferences text file in the
System»Preferences folder.

Chapter 3 LabVIEW Environment
© National Instruments Corporation 3-9 LabVIEW User ManualIf you want to use a different options file, copy the LabVIEW
Preferences file to the LabVIEW folder and make options changes in
the Options dialog box. When you launch LabVIEW, it first looks for an
options file in the LabVIEW folder. If it does not find the file there, it looks
in the System folder. If it does not find the file there, it creates a new one
in the System folder. LabVIEW writes al l changes you make in the
Options dialog box to the first LabVIEW Preferences file it finds.
UNIX
LabVIEW stores options in the .labviewrc file in your home directory.
If you change an option in the Options dialog box, LabVIEW writes the
change to the .labviewrc file. You can create a labviewrc file in the
program directory to store options that are the same for all users, such as
the VI search path. Use the .labviewrc file to store options that are
different for each user, such as font or color settings, because entries in
the.labviewrc file in your home directory override conflicting entries in
the program directory.
For example, if you installed the LabVIEW files in /opt/labview ,
LabVIEW first reads options from /opt/labview/labviewrc . If you
change an option in the Options dialog box, such as the application font,
LabVIEW writes that change to the .labviewrc file. The next time you
start LabVIEW, it uses the application font option in the .labviewrc file
instead of the default application font defined in /opt/labview/
labviewrc .
Option entries consist of an option na me followed by a colon and a value.
The option name is the executa ble followed by a period ( .) and an option.
When LabVIEW searches for option name s, the search is case sensitive.
You can enclose the option value in double or single quotation marks. For example, to use a default precision of double, add the following entry to the
.labviewrc file in your home directory.
labview.defPrecision : double
If you want to use a different options file, specify the file on the command line when you start LabVIEW. For example, to use a file named
lvrc in
thetest directory instead of .labviewrc , type labview -pref
/test/lvrc . LabVIEW writes all changes you make in the Options
dialog box to the lvrc options file. When you specify an options file on the
command line, LabVIEW still reads the labviewrc file in the program
directory, but the options file speci fied on the command line overrides
conflicting entries in the program directory.

© National Instruments Corporation 4-1 LabVIEW User Manual4
Building the Front Panel
The front panel is the user interface of a VI. Generally, you design the front
panel first, then design the block diagram to perform tasks on the inputs and outputs you create on the front panel. Refer to Chapter 5, Building the
Block Diagram , for more information about the block diagram.
You build the front panel with controls and indicators, which are the interactive input and output terminals of the VI, respectively. Controls are
knobs, push buttons, dials, and other input devices. Indicators are graphs, LEDs, and other displays. Controls simulate instrument input devices and supply data to the block diagram of the VI. Indicators simulate instrument output devices and display data the block diagram acquires or generates.Select Window»Show Controls Palette to display the Controls palette,
then select controls and indicators from the Controls palette and place
them on the front panel.
For more information…Refer to the LabVIEW Help for more information about designing and configuring
the front panel.
Configuring Front Panel Objects
Use property dialog boxes or shortcut menus to configure how controls and indicators appear or behave on the front panel. Use property dialog boxes when you want to configure a front panel control or indicator through a dialog box that includes context help or when you want to set several properties at once for an object. Use shortcut menus to quickly configure common control and indicator properties. Options in the property dialog boxes and shortcut menus differ depending on the front panel object. Any option you set using a shortcut menu overrides the option you set with a property dia log box. Refer to t he LabVIEW Cust om Con trols, Indic ators,
and Type Definitions Application Note for more information about creating
and using custom controls, indicators, and type definitions.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-2 ni.comRight-click a control or indicator on the front panel and select Properties
from the shortcut menu to access the pr operty dialog box for that object.
You cannot access property dialog boxes for a control or indicator while
a VI runs.
Showing and Hiding Optional Elements
Front panel controls and indicators have optional elements you can show or hide. Set the visible elements fo r the control or indicator on the
Appearance tab of the property dialog box for the front panel object. You
also can set the visible el ements by right-clicking an object and selecting
Visible Items from the shortcut menu. Most objects have a label and a
caption. Refer to the Labeling section of this chapter for more information
about labels and captions.
Changing Controls to Indicato rs and Indicators to Controls
LabVIEW initially configures objects in the Controls palette as controls or
indicators based on their typical use. For example, if you select a toggle switch it appears on the front panel as a control because a toggle switch is
usually an input device. If you select an LED, it appears on the front panel as an indicator because an LE D is usually an output device.
Some palettes contain a control and an indicator for the same type or class
of object. For example, the Numeric palette contains a digital control and
a digital indicator.
You can change a control to an indicat or by right-clicking the object and
selecting Change to Indicator from the shortcut menu, and you can
change an indicator to a control by right-clicking the object and selecting
Change to Control from the shortcut menu.
Replacing Front Panel Objects
You can replace a front panel object wi th a different control or indicator.
When you right-click an object and select Replace from the shortcut menu,
a temporary Controls palette appears, even if the Controls palette is
already open. Select a control or indicator from the temporary Controls
palette to replace the current object on the front panel.
Selecting Replace from the shortcut menu pres erves as much information
as possible about the original object, su ch as its name, description, default
data, dataflow direction (control or indicator), color, size, and so on. However, the new object retains its own data type. Wires from the terminal of the object or local variables remain on the block diagram, but they might

Chapter 4 Building the Front Panel
© National Instruments Corporation 4-3 LabVIEW User Manualbe broken. For example, if you repl ace a numeric terminal with a string
terminal, the original wire remains on the block diagram, but is broken.
The more the new object resembles the object you are replacing, the more
original characteristics you can pres erve. For example, if you replace a
slide with a different styl e slide, the new slide has the same height, scale,
value, name, description, and so on. If you replace the slide with a string
control instead, LabVIEW preserves only the name, description, and
dataflow direction because a slide doe s not have much in common with a
string control.
You also can paste objects from the cl ipboard to replace existing front panel
controls and indicators. This method does not preserve any characteristics
of the old object, but the wires remain connected to the object.
Configuring the Front Panel
You can customize the front panel by setting the tabbing order of front
panel objects, by using imported graphics, and by setting front panel objects to automatically resize when the window size changes.
Setting Keyboard Shortcuts for Controls
You can assign keyboard shortcuts to controls so users can navigate the front panel without a mouse. Right-click the control and select Advanced»
Key Navigation from the shortcut menu to display the Key Navigation
dialog box.
Note LabVIEW does not respond to keyboard shortcuts for hidden controls.
When a user enters the keyboard s hortcut while running the VI, the
associated control receives the focus. If the control is a text or digital
control, LabVIEW highlights the text so you can edit it. If the control is Boolean, press the spacebar or the <Enter> key to change its value.
The Advanced»Key Navigation shortcut menu item is dimmed for
indicators because you cannot en ter data in an indicator.
Note You also can use the Key Down event to ge nerate an event when the user presses a
specific key on the keyboard.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-4 ni.comRefer to the Key Navigation section of C hapter 6, LabVIEW Sty le Guide, in
the LabVIEW Develop ment Guidelines manual for more information about
setting keyboard shortcuts in a user interface.
Controlling Button Behavior with Key Navigation
You can associate function keys with various buttons that control the behavior of a front panel. You can configure a button in a VI to behave like a dialog box button so that pressing the <Enter> key is the same as clicking the button.If you associate the <Enter> key with a dialog box button, LabVIEW automatically draws that button with a thick border around it.If you associate the <Enter> key with a control, the user cannot enter a
carriage return in any string control on that front panel. All strings on that front panel are limited to a single line . You can use scrollbars to navigate
longer strings.If you navigate to a Boolean control and press the <Enter> key, the Boolean control changes, even if another co ntrol uses the <Enter> key as its
keyboard shortcut. The assigned <Enter> keyboard shortcut applies only when a Boolean control is not selected.
Setting the Tabbing Order of Front Panel Objects
Controls and indicators on a front panel have an order, called tabbing order,
that is unrelated to their position on the front panel. The first control or indicator you create on th e front panel is element
0, the second is 1,
and so on. If you delete a control or indicator, the tabbing order adjusts automatically.The tabbing order determines the order in which LabVIEW selects controls and indicators when the user presses the <Tab> key while a VI runs. The
tabbing order also determines the order in which the controls and indicators appear in the records of datalog fi les you create when you log the front
panel data. Refer to the Logging Front Panel Data section of Chapter 14,
File I/O , for more information about logging data.
You can set the tabbing order of front panel objects by selecting Edit»Set
Tabbing Order .
To prevent users from acces sing a control by pressi ng the <Tab> key while
a VI runs, place a checkmark in the Skip this control when tabbing
checkbox in the Key Navigation dialog box.

Chapter 4 Building the Front Panel
© National Instruments Corporation 4-5 LabVIEW User ManualColoring Objects
You can change the color of many obj ects but not all of them. For example,
block diagram terminals of front panel objects and wires us e specific colors
for the type and representation of data they carry, so you cannot change them.Use the Coloring tool to right-click an object or workspace to change
the color of front panel objects or the front panel and block diagram workspaces. You also can change the default colors for most objects by
selecting Tools»Options and selecting Colors from the top pull-down
menu.Refer to the Colors section of Chapter 6, LabVIEW Style Guid e, in the
LabVIEW Development Guidelines manual for more information about
using color to desi gn a user interface.
Using Imported Graphics
You can import graphics from other applications to use as front panel backgrounds, items in ring controls, and parts of other controls and indicators. Refer to t he LabVIEW Cust om Con trols, Indic ators, and Type
Definitions Application Note for more informa tion about using graphics in
controls.LabVIEW supports most standard graphic formats, including BMP, JPEG, animated GIF, MNG, animated MNG, and PNG. LabVIEW also supports
transparency.To import a graphic, copy it to the clipboard and paste it on the front panel. You also can select Edit»Import Picture from File .
Note (Windows and Mac OS) If you import an image by co pying and pasting it, the image
loses any transparency.
Refer to the examples\general\controls\custom.llb for examples
of controls with imported graphics. Refer to the Graphics and Custom
Controls section of Chapter 6, LabVIEW Style Guide, in the LabVIEW
Development Guidelines manual for more information ab out using
graphics to design a user interface.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-6 ni.comAligning and Distributing Objects
Select Operate»Enable Alignment Grid on Panel to enable the
alignment grid on the front panel an d align objects as you place them.
Select Operate»Disable Alignment Grid on Panel to disable the
alignment grid and use the visible grid to align objects manually. You also
can press the <Ctrl-#> keys to enable or disable the alignment grid. On
French keyboards, press the <Ctrl-”> keys.
(Mac OS) Press the <Command-*> keys. (Sun) Press the <Meta-#> keys.
(Linux) Press the <Alt-#> keys.
You also can use the alignment grid on the block diagram.Select Tools»Options and select Alignment Grid from the top pull-down
menu to hide or customize the grid.
To align objects after you place them, select the objects and select the Align
Objects pull-down menu on the toolbar. To space objects evenly, select the
objects and select the Distribute Objects pull-down menu on the toolbar.
Grouping and Locking Objects
Use the Positioning tool to select the front panel objects you want to group
and lock together. Click the Reorder button on the toolbar and select
Group or Lock from the pull-down menu. Grouped objects maintain their
relative arrangement and size when you use the Positioning tool to move and resize them. Locked objects mainta in their location on the front panel
and you cannot delete them until you unlock them. You can set objects to be grouped and locked at the same time. Tools other than the Positioning tool work normally with grouped or locked objects.
Resizing Objects
You can change the size of most front panel objects. When you move the
Positioning tool over a resizable object, resizing handles or circles appear at the points where you can resize the object. When you resize an object, the font size remains the same. Resizi ng a group of objects resizes all the
objects within the group.
Some objects change size only horizont ally or vertically when you resize
them, such as digital numer ic controls and indicators. Others keep the same
proportions when you resize them, such as knobs. The Positioning cursor appears the same, but the dashed bord er that surrounds th e object moves in
only one direction.

Chapter 4 Building the Front Panel
© National Instruments Corporation 4-7 LabVIEW User ManualYou can manually restrict the growth direction when y ou resize an object.
To restrict the growth vertically or horizontally or to maintain the current proportions of the object, press the <Shift> key while you click and drag the resizing handles or circles. To re size an object around its center point,
press the <Ctrl> key while you click and drag the resizing handles or circles.
(Mac OS) Press the <Option> key. (Sun) Press the <Meta> key. (Linux) Press
the <Alt> key.
To resize multiple objects to the same si ze, select the objects and select the
Resize Objects pull-down menu on the toolbar.You can resize all the
selected objects to the width or height of the largest or smallest object, and
you can resize all the selected obj ects to a specific size in pixels.
Scaling Front Panel Objects
You can set the front panel objects to scale, or automatically resize in
relation to the window size, when you resize the front panel window. You can set one object on the front panel to scale, or you can set all objects on
the front panel to scale. However, you cannot set multiple objects to scale on the front panel unless you set all of them to scale or unless you group the objects first. To scale an object , select the object and select Edit»Scale
Object with Panel .
If you set a single front panel object to scale, the object resizes itself
automatically in relation to any change in the front panel window size. The other objects on the front panel reposition themselves to remain consistent with their previous placement on the fr ont panel but do not scale to fit the
new window size of the front panel.
Immediately after you designate a single object on the front panel to scale
automatically, gray lines outline several regions on the front panel, as shown in Figure 4-1. The regions define the positions of the other front panel objects in relation to the object you want to scal e. When you resize
the front panel window, the object you se t to scale automatically resizes and
repositions itself relative to its original location. The gray lines disappear when you run the VI.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-8 ni.comFigure 4-1. Front Panel with Object Set to Scale
When LabVIEW scales objects automatically, it follows the same
conventions as when you resize an object manually. For example, some
objects can resize only horizontally or vertically, and the font size remains the same when you resize an object.
After LabVIEW automatically scales an object, the object might not scale
back to its exact original size when y ou size the window back to its original
position. Before you save the VI, select Edit»Undo to restore the original
front panel window and object sizes.
You can set an array to scale or set the objects within an array to scale. If
you set the array to scale, you adjust the number of rows and columns you
can see within the array. If you set th e objects within the a rray to scale, you
always see the same number of rows and columns, though different sizes, within the array.
You also can set a cluster to scale or set the objects within the cluster to
scale. If you set the objects within the cluster to scal e, the cluster adjusts as
well.

Chapter 4 Building the Front Panel
© National Instruments Corporation 4-9 LabVIEW User ManualAdding Space to the Front Panel without Resizing the Window
You can add space to the front pane l without resizing the window. To
increase the space between crowded or tightly grouped objects, press the
<Ctrl> key and use the Positioning tool to click the front panel workspace.
While holding the key combination, drag out a region the size you want to
insert.
(Mac OS) Press the <Option> key. (Sun) Press the <Meta> key. (Linux) Press
the <Alt> key.
A rectangle marked by a dashed border defines where space will be
inserted. Release the key co mbination to add the space.
Front Panel Controls and Indicators
Use the front panel controls and indicators located on the Controls palette
to build the front panel. Controls are knobs, push buttons, dials, and other input devices. Indicators are graphs, LEDs, and other displays. Controls simulate instrument input devices and supply data to the block diagram of the VI. Indicators simulate instrument output devices and display data the block diagram acquires or generates.
3D and Classic Cont rols and Indicators
Many front panel objects have a high-color, three-dimensional appearance.
Set your monitor to display at least 16-bit color for optimal appearance of
the objects.
The 3D front panel objects also have corresponding low-color,
two-dimensional objects. Use the 2D co ntrols and indicators located on the
Classic Controls palette to create VIs for 256-color and 16-color monitor
settings.
Select File»VI Properties and select Editor Options from the Category
pull-down menu to change the style of control or indicator LabVIEW
creates when you right-click a terminal and select Create»Control or
Create»Indicator from the shortcut menu. Refer to the Configuring the
Appearance and Behavior of VIs section of Chapter 16, Customizing VIs ,
for more information about configuring the appearance and behavior of VIs. Select Tools»Options and select Front Panel from the top pull-down
menu to change the style of control or indicator LabVIEW creates in new
VIs when you right-click a terminal and select Create»Control or Create»
Indicator from the shortcut menu.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-10 ni.comSlides, Knobs, Dials, Digita l Displays, and Time Stamps
Use the numeric controls a nd indicators located on the Numeric and
Classic Numeric palettes to simulate slides, knobs, dials, and digital
displays. The palette also includes co lor boxes and color ramps for setting
color values and a time stamp for setting the time and date for the data. Use numeric controls and indicators to enter and display numeric data.
Slide Controls and Indicators
The slide controls and indicators incl ude vertical and horizontal slides,
a tank, and a thermometer. Change the value of a slide control or indicator
by using the Operating tool to drag the slider to a new position, by clicking a point of the slide object, or by using the optional digital display. If you drag the slider to a new position and the VI is running during the change, the control passes intermediate values to the VI, depending on how often the VI reads the control.
Slide controls or indicators can display more than one value. Right-click
the object and select Add Slider from the shortcut menu to add more
sliders. The data type of a control with multiple sliders is a cluster that contains each of the nume ric values. Refer to the Clusters section of
Chapter 10, Grouping Data Using Strings, Arrays, and Clusters , for more
information about clusters.
Rotary Controls and Indicators
The rotary controls and indicators incl ude knobs, dials, gauges, and meters.
The rotary objects operate similarly to the slide controls and indicators.
Change the value of a rotary control or indicator by moving the needles, by
clicking a point of the rotary object, or by using the optional digital display.
Rotary controls or indicators can disp lay more than one value. Right-click
the object and select Add Needle from the shortcut menu to add new
needles. The data type of a control with multiple needles is a cluster that contains each of the nume ric values. Refer to the Clusters section of
Chapter 10, Grouping Data Using Strings, Arrays, and Clusters , for more
information about clusters.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-11 LabVIEW User ManualDigital Controls and Indicators
Digital controls and indicators are the simplest way to enter and display
numeric data. You can resize these front panel objects horizontally to accommodate more digits. You can change the value of a digital control or
indicator by using the following methods:
 Use the Operating or Labeling tool to click inside the digital display
window and enter numbers from the keyboard.
 Use the Operating tool to click the increment or decrement arrow
buttons of a digital control.
 Use the Operating or Labeling tool to place the cursor to the right of
the digit you want to change and press the up or down arrow key on the keyboard.
Numeric Formatting
By default, LabVIEW displays and stores numbers lik e a calculator. A
numeric control or indicator displays up to six digits before automatically switching to exponential notation. You can configure the number of digits LabVIEW displays before switching to exponential notation in the Format
and Precision tab of the Numeric Properties dialog box.
The precision you select affects only th e display of the value. The internal
accuracy still depends on the representation.
Time Stamp Control and Indicator
Use the time stamp control and indicator to send and retrieve a time and
date value to or from the block diag ram. You can change the value of the
time stamp control by using the following methods:
 Right-click the constant and select Format & Precision from the
shortcut menu.
 Click the Time/Date Browse button, shown at left, to display the Set
Time and Date dialog box.
 Select Data Operations»Set Time and Date from the shortcut menu
to display the Set Time and Date dialog box. You also can right-click
the time stamp control and select Data Operations»Set Time to Now
from the shortcut menu.
Color Boxes
A color box displays a color that co rresponds to a speci fied value. For
example, you can use color boxes to indicate different conditions, such as

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-12 ni.comout-of-range values. The color value is expressed as a hexadecimal number
with the form RRGGBB. The first two digits control the red color value. The second two digits control the green color value. The last two digits
control the blue color value.
Set the color of the color box by clicking it with the Operating or Coloring
tool to display the color picker.
Color Ramps
A color ramp uses color to display its numeric value. You configure a color
ramp that consists of at least two arbitrary markers, each with a numeric
value and a corresponding display color. As the input value changes, the color displayed changes to the color th at corresponds to that value. Color
ramps are useful for visu ally indicating data ranges, such as a warning
range for when a gauge reaches dang erous values. For example, you can
use a color ramp to set the color scale for intensity charts and graphs. Refer to the Intensity Graphs and Charts section of Chapter 12, Graphs and
Charts , for more information about intensity charts and graphs.
Right-click the color ramp and use the shortcut menu items to customize
the appearance, size, colors , and number of colors.
You also can add a color ramp to any knob, dial, or gauge on the front panel.
Meters have a visible color ramp by default.
Graphs and Charts
Use graphs and charts to display plots of data in a graphical form.
Refer to Chapter 12, Graphs and Charts , for more information about using
graphs and charts in LabVIEW.
Buttons, Switches, and Lights
Use the Boolean controls and indicators to simulate buttons, switches, and lights. Use Boolean controls and indi cators to enter and display Boolean
(TRUE/FALSE) values. For exampl e, if you are monitoring the
temperature of an experiment, you can place a Boolean warning light on the front panel to indicate when the temp erature goes above a certain level.
Use the shortcut menu to customize th e appearance of Boolean objects and
how they behave when you click them.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-13 LabVIEW User ManualText Entry Boxes, Labels, and Path Displays
Use the string and path controls and indicators to simulate text entry boxes
and labels and to enter or return the location of a file or directory.
String Controls and Indicators
Enter or edit text in a string control on the front panel by using the
Operating tool or the Labeling tool. By default, new or changed text does not pass to the block diagram until you terminate the edit session. You terminate the edit session by clicking elsewhere on the panel, changing to
a different window, clicking the Enter button on the toolbar, or pressing
the <Enter> key on the numeric keypad. Pressing the <Enter> key on the keyboard enters a carriage return.
Refer to the Strings on the Front Panel section of Chapter 10, Grouping
Data Using Strings, Arrays, and Clusters , for more information about the
string control and indicator.
Combo Box Controls
Use the combo box control to create a list of strings you can cycle through on the front panel. A combo box control is similar to a text or menu ring control. However, the value and data type of a combo box control are strings instead of numbers as with ring controls. Refer to the Ring and
Enumerated Type Controls and Indicators section of this chapter for more
information about ring controls.
You can use a combo box control to sel ect the cases of a Case structure.
Refer to the Case Structures section of Chapter 8, Loops and Structures ,
for more information ab out Case structures.
Right-click a combo box control and select Edit Items from the shortcut
menu to add strings to the list from wh ich you can select in the control. The
order of the strings in the Edit Items page of the Combo Box Properties
dialog box determines the order of the strings in the control. By default, the combo box control allows users to enter string values not already in the list of strings defined for the control. Right-click the combo box control and select Allow Undefined Strings from the shortcut menu to remove the
checkmark and prevent the user from entering undefined string values in
the control.
As you type a string in a combo box control at run time, LabVIEW selects
the first, shortest string in the control that begins with the letters you type. If no strings match the letters you type and the control does not allow

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-14 ni.comundefined string values, LabVIEW doe s not accept or display the letters
you type in the control.
When you configure the list of strings for a combo box control, you can
specify a custom value for each string, wh ich is useful if you want the string
that appears in the combo box control on the front panel to be different than
the string value the combo box terminal on the block diagram returns. Right-click the combo box control, select Edit Items from the shortcut
menu, and remove the checkmark from the Values Match Labels
checkbox in the Edit Items page of the Combo Box Properties dialog
box. In the Values column of the table in this dialog box, change the value
that corresponds to each string in the control.
Path Controls and Indicators
Use path controls and indi cators to enter or return the location of a file or
directory. Path controls and indicators work similarly to string controls and
indicators, but LabVIEW formats the path using the standard syntax for the
platform you are using.
Invalid Paths
If a function that returns a path fails, the function returns an invalid path
value, <Not A Path> , in the indicator. Use the <Not A Path> value as
the default value for a path control to detect when the user fails to provide a path and display a file dialog box with options for selecting a path. Use
the File Dialog function to display a file dialog box.
Empty Paths
An empty path in a path control a ppears as an empty string on Windows
and Mac OS and as a slash ( /) on UNIX. Use empty paths to prompt the
user to specify a path. When you wire an empty path to a file input/output (I/O) function, the empty path refers to the list of drives mapped to the computer.
(Mac OS) The empty path refers to the mounted volumes. (UNIX) The empty
path refers to the root directory.
Array and Cluster Controls and Indicators
Use the array and cluster controls and indicators located on the Array &
Cluster and Classic Array & Cluster palettes to create arrays and clusters
of other controls and indicators. Refer to the Grouping Data with Arrays

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-15 LabVIEW User Manualand Clusters section of Chapter 10, Grouping Data Using Strings, Arrays,
and Clusters , for more information about arrays and clusters.
The Array & Cluster palettes also contain stan dard error cluster controls
and indicators and the variant control. Refer to the Error Clusters section
of Chapter 6, Running and Debugging VIs , for more information about
error clusters. Refer to the Handling Variant Data section of Chapter 5,
Building the Block Diagram , for more informatio n about the variant
control.
Listboxes, Tree Controls, and Tables
Use the listbox controls located on the List & Table and Classic
List & Table palettes to give users a list of items from which to select.
Listboxes
You can configure listboxes to accept sing le or multiple selections. Use the
multicolumn list box to display more informat ion about each item, such as
the size of the item and the date it was created.
When you type characters in a listbox at run tim e, LabVIEW selects the
first item in the listbox that begins wi th the characters you type. Use the left
and right arrow keys to go to the previous or next items that match the characters you type.
You can add a symbol next to a list item, such as in the VI Library
Manager dialog box, where directories and files have different symbols.
You also can insert separator lines between list items.
You can use a Property Node to modify list items and to gather information
about list items, such as to detect the currently selected items or to detect
which items, if any, the user double-clicked. Refer to the Property Nodes
section of Chapter 17, Programmatically Controlling VIs , for more
information about Property Nodes.
Tree Controls
Use the tree control to give users a hier archical list of items from which to
select. You organize the items you enter in the tree control into groups of items, or nodes. Click the expand symbol next to a node to expand it and display all the items in that node. You also click the symbol next to the node to collapse the node.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-16 ni.comNote You can create and edit tree controls only in the LabVIEW Full and Professional
Development Systems. If a VI contains a tr ee control, you can run the VI in all LabVIEW
packages, but you cannot configure the control in the Base Package.
When you type characters in a tree control at ru n time, LabVIEW selects
the first item in the tree control that begins with the characters you type. You can change the hierarchy of items in the tree control by selecting an
item and pressing the period (
.) key to indent the curr ent item or the comma
(,) key to move the current item to the left.
You configure items in a tree control the same way you configure them in
a listbox. You also can cha nge the type of symbol th at appears next to each
node, and you can configure whether the user can drag items within the tree
control.
You can use an Invoke Node to modify items in the tree control and to
gather information about items, such as to detect which items, if any, the
user double-clicked. When you add an item in the tree control, LabVIEW
creates a unique tag for the item. You use this tag to modify items or to gather information about items pr ogrammatically. Right-click the tree
control and select Edit Items from the shortcut menu to modify the tags
that LabVIEW creates for each item. Refer to the Invoke Nodes section of
Chapter 17, Programmatically Controlling VIs , for more information
about Invoke Nodes.
Refer to the Directory Hierarc hy in Tree Control VI in the
examples\
general\controls\Directory Tree Control.llb for an example
of using a tree control.
Tables
Use the table control located on the List & Table and Classic List & Table
palettes to create a table on the front panel.
Refer to the Tables section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about using table controls.
Ring and Enumerated Type Controls and Indicators
Use the ring and enumerated type cont rols and indicators located on the
Ring & Enum and Classic Ring & Enum palettes to create a list of strings
you can cycl e through.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-17 LabVIEW User ManualRing Controls
Ring controls are numeric objects th at associate numeric values with
strings or pictures. Ring controls app ear as pull-down menus that users can
cycle through to make selections.
Ring controls are useful for selectin g mutually exclusive items, such as
trigger modes. For example, use a ri ng control for users to select from
continuous, single, and external triggering.
Right-click a ring control and select Edit Items from the shortcut menu to
add items to the list from which you can select in the control. The order of
the items in the Edit Items page of the Ring Properties dialog box
determines the order of the items in th e control. You also can configure the
ring control so users can enter numeric values not already associated with
any entries in the list of items defined for the control by right-clicking the ring control and select Allow Undefined Values from the shortcut menu.
To enter an undefined value in the ring control at run time, click the control,
select <Other> from the shortcut menu, enter a numeric value in the digital
display that appears, and press the <Enter> key. The undefined value appears in the ring control in angl e brackets. LabVIEW does not add the
undefined value to the list of items from which you can select in the control.
When you configure the list of items fo r a ring control, you can assign a
specific numeric value to each item. If you do not assign specific numeric
values to the items, LabVIEW assigns sequential values that correspond to the order of the items in the list, starting with a value of 0 for the first item. To assign specific numeric values, ri ght-click the ring control, select Edit
Items from the shortcut menu, and remove the checkmark from the
Sequential Values checkbox in the Edit Items page of the Ring
Properties dialog box. In the Values section of the table in this dialog box,
change the numeric values that corres pond to each item in the control. Each
item in the ring control must have a unique numeric value.
Enumerated Type Controls
Use enumerated type controls to give users a list of items from which to select. An enumerated type control, or enum, is similar to a text or menu ring control. However, the data type of an enumerated type control includes information about the numeric values and the string labels in the control. The data type of a ring control is numeric.
Note You cannot allow the user to enter undefined values in enumerated type controls, and
you cannot assign specific numeric values to item s in enumerated type controls. If you need

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-18 ni.comthis functionality, use a ring control. Refer to the Ring Controls section of this chapter for
more information about ring controls.
You can use an enumerated type cont rol to select the cases of a Case
structure. Refer to the Case Structures section of Chapter 8, Loops and
Structures , for more information about Case structures.
The numeric representation of the enum erated type control is an 8-bit,
16-bit, or 32-bit unsigned integer. Right-click the enumerated type control and select Representation from the shortcut menu to change the
representation of the control.
Advanced Enumerated Type Controls and Indicators
All arithmetic functions except In crement and Decrement treat the
enumerated type control the same as an unsigned integer. Increment
increments the last enumerated va lue to the first, and Decrement
decrements the first enumerated value to the last. When coercing a signed
integer to an enumerated type, nega tive numbers are changed to equal the
first enumerated value, and out-of-range positive numbers are changed to equal the last enumerated value. Out- of-range unsigned integers are always
changed to equal the last enumerated value.
If you wire a floating-point value to an enumerated type indicator,
LabVIEW coerces the floating-point valu e to the closest numeric value in
the enumerated type indicator. LabVIEW handles out-of-range numbers as previously described. If you wire an enumerated control to any numeric value, LabVIEW coerces the enumerated type value to a numeric value. To
wire an enumerated type control to an enumerated type indicator, the items
in the indicator must match the items in the control. However, the indicator
can have more items than the control.
Container Controls
Use the container controls located on the Containers and the Classic
Containers palettes to group controls and indicators, to display the front
panel of another VI on the front panel of the current VI, or (Windows) to
display ActiveX objects on the front panel. Refer to Chapter 19, Windows
Connectivity , of this manual for more information about using ActiveX.
Tab Controls
Use tab controls to overlap front panel controls and indicators in a smaller
area. A tab control consists of page s and tabs. Place front panel objects on

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-19 LabVIEW User Manualeach page of a tab control and use th e tab as the selector for displaying
different pages.
Tab controls are useful when you have several front panel objects that are
used together or during a specific pha se of operation. For example, you
might have a VI that requires the user to first configure several settings before a test can start, then allows the user to modify aspects of the test as
it progresses, and finally allows the user to display and store only pertinent data.
On the block diagram, the tab control is an enumerated type control by
default. Terminals for controls and indicators placed on the tab control
appear as any other block diagram terminal. Refer to the Enumerated Type
Controls section of this chapter for mo re information about enumerated
type controls.
Subpanel Controls
Use the subpanel control to display the front panel of another VI on the front panel of the current VI. For ex ample, you can use a subpanel control
to design a user interface that behaves like a wizard. Place the Back and
Next buttons on the front panel of the top-level VI and use a subpanel
control to load different front pa nels for each step of the wizard.
Note You can create and edit subpanel controls only in the LabVIEW Full and
Professional Development Systems. If a VI contains a subpanel control, you can run the VI in all LabVIEW packages, but you cannot co nfigure the control in the Base Package.
When you place a subpanel control on the front panel, LabVIEW does not
create a front panel terminal for the co ntrol on the block diagram. Instead,
LabVIEW creates an Invoke Node on th e block diagram with the Insert VI
method selected. To load a VI in the subpanel control, wire a reference to
that VI to the Invoke Node. Refer to Chapter 17, Programmatically
Controlling VIs , of this manual for more information about using VI
references and Invoke Nodes.
Note Because the subpanel control does not have a terminal, you cannot create an array
of subpanel controls, and you cannot create a ty pe definition of a subpanel control. You can
place a subpanel control in a cluster to group the subpanel control with other controls, but
the cluster cannot contain only a subpanel control or controls.
If the front panel of the VI you want to load is open or if you loaded the
front panel in another subpanel cont rol on the same front panel, LabVIEW
returns an error, and you cannot load th e front panel in the subpanel control.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-20 ni.comYou also cannot load the front panel of a VI in a remote instance of
LabVIEW, and you cannot load front panels recursively.
You cannot use keyboard shortcuts to navigate or operate the front panel in
the subpanel control.
If you load a VI that is not running, the VI in the subpanel control loads in
run mode.
LabVIEW displays only the visible area of the front panel of the VI you
load in the subpanel control. After you stop the VI that contains the subpanel control, LabVIEW clears the fr ont panel in the subpanel control.
You also can use the Remove VI method to unload the VI in the subpanel control.
Refer to the
examples\general\controls\subpanel.llb for
examples of using subpanel controls.
I/O Name Controls and Indicators
Use the I/O name controls and indicators to pass DAQ channel names, VISA resource names, and IVI logical names you configure to I/O VIs to communicate with an inst rument or a DAQ device.
I/O name constants are located on the Functions palette.
Note All I/O name controls or constants are availa ble on all platforms. This allows you to
develop I/O VIs on any platform that can co mmunicate with devices that are platform
specific. However, if you try to run a VI with a platform-specific I/ O control on a platform
that does not support that de vice, you will receive an error.
(Windows) Use Measurement & Automation Explorer, available from the
Tools menu, to configure DAQ channel names, VISA resource names, and
IVI logical names.
(Mac OS) Use the NI-DAQ Configuration Utility, available from the Tools
menu, to configure National Instruments DAQ hardware. Use the DAQ Channel Wizard, available from the Tools menu, to configure DAQ channel
names.
(Mac OS and UNIX) Use the configuration utilities for your instrument to
configure VISA resource names and IVI logical names. Refer to the documentation for your instrument for more information about the configuration utilities.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-21 LabVIEW User ManualThe IMAQ session control is a unique identifier that represents the
connection to the hardware.
Waveform Control
Use the waveform control to manipulate individual data elements of a waveform. Refer to the Waveform Data Type section of Chapter 12,
Graphs and Charts , for more information about the waveform data type.
Digital Waveform Control
Use the Digital Waveform c ontrol to manipulate the individual elements of
a digital waveform. Refer to the Digital Waveform Data Type section of
Chapter 12, Graphs and Charts , for more information about the Digital
Waveform control.
Digital Data Control
The digital data control includes digital data arranged in rows and columns. Use the digital data type to build digital waveforms or to display digital data extracted from a digital waveform.Wire the digital waveform data type to
a digital data indicator to view the samples and signals of a digital waveform. The digital data control in Figure 4-2 displays five samples that each contain eight signals.
Figure 4-2. Digital Data Control1 Signals
2D a t a3 Vertical Scroll Bar4 Samples 5 Horizontal Scroll Bar
1
2
3
45

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-22 ni.comYou can insert and delete rows and columns in the digital data control.
To insert a row, right-click a sample in the sample column and select Insert
Row Before from the shortcut menu. To delete a row, right-click a sample
in the sample column and select Delete Row from the shortcut menu.
To insert a column, right-click a signal in the signal column and select
Insert Column Before from the shortcut menu. To delete a column,
right-click a signal in the signal column and select Delete Column from
the shortcut menu.
You also can cut, copy, and paste digital data within the control. To cut data,
select the row or column you want to cut, right-click, and select Data
Operations»Cut Data from the shortcut menu. You can cut only whole
rows or columns of data. You cannot cr eate a new row or column with the
digital data you cut. To copy data , select the area you want to copy,
right-click, and select Data Operations»Copy Data from the shortcut
menu. To paste digital data, select the area you want to copy into and select
Data Operations»Paste Data from the shortcut menu. You must paste
digital data into an area that is the same dimension as the area you cut or
copied from. For example, if you copy four bits of data from one row, you must select four existing bits of data to paste over in the same row or in a different row. If you copy four bits of data from an area of two rows by two
columns, you must paste the data into an area of two rows by two columns.
The digital data control and the digital waveform control accept values of
0, 1, L, H, Z, X, T, and V . You can display the data in the digital data control in binary, hexadecimal, octal, and deci mal formats. The digital states L, H,
Z, X, T, and V , which are states some measurement devices use, appear as
question marks if you choose to display the values in hexadecimal, octal, or decimal format. Right-click the control, select Data Format from the
shortcut menu, and select a data format for the control.
Converting Data to Digital Data
In most cases, a signal you acquire is returned as raw data. To graph the
signal in a digital waveform graph, you must convert the raw data you acquire into the digital data type or the digital waveform data type. Use the Analog to Digital Waveform VI to convert the data to the digital waveform data type. Use the Get Waveform Components function to extract the digital data from the digital waveform data type.
The block diagram in Figure 4-3 simulates the acquisition of a sine wave
with an amplitude of 5, which means th e sine wave can contain values that
range from
–5 to 5. The Analog to Digital Waveform VI in this block
diagram represents each value with 8 bits. The 8 bits can represent a

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-23 LabVIEW User Manualminimum value of –5 and a maximum value of 5. The Digital Waveform
probe displays a portion of the resulting values in binary format.

Figure 4-3. Converting an Analog Waveform to a Digital Waveform
Acquiring a Digital Subset
Use the Digital Signal Subset VI to ex tract individual signals from a digital
waveform. The block diagram in Figure 4-4 shows how you can combine extracted individual signals with other digital data to create new digital waveforms.

Figure 4-4. Appending Two Digital Waveforms

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-24 ni.comThe top Digital Signal Subset VI extract s the first and second signals from
the digital waveform. The bottom Digi tal Signal Subset VI extracts the
fourth and fifth signals. The Append Digital Samples VI appends the first signal to the fourth signal, appends the second signal to the fifth signal, and plots the resulting two signals on a digital waveform graph.
Appending Digital Samples and Signals
Use the Append Digital Signals VI to append the samples in one digital signal to the end of samples of another digital signal. You can append signals with the same number of samples or of different numbers of samples. For example, if you have two digital signals that both consist of two rows of 8 bits, the resulting digital data consists of two rows of 16 bits.
If you combine two signals, one that consists of two rows of 8 bits and the other that consists of one row of 8 bits , the resulting digital data consists of
two rows of 16 bits. The Append Digital Signals VI pads the remaining columns in the second sample with the value you select in the default value
input.
Compressing Digital Data
Use the Compress Digital Data VI to compress digital data when you want to display two or more serial digital signals with the same bit sets on the same row to better visualize the data. For example, if you acquire 10 digital
waveform samples and the tenth waveform differs from the other nine, compressing the digital data helps you easily find which waveform is different. Compressing digital data al so conserves memory resources. Use
the Uncompress Digital Data VI to uncompress digital data you compress.
Searching for a Pattern
Use the Search for Digital Pattern VI to specify a digital pattern you want
to search for. For example, if you acquire a large digital waveform and want to see if any part of the digital waveform matches a certain pattern, wire that pattern to the digital pattern input of the Search for Digital Pattern VI to
discover any matches.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-25 LabVIEW User ManualReferences to Obje cts or Applications
Use the reference number controls and indicators located on the Refnum
and Classic Refnum palettes to work with file s, directories, devices, and
network connections. Use the control refnum to pass front panel object information to subVIs. Refer to the Controlling Front Panel Objects
section of Chapter 17, Programmatically Controlling VIs , for more
information about control refnums.
A reference number, or refnum, is a un ique identifier for an object, such as
a file, device, or network connection. When you open a file, device, or network connection, LabVIEW creates a refnum associated with that file,
device, or network connection. All ope rations you perform on open files,
devices, or network connections use the refnums to identify each object.
Use a refnum control or in dicator to pass a refnum into or out of a VI. For
example, use a refnum contro l or indicator to modify the contents of the file
that a refnum is referencing without closing and reopening the file.
Because a refnum is a temporary pointer to an open object, it is valid only
for the period during which the object is open. If you close the object, LabVIEW disassociates the refnum with the object, and the refnum becomes obsolete. If you open the object again, LabVIEW creates a new
refnum that is different from the first refnum.
LabVIEW remembers information associ ated with each refnum, such as
the current location for reading from or writing to the object and the degree
of user access, so you can perform concurrent bu t independent operations
on a single object. If a VI opens an object multiple times, each open
operation returns a different refnum.
Dialog Controls and Indicators
Use the dialog controls in dialog boxes you create. The dialog controls and indicators are designed specifically for use in dialog boxes and include ring
and spin controls, numeric slides and progress bars, listboxes, tables, string
and path controls, tab controls, tree controls, buttons, checkboxes, radio
buttons, and an opaque label that automatically matches the background color of its parent. These controls differ from those that appear on the front panel only in terms of appearance. Thes e controls appear in the colors you
have set up for your system.
Because the dialog controls chan ge appearance depending on which
platform you run the VI, the appearan ce of controls in VIs you create is
compatible on all LabVIE W platforms. When you run the VI on a different

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-26 ni.complatform, the dialog cont rols adapt their color and appearance to match the
standard dialog box controls for that platform.Select File»VI Properties and select Window Appearance from the
Category pull-down menu to hide the menu bar and scrollbars and to create
VIs that look and behave like standard dialog boxes for each platform. Select Editor Options from the Category pull-down menu to change the
style of control or indicator LabVIEW creates when you right-click a terminal and select Create»Control or Create»Indicator from the
shortcut menu. Select Tools»Options and select Front Panel from the top
pull-down menu to change the style of control or indicator LabVIEW
creates in new VIs when you righ t-click a termin al and select Create»
Control or Create»Indicator from the shortcut menu. Refer to the
Configuring the Appearance and Behavior of VIs section of Chapter 16,
Customizing VIs , for more information abou t configuring the appearance
and behavior of VIs.
Labeling
Use labels to identify objects on the front panel and block diagram.LabVIEW includes two kinds of labels—owned labels and free labels. Owned labels belong to and move with a particular object and annotate that
object only. You can move an owned label independently, but when you move the object that owns the label, the label moves with the object. You can hide owned labels, but you cannot copy or delete them independently of their owners. You also can display a unit label for numeric controls and
indicators by selecting Visible Items»Unit Label from the shortcut menu.
Refer to the Numeric Units and Strict Type Checking section of Chapter 5,
Building the Block Diagram , for more information about numeric units.
Free labels are not attached to any object, and you can create, move, rotate,
or delete them independently. Use them to annotate front panels and block diagrams.Free labels are useful for documenti ng code on the block diagram and for
listing user instructions on the front panel. Double-click an open space or
use the Labeling tool to create free labe ls or to edit either type of label.
Refer to the Labels section of Chapter 6, LabVIEW Style Guid e, in the
LabVIEW Development Guidelines manual for more information about
creating descriptive labels for a user interface.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-27 LabVIEW User ManualCaptions
Front panel objects also can have captio ns. Right-click the object and select
Visible Items»Caption from the shortcut menu to display the caption.
Unlike a label, a caption does not affect the name of the object, and you can
use it as a more descriptive object la bel. The caption does not appear on the
block diagram.
If you assign the object to a connector pane term inal, the caption appears
when you use the Wiring tool to move the cursor over the terminal on the block diagram. The caption also app ears next to the terminal in the Context
Help window. Refer to the Setting up the Connector Pane section of
Chapter 7, Creating VIs and SubVIs , for more informat ion about connector
pane terminals.
Text Characteristics
LabVIEW uses fonts already installed on your computer. Use the Text
Settings pull-down menu on the toolbar to change the attributes of text.
If you select objects or text before you make a selection from the Text
Settings pull-down menu, the changes apply to everything you select.
If you select nothing, the changes apply to the default font. Changing the default font does not change the font of existing labels. It affects only those
labels you create from that point on.
Select Font Dialog from the Text Settings pull-down menu on the front
panel to apply specific font styles to text you have selected. If you do not select any text, the Panel Default option contains a checkmark. If you
select Text Settings»Font Dialog from the block diagram without
selecting any objects, the Diagram Default option contains a checkmark.
You can set different fonts for the front panel and for the block diagram. For
example, you can have a small font on the block diagram and a large one
on the front panel.
The Text Settings pull-down menu contains the following built-in fonts:
Application Font —Default font used for Controls and Functions
palettes and text in new controls
System Font —Used for menus
Dialog Font —Used for text in dialog boxes
When you transfer a VI that contains one of these built-in fonts to another
platform, the fonts correspon d as closely as possible.

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-28 ni.comThe Text Settings pull-down menu also has Size, Style , Justify , and Color
submenu items.Font selections you make from any of these submenus apply to objects you selected. For example, if you select a new font while you have a knob and
a graph selected, the labels, scales, an d digital displays all change to the
new font.LabVIEW preserves as many font attrib utes as possible when you make a
change. For example, if you change several objects to the Courier font, the objects retain their size and styl es if possible. When you use the Font
dialog box, LabVIEW changes the objects you select to the text characteristics you select. If you select one of the built-in fonts or the current font, LabVIEW changes the sel ected objects to the font and size
associated with that font.When you work with objects that have multiple pieces of text, like slides,
font changes you make affect the ob jects or text you currently have
selected. For example, if you se lect the entire slide and select Style»Bold
from the Text Settings pull-down menu, the scale, digital display, and label
all change to a bold font. If you select only the label and select Bold , only
the label changes to a bold font. If you select text from a scale marker and
select Bold , all the markers change to a bold font.
Refer to the Fonts and Text Ch aracterist ics section of Chap ter 6, LabVI EW
Style Guide, in the LabVIEW Development Guidelines manual for more
information about using fonts and text characteristics to design a user
interface.
Designing User Interfaces
If a VI serves as a user interface or a dialog box, front panel appearance and
layout are important. Design the front panel so users can easily identify
what actions to perform. You can design front panels that look similar to instruments or other devices.Refer to the LabVIEW Development Guidelines manual for more
information about desi gning user interfaces.
Refer to the Case and Sequence Structures section of Chapter 8, Loops and
Structures , for information about using events to enhance the functionality
of user interfaces.

Chapter 4 Building the Front Panel
© National Instruments Corpor ation 4-29 LabVIEW User ManualUsing Front Panel Cont rols and Indicators
Controls and indicators are the main components of the front panel. When you design the front panel, consider how users interact with the VI and group controls and indicators logically. If several controls are related, add a
decorative border around them or put th em in a cluster. Use the decorations
located on the Decorations palette to group or separate objects on a front
panel with boxes, lines, or arrows. These objects are for decoration only and do not display data.Do not place front panel objects too cl osely together. Try to leave some
blank space to make the front panel easier to read. Blank space also
prevents users from accidentally cl icking the wrong control or button.
Assign specific names to buttons and use common terminology. Use names like Start, Stop, and Save instead of OK. Specific names make it easier for
users to use the VI.Use the default LabVIEW fonts and colors. LabVIEW replaces the built-in fonts with comparable font families on different platforms. If you select a different font, LabVIEW substitutes the closest match if the font is
unavailable on a computer. LabVIEW handles colors similarly to fonts. If a color is not available on a computer , LabVIEW replaces it with the closest
match. You also can use system colors to adapt the app earance of a front
panel to the system colors of any computer that runs the VI.Avoid placing objects on top of other objects. Placing a label or any other object over or partially covering a cont rol or indicator slows down screen
updates and can make the co ntrol or indicator flicker.
Refer to Chapter 6, LabVIEW Style Guide, of the LabVIEW Development
Guidelines manual for more information about using layout, fonts, and
color to design a user interface.
Designing Dialog Boxes
If a VI contains consecutive dialog boxes that appear in the same screen
location, organize them so that the buttons in the first dialog box do not directly line up with the buttons in the next dialog box. Users might double-click a button in the first dialog box and unknowingly click a button in the subsequent dialog box. Refer to the Dialog Controls and Indicators section of this chapter for more
informa tion about the dialog controls. Refer to the Dialog Boxes section of
Chapter 6, LabVIEW Style Guid e, in the LabVIEW Development

Chapter 4 Building the Front Panel
LabVIEW User Manual 4-30 ni.comGuidelines manual for more informa tion about using dialog boxes in a user
interface.
Selecting the Screen Size
When you design a VI, co nsider whether the front panel can display on
computers with different sc reen resolutions. Select File»VI Properties ,
select Window Size in the Category pull-down menu, and place a
checkmark in the Maintain Proportions of Window for Different
Monitor Resolutions checkbox to maintain front panel window
proportions relative to the screen resolution.Refer to the Sizing and Positioning section of Chapter 6, LabVIEW Style
Guide , in the LabVIEW Develop ment Guidelines manual for more
information about selecting the screen size of a user interface.

© National Instruments Corporation 5-1 LabVIEW User Manual5
Building the Block Diagram
After you build the front panel, you add code using graphical
representations of functions to contro l the front panel objects. The block
diagram contains this graphical source code.
For more information…
Refer to the LabVIEW Help for more information about designing and configuring
the block diagram.
Relationship between Front Panel Objects
and Block Diagram Terminals
Front panel objects appear as termin als on the block diagram. Double-click
a block diagram terminal to highlight the corresponding control or indicator on the front panel.
Terminals are entry and exit ports th at exchange information between the
front panel and block diagram. Data y ou enter into the front panel controls
enter the block diagram through the control terminals. During execution, the output data flow to the indicator terminals, where they exit the block diagram, reenter the front panel, a nd appear in front panel indicators.
Block Diagram Objects
Objects on the block diagram include terminals, nodes, and functions.
You build block diagrams by connecting the objects with wires.
Block Diagram Terminals
You can configure front panel controls or indicators to appear as icon or
data type terminals on the block diagram. By default, front panel objects appear as icon terminals. For example, a knob icon terminal, shown at left, represents a knob on the front panel. The DBL at the bottom of the terminal
represents a data type of double-precision, floating-point numeric.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-2 ni.comA DBL terminal, shown at left, represents a double-precision,
floating-point numeric control or indicator. Right-click a terminal and select Display Icon from the shortcut menu to remove the checkmark and
to display the data type for the terminal. Use icon terminals to display the types of front panel objects on the block diagram, in addition to the data types of the front panel objects. Use da ta type terminals to conserve space
on the block diagram.
Note Icon terminals are larger than data type terminals, so you might unintentionally
obscure other block diagram objects when you convert a data type terminal to an icon terminal.
A terminal is any point to which you can attach a wire, other than to another
wire. LabVIEW has control and indicator terminals, node terminals, constants, and specialized terminals on structures, such as the input and
output terminals on the Formula Node. You use wires to connect terminals and pass data to other terminals. Right-click a block diagram object and select Visible Items»Terminals from the shortcut menu to view the
terminals. Right-click the object and select Visible Items»Terminals
again to hide the terminals. This shortcut menu item is not available for expandable VIs and functions.
Control and Indicator Data Types
Table 5-1 shows the symbols for the different types of control and indicator terminals. The color and symbol of each terminal indicate the data type of
the control or indicator. Control terminals have a thicker border than indicator terminals. Also, arrows appear on front panel terminals to indicate
whether the terminal is a control or an indicator. An arrow appears on the
right if the terminal is a control, an d an arrow appears on the left if the
terminal is an indicator.
Table 5-1. Control and Indicator Terminals
Control Indicator Data Type ColorDefault
Values
Single-precision floating-point numeric Orange 0.0
Double-precision floating-point numeric Orange 0.0
Extended-precision floating-point numeric Orange 0.0
Complex single-precision floating-point numeric Orange 0.0 + i0.0

Chapter 5 Building the Block Diagram
© National Instruments Corporation 5-3 LabVIEW User ManualComplex double-precision floating-point
numericOrange 0.0 + i0.0
Complex extended-precision floating-point numeric Orange 0.0 + i0.0
8-bit signed integer numeric Blue 0
16-bit signed integer numeric Blue 0
32-bit signed integer numeric Blue 0
8-bit unsigned integer numeric Blue 0
16-bit unsigned integer numeric Blue 0
32-bit unsigned integer numeric Blue 0
<64.64>-bit time stamp Brown date and
time
(local)
Enumerated type Blue —
Boolean Green FALSE
String Pink empty
string
Array—Encloses the data ty pe of its elements in
square brackets and takes the color of that data type.Varies —
Cluster—Encloses several data types. Cluster data types are brown if all elements of the cluster are numeric or pink if th e elements of the cluster
are different types.Brown or Pink —
Path Aqua <Not A
Path>
Dynamic Blue —Table 5-1. Control and Indicator Terminals (Continued)
Control Indicator Data Type ColorDefault
Values

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-4 ni.comMany data types have a corresponding set of functions that can manipulate the data. Refer to the Functions Overview section of this chapter for
information about which functions to use with each data type.Refer to the Memory and Speed Opt imiza tion section of Chapter 6,
LabVIEW Style Guid e, in the LabVIEW Development Guidelines manual
for more information about selecting a data type to optimize memory usage.Waveform—Cluster of elem ents that carries the
data, start time, and ∆t of a waveform. Refer to
the Waveform Data Type section of Chapter 12,
Graphs and Charts , for more information about
the waveform data type.Brown —
Digital waveform Dark Green —
Digital data Dark Green —
Reference number (refnum) Aqua —
Variant—Stores the control or indicator name, information about the data type from which you converted, and the data itself. Refer to the
Handling Variant Data section of this chapter for
more information about the variant data type.Purple —
I/O name—Passes DAQ channel names, VISA resource names, and IVI logical names you configure to I/O VIs to communicate with an
instrument or a DAQ device. Refer to the I/O
Name Controls and Indicators section of
Chapter 4, Building the Front Panel , for more
information about the I/O name data type.Purple —
Picture—Displays pictures that can contain lines, circles, text, and other types of graphic shapes. Refer to the Using the Picture Indicator section
of Chapter 13, Graphics and Sound VIs , for more
information about the picture data type.Blue —Table 5-1. Control and Indicator Terminals (Continued)
Control Indicator Data Type ColorDefault
Values

Chapter 5 Building the Block Diagram
© National Instruments Corporation 5-5 LabVIEW User ManualConstants
Constants are terminals on the block di agram that supply fixed data values
to the block diagram. Universal constants are constants with fixed values, such as pi ( π) and infinity ( ∞). User-defined constants are constants you
define and edit before you run a VI.
Label a constant by right-clicking the constant and selecting Visible
Items»Label from the shortcut menu. Universal constants have
predetermined values for their labels that you can edit by using the Operating tool or the Labeling tool.
Most constants are located at the bottom or top of their palettes.
Universal Constants
Use universal constants for mathemat ical computations and formatting
strings or paths. LabVIEW includes the following types of universal constants:
Universal numeric constants —A set of high-precision and
commonly used mathematical and phys ical values, such as the natural
logarithm base (e) and the speed of light. The universal numeric
constants are located on the Additional Numeric Constants palette.
Universal stri ng constants —A set of commonly used
non-displayable string ch aracters, such as line f eed and carriage return.
The universal string cons tants are located on the String palette.
Universal file constants —A set of commonly used file path values,
such as Not a Path, Not a Refnum, and Default Directory. The universal file constants are located on the File Constants palette.
User-Defined Constants
The Functions palette includes constants organized by type, such as
Boolean, numeric, ring, enum erated type, color box, string, array, cluster,
and path constants.
Create a user-defined constant by right -clicking an input terminal of a VI
or function and selecting Create Constant from the shortcut menu. You
cannot change the value of user-defin ed constants when the VI is running.
You also can create a constant by dragging a front panel control to the block
diagram. LabVIEW creates a constant th at contains the value of the front
panel control at the time you dragged it to the block diagram. The front panel control remains on the front panel. Changing the value of the control does not affect the constant value and vice versa.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-6 ni.comUse the Operating or Labeling tool to c lick the constant and edit its value.
If automatic tool selection is enabled, double-click the constant to switch to
the Labeling tool and edit the value.
Block Diagram Nodes
Nodes are objects on the block diagram that have inputs and/or outputs and perform operations wh en a VI runs. They are analogous to statements,
operators, functions, and subroutines in text-based programming languages. LabVIEW includes the following types of nodes:
Functions —Built-in execution elements, comparable to an operator,
function, or statement. Refer to the Functions Overview section of this
chapter for more information about the functions available in LabVIEW.
SubVIs —VIs used on the block diagram of another VI, comparable to
subroutines. Refer to the SubVIs section of Chapter 7, Creating VIs
and SubVIs , for more information about using subVIs on the block
diagram.
Structures —Process control elements, such as Flat and Stacked
Sequence structures, Case structures, For Loops, or While Loops. Refer to Chapter 8, Loops and Structures , for more information about
using structures.
Formula Nodes —Resizable structures for entering equations directly
into a block diagram. Refer to the Formula Nodes section of
Chapter 21, Formulas and Equations , for more information about
using Formula Nodes.
Expression Nodes —Structures for calcula ting expressions, or
equations, that contain a single variable. Refer to the Expression Nodes
section of Chapter 21, Formulas and Equations , for more information
about using Expression Nodes.
Property Nodes —Structures for setting or finding properties of a
class. Refer to the Property Nodes section of Chapter 17,
Programmatically Controlling VIs , for more information about using
Property Nodes.
Invoke Nodes —Structures for executing methods of a class. Refer to
the Invoke Nodes section of Chapter 17, Programmatically
Controlling VIs , for more information about using Invoke Nodes.
Code Interface Nodes (CINs) —Structures for calling code from
text-based programming languages. Refer to the Code Interface Node
section of Chapter 20, Calling Code from Text-Based Programming

Chapter 5 Building the Block Diagram
© National Instruments Corporation 5-7 LabVIEW User ManualLanguages , for more information about cal ling code from text-based
programming languages.
Call By Reference Nodes —Structures for calling a dynamically
loaded VI. Refer to the Call By Reference Nodes and Strictly Typed VI
Refnums section of Chapter 17, Programmatically Controlling VIs ,
for more information about usin g Call By Reference Nodes.
Call Library Nodes —Structures for calling most standard shared
libraries or DLLs. Refer to the Call Library Function Node section of
Chapter 20, Calling Code from Text-Based Programming Languages ,
for more information about using Call Library Nodes.
Functions Overview
Functions are the essential operati ng elements of LabVIEW. Function
icons on the Functions palette have pale yellow backgrounds and black
foregrounds. Functions do no t have front panels or block diagrams but do
have connector panes. You cannot open nor edit a function.
The Functions palette also includes the VIs that ship with LabVIEW. Use
these VIs as subVIs when you build data acquisition, instrument control, communication, and other VIs. Refer to the Using Built-In VIs and
Functions section of Chapter 7, Creating VIs and SubVIs , for more
information about using the built-in VIs.
Numeric Functions
Use the Numeric functions to create and perform arithmetic, trigonometric, logarithmic, and complex mathematical operations on numbers and to convert numbers from one data type to another.
Boolean Functions
Use the Boolean functions to perform l ogical operations on single Boolean
values or arrays of Boolean valu es, such as the following tasks:
 Change a TRUE value to a FALSE value and vice versa.
 Determine which Boolean value to re turn if you receive two or more
Boolean values.
 Convert a Boolean value to a number (either 1 or 0).
 Perform compound arithmetic on two or more Boolean values.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-8 ni.comString Functions
Use the String functions to perform the following tasks:
 Concatenate two or more strings.
 Extract a subset of strings from a string. Search for and replace characters or subsets of strings in a string.
 Convert numeric data into strings.
 Format a string for use in a word pr ocessing or spread sheet application.
Refer to the Strings section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about using the String
functions.
Array Functions
Use the Array functions to create an d manipulate arrays, such as the
following tasks:
 Extract individual data elements from an array.
 Add individual data elements to an array. Split arrays.
Refer to the Arrays section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about using the Array
functions.
Cluster Functions
Use the Cluster functions to create and manipulate clusters, such as the
following tasks:
 Extract individual data elements from a cluster.
 Add individual data elements to a cluster. Break a cluster out into it s individual data elements.
Refer to the Clusters section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about using the Cluster
functions.

Chapter 5 Building the Block Diagram
© National Instruments Corporation 5-9 LabVIEW User ManualComparison Functions
Use the Comparison functions to compare Boolean values, strings,
numerics, arrays, and clusters.
Refer to Appendix C, Comparison Functions , for more information about
using the Comparison functions.
Time and Dialog Functions
Use the Time and Dialog functions to perform the following tasks:
 Manipulate the speed at which an operation executes. Retrieve time and date informa tion from your computer clock.
 Create dialog boxes to prom pt users with instructions.
The Time & Dialog palette also includes the Error Handler VIs. Refer to
the Error Checking a nd Error Handling section of Chapter 6, Running and
Debugging VIs , for more information about using the Error Handler VIs.
File I/O Functions
Use the File I/O functions to perform the following tasks:
 Open and close files.
 Read from and write to files.
 Create directories and files y ou specify in the path control.
 Retrieve directory information.
 Write strings, numbers, arrays, and clusters to files.
The File I/O palette also includes VIs that perform common file I/O tasks.
Refer to Chapter 14, File I/O , for more information about using the File I/O
VIs and functions.
Waveform Functions
Use the Waveform functions to perform the following tasks:
 Build waveforms that include the waveform values, channel
information, and timing information.
 Extract individual data elements from a waveform.
 Edit individual data elements of a waveform.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-10 ni.comRefer to Chapter 5, Creating a Typical Measurement Application , of the
LabVIEW Measuremen ts Manual for more information about crea ting and
using waveforms in VIs.
Application Control Functions
Use the Application Control functions to programmatically control VIs and LabVIEW applications on your local computer or across a network. Refer to Chapter 17, Programmatically Controlling VIs , for more information
about using the Application Control functions.
Advanced Functions
Use the Advanced functions to call code from libraries, such as dynamic
link libraries (DLLs), to manipulate LabVIEW data for use in other applications, to create and manipulate Windows registry keys, and to call a section of code from text-based pr ogramming languages. Refer to the
Using External Co de in LabVIEW manual for more information about
using the Advanced functions.
Adding Terminals to Functions
You can change the number of terminals for some functions. For example,
to build an array with 10 elements, you must add 10 terminals to the Build Array function.You can add terminals to expandable VIs and functions by using the Positioning tool to drag the top or bottom borders of the function up or down, respectively. You also can use the Positioning tool to remove terminals from expandable VIs and functions, but you cannot remove a terminal that is already wired. You must first delete the existing wire to remove the terminal.You also can add or remove terminals by right-clicking one of the terminals of the function and selecting Add Input , Add Output , Remove Input , or
Remove Output from the shortcut menu. Depending on the function, you
can add terminals for inputs, outputs, or refnum controls. The Add Input
and Add Output shortcut menu items add a terminal immediately after the
terminal you right-clicked. The Remove Input and Remove Output
shortcut menu items remove the terminal you right-clicked. If you use the shortcut menu items to remove a wired terminal, LabVIEW removes the terminal and disconnects the wire.

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-11 LabVIEW User ManualUsing Wires to Link Block Diagram Objects
You transfer data among block diagra m objects through wires. Each wire
has a single data source, but you can wire it to many VIs and functions that read the data.You must wire all re quired block diagram terminals.
Otherwise, the VI is broken and will not run. Display the Context Help
window to see which terminals a block diagram node requires. The labels of required terminals appear bold in the Context Help window. Refer to
the Setting Required, Recommended, and Optional Inputs and Outputs
section of Chapter 7, Creating VIs and SubVIs , for more information
about required terminals. Refer to the Correcting Broken VIs section of
Chapter 6, Running and Debugging VIs , for more information about
broken VIs.Wires are different colors, styles, and thicknesses depending on their data types. A broken wire appears as a dashed black line with a red
X in the
middle. The arrows on ei ther side of the red X indicate the direction of the
data flow, and the color of the arrows indicate the data type of the data
flowing through the wi re. Refer to the LabVIEW Quick Reference Card for
more information about wire data types.Wire stubs are the truncated wires that appear next to unwired terminals
when you move the Wiring tool over a VI or function node. They indicate the data type of each terminal. A tip st rip also appears, listing the name of
the terminal. After you wire a terminal, the wire stub for that terminal does
not appear when you move the Wiring tool over its node.A wire segment is a single horizontal or vertical piece of wire. A bend in a
wire is where two segments join. The point at which two or more wire segments join is a junction. A wire br anch contains all the wire segments
from junction to junction, terminal to junction, or terminal to terminal if there are no junctions in between. Figure 5-1 shows a wire segment, bend,
and junction.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-12 ni.com
Figure 5-1. Wire Segment, Be nd, and Junction
While you are wiring a terminal, bend the wire at a 90 degree angle once by moving the cursor in either a vertical or horizontal direction. To bend a wire in multiple directions, click the mouse button to set the wire and then move the cursor in the new direction. You can repeatedly set the wire and
move it in new directions.To undo the last point where you set the wire, press the <Shift> key and click anywhere on the block diagram.
(Mac OS) Press the <Option> key and click. (UNIX and Linux) Click the
middle mouse button.When you cross wires, a small gap app ears in the first wire you drew to
indicate that the first wire is under the second wire.
Caution Crossing wires can clutter a block diagram and make the block diagram difficult
to debug.
Refer to the Wiring Techn iques section of Chapter 6, LabVIEW Style
Guide , in the LabVIEW Develop ment Guidelines manual for more
information about wiring tips and techniques.
Automatically Wiring Objects
LabVIEW automatically wires object s as you place them on the block
diagram. You also can automatically wire objects already on the block
diagram. LabVIEW connects the termin als that best match and leaves
terminals that do not match unconnected.1 Segment 2B e n d 3 Junction
1
1
3
2

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-13 LabVIEW User ManualAs you move a selected object close to other objects on the block diagram,
LabVIEW draws temporary wires to show you valid connections. When you release the mouse button to place the object on the block diagram,
LabVIEW automatically connects the wires.
Toggle automatic wiring by pressi ng the space bar while you move an
object using the Positioning tool.
By default, automatic wiring is enable d when you select an object from the
Functions palette or when you copy an ob ject already on the block diagram
by pressing the <Ctrl> key and dragging the object. Automatic wiring is disabled by default when you use the Positioning tool to move an object already on the block diagram.
(Mac OS) Press the <Option> key. (Sun) Press the <Meta> key. (Linux) Press
the <Alt> key.
You can disable automatic wiring by selecting Tools»Options and
selecting Block Diagram from the top pull-down menu.
Manually Wiring Objects
Use the Wiring tool to manually connect the terminals on one block
diagram node to the terminals on another block diagram node. The cursor point of the tool is the tip of the unwound wire spool. When you move the Wiring tool over a term inal, the terminal blin ks. When you move the
Wiring tool over a VI or function terminal, a tip strip also appears, listing the name of the terminal. If wiring to the terminal would create a broken
wire, the cursor changes to a wire spool with a warning symbol. You can create the broken wire, but you must co rrect the broken wire before you can
run the VI. Refer to the Correcting Broken Wires section of this chapter for
more information about correcting broken wires.
Use the Context Help window to determine ex actly where to connect
wires. When you move the cursor over a VI or function, the Context Help
window lists each terminal of the VI or function. The Context Help
window does not display terminals for expandable VIs and functions, such as the Build Array function. Click the Show Optional Terminals and Full
Path button in the Context Help window to display the optional terminals
of the connector pane. Refer to the Setting Required, Recommended,
and Optional Inputs and Outputs section of Chapter 7, Creating VIs and
SubVIs , for more information about optional terminals.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-14 ni.comRouting Wires
LabVIEW automatically finds a route fo r a wire as you wire it. LabVIEW
routes a wire around existing objects on the block diagram, such as loops and structures. LabVIEW also routes a wire to decrease the number of
bends in the wire. When possible, auto matically routed wires from control
terminals exit the right side of the te rminal, and automatically routed wires
to indicator terminals enter the left side of the terminal.
To automatically route an existing wi re, right-click the wire and select
Clean Up Wire from the shortcut menu.
Press the <A> key after you start a wi re to temporarily disable automatic
wire routing and route a wire manually . Press the <A> key again to enable
automatic wire routing for the wire. After you end the wire, LabVIEW enables automatic wire routing again. You also can temporarily disable
automatic routing after you click to start or set a wire by holding down the mouse button while you wire to another terminal or set point and then releasing the mouse button. After you release the mouse button, LabVIEW enables automatic wire routing again.
You can disable automatic wire routing for all new wires by selecting
Tools»Options and selecting Block Diagram from the top pull-down
menu.
If you disable automatic wire routing, you can wire terminals vertically or
horizontally depending on the direction in which you first move the Wiring tool. The wire connects to the center of the terminal, regardless of where
you click the terminal. After you clic k the terminal, press the spacebar to
switch between the horizont al and vertical direction.
You also can press the spacebar to switch between the horizontal and
vertical direction if automatic wire ro uting is enabled. If LabVIEW finds a
route for the wire in the new direction, the wire switches to that direction.
Selecting Wires
Select wires by using the Positioning tool to single-click, double-click, or
triple-click them. Single-clicking a wi re selects one segment of the wire.
Double-clicking a wire selects a branch . Triple-clicking a wire selects the
entire wire.
Correcting Broken Wires
A broken wire appears as a da shed black line with a red X in the middle.
Broken wires occur for a variety of reas ons, such as when you try to wire

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-15 LabVIEW User Manualtwo objects with incompatible data types. Move the Wiring tool over a
broken wire to display a tip strip that describes why the wire is broken. This information also appears in the Context Help window when you move the
Wiring tool over a broken wire. Right-click the wire and select List Errors
from the shortcut menu to display the Error list window. Click the Help
button for more information about why the wire is broken.
Triple-click the wire with the Positioning tool and press the <Delete> key
to remove a broken wire. You also can right-click the wire and select from
shortcut menu options such as Delete Wire Branch , Create Wire Branch ,
Remove Loose Ends , Clean Up Wire , Change to Control , Change to
Indicator , Enable Indexing at Source , and Disable Indexing at Source .
These options change depending on the reason for the broken wire.
You can remove all broken wires by selecting Edit»Remove Broken
Wires or by pressing the <Ctrl-B> keys.
(Mac OS) Press the <Command-B>
keys. (UNIX) Press the <Meta-B> keys.
Caution Use caution when removing all broken wi res. Sometimes a wire appears broken
because you are not finished wiring the block diagram.
Coercion Dots
Coercion dots appear on block diagram nodes to alert you that you wired
two different numeric data types t ogether. The dot means that LabVIEW
converted the value passed into the node to a differen t representation.
For example, the Add function expects two double-precision floating-point inputs. If you change one of those inputs to an integer, a coercion dot appears on the Add function.

Figure 5-2. Coercion Dot
The block diagram places a coercion dot on the border of a terminal where
the conversion takes place to indicate that automatic numeric conversion
occurred. Because VIs and functions can have many terminals, a coercion
dot can appear inside an icon if you wire through one terminal to another terminal.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-16 ni.comCoercion dots also appear on the terminal when you wire any data type to
a variant terminal, except when you wire two variants together. Refer to the Handling Variant Data section of this chapter for more information about
the variant data type.
Coercion dots can cause a VI to use more memory and increase its run time.
Try to keep data types consistent in your VIs.
Polymorphic VIs and Functions
Polymorphic VIs and functions can adjust to input data of different data types. Most LabVIEW structures ar e polymorphic, as are some VIs and
functions.
Polymorphic VIs
Polymorphic VIs accept different data types for a single input or output
terminal. A polymorphic VI is a collection of subVIs with the same connector pane patterns. Each subVI is an instance of the polymorphic VI.
For example, the Read Key VI is polymorphic. Its default value terminal
accepts Boolean; double-pr ecision, floating-point numeric; 32-bit signed
integer numeric; path; string; or 32-bit unsigned integer numeric data.
For most polymorphic VIs, the data types you wire to the inputs of the
polymorphic VI determine the instance to use. If the polymorphic VI does not contain a subVI compatible with that data type, a broken wire appears. If the data types you wire to the polymorphic VI inputs do not determine the instance to use, you must select the instance manually. If you manually
select an instance of a polymorphic VI, the VI no longer behaves as a
polymorphic VI because it accepts and retu rns only the data types of the
instance you select.
To select the instance manually, righ t-click the polymorphic VI, select
Select Type from the shortcut menu, and se lect the instance to use. You
also can use the Operating tool to c lick the polymorphic VI selector, shown
at left, and select an instance from the shortcut menu. Right-click the
polymorphic VI on the block diagram and select Visible Items»
Polymorphic VI Selector from the shortcut menu to display the selector.
To change the polymorphic VI to accept all the handled data types again, right-click the polymorphic VI and select Select Type»Automatic from
the shortcut menu or use the Operatin g tool to click the polymorphic VI
selector and select Automatic from the shortcut menu.

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-17 LabVIEW User ManualBuilding Polymorphic VIs
Build polymorphic VIs when you perform the same operation on different
data types.
Note You can build and edit polymorphic VIs only in the LabVIEW Professional
Development System.
For example, if you want to perform the same mathematical operation on
a single-precision floating-point nume ric, an array of numerics, or a
waveform, you could cr eate three separate VIs—Compute Number,
Compute Array, and Compute Waveform. When you need to perform the operation, you place one of these VIs on the block diagram, depending on
the data type you use as an input.
Instead of manually placing a version of the VI on the block diagram, you
can create and use a single polymorphic VI. The polymorphic Compute VI contains three instances of th e VI, as shown in Figure 5-3.
Figure 5-3. Example of a Polymorphic VI
The Compute VI statically links the co rrect instance of the VI based on the
data type you wire to the Compute subVI on the block diagram, as shown in Figure 5-4.1 Compute
2 Compute Number3 Compute Array4 Compute Waveform
1
2 3 4

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-18 ni.comFigure 5-4. Polymorphic VI Calling a SubVI
Polymorphic VIs differ from most VIs in that they do not have a block
diagram or a front panel.
Consider the following issues when you build polymorphic VIs:
 All VIs you include in the polymorphic VI must have the same
connector pane pattern, because the connector pane of the
polymorphic VI matches the connector pane of the VIs you use to create the polymorphic VI.
 The inputs and outputs on the connector pane of each instance of the
VI must correspond to the inputs and outputs on the connector pane of the polymorphic VI.
 The VIs you use to build polymorphic VIs do not have to consist of the
same subVIs and functions.
 Each of the front panels of the VIs do not have to have the same
number of objects. However, each fron t panel must have at least the
same number of controls and indicators that make up the connector pane of the polymorphic VI.
 You can create an icon for a polymorphic VI.
 You cannot use polymorphic VIs in other polymorphic VIs.
When you generate complete docume ntation for a VI that includes a
polymorphic subVI, the polymorphic VI and its instances appear in the list of subVIs section of the documentation.1 Compute
2 Compute Number3 Compute Array4 Compute Waveform
1
2 3 4

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-19 LabVIEW User ManualPolymorphic Functions
Functions are polymorphic to varying degrees—none, some, or all of their
inputs can be polymorphic. Some function inputs accept numerics or Boolean values. Some accept numerics or strings. Some accept not only
scalar numerics, but also arrays of numer ics, clusters of numerics, arrays of
clusters of numerics, and so on. So me accept only one-dimensional arrays,
although the array elements can be of any type. Some functions accept all
types of data, including complex numerics. Refer to Appendix B, Polymorphic Functions , for more information about polymorphic
functions.
Express VIs
Use the Express VIs for common m easurement tasks. Express VIs are
function nodes that require minimal wiring because you configure them
with dialog boxes. The inputs and outputs for the Express VI depend on how you configure the VI. Express VI s appear on the block diagram as
expandable nodes with icons surrounded by a blue field.Refer to the Displaying SubVIs and Express VIs as Icons or Expandable
Nodes section of Chapter 7, Creating VIs and SubVIs , for more information
about expandab le nodes. Refer to the Getting St arted with LabVIEW
manual for more information about Express VIs.
Creating Express VIs as SubVIs
You can create a subVI from an Expre ss VI configuration. For example,
you might want to save the configuration of the Write LabVIEW Measurement File Express VI for use as a subVI in other VIs you build
rather than reconfiguring the Expr ess VI every time. Right-click the
Express VI and select Open Front Panel from the shortcut menu to create
a subVI from an Express VI.When you create a subVI from an Expr ess VI, the front panel of the subVI
appears. You then can edit the VI and sa ve it. To save the values entered in
controls, select Operate»Make Current Values Default or right-click
each control and select Make Current Value Default from the shortcut
menu. A new subVI displayed as an expandable node replaces the Express VI on the block diagram.After you create a VI from an Expr ess VI, you cannot convert the subVI
back into an Express VI.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-20 ni.comDynamic Data Type
The dynamic data type appears as a dark blue terminal, shown at left. Most
Express VIs accept and/or return the dy namic data type. You can wire the
dynamic data type to any indicato r or input that accepts numeric,
waveform, or Boolean data. Wire the dynamic data type to an indicator that can best present the data. Indicators include a graph, chart, or numeric
indicator.
The dynamic data type is for use with Express VIs. Most other the VIs and
functions that ship with LabVIEW do not accept this data type. To use a
built-in VI or function to analyze or process the data the dynamic data type
includes, you must convert the dynamic data type. Refer to the Converting
from Dynamic Data section of this chapter for more information on
converting from dynamic data type.
In addition to the data associated with a signal , the dynamic data type
includes attributes that provide inform ation about the signal, such as the
name of the signal or the date and time the data was acquired. Attributes specify how the signal appears on a graph or chart. For example, if you use the DAQ Assistant Express VI to acquire a signal and plot that signal on a
graph, the name of the signal appears in the plot legend of the graph, and
the x-scale adjusts to display timing in formation associated with the signal
in relative or absolute time based on the attributes of the signal. If you use the Spectral Measurements Express VI to perform an FFT analysis on the
signal and plot the resulting value on a graph, the x-s cale automatically
adjusts to plot the signal in the freque ncy domain based on the attributes of
the signal. Right-click a dynamic data type output terminal of a VI or function on the block diagram and select Create»Graph Indicator to
display the data in a graph or select Create»Numeric Indicator to display
the data in a numeric indicator.
Table 5-2 lists indicators that accept the dynamic data type and the type
of data the dynamic data type can contain, and describes how indicators handle the data.

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-21 LabVIEW User ManualConverting from Dynamic Data
Use the Convert from Dynamic Data Express VI to convert the dynamic
data type to numeric, waveform, and ar ray data types for use with other VIs
and functions. When you place the Conv ert from Dynamic Data Express VI
on the block diagram, the Configure Convert from Dynamic Data dialog
box appears. The Configure Convert from Dynamic Data dialog box
displays options that let you specify how you want to format the data that the Convert from Dynamic Data Express VI returns.
For example, if you acquired a sine wave from a data acquisition device,
select the Single Waveform option on the Configure Convert from
Dynamic Data dialog box. Wire the Waveform output of the Convert from
Dynamic Data Express VI to a functio n or VI that accepts the waveform
data type. If you acquired a collection of temperatures from different channels using a DAQ device, select the Most recent values from each
channel and Floating point numbers (double) options. Then wire the
Array output of the Convert from Dynamic Data Express VI to a function
or VI that accepts a numer ic array as an input.Table 5-2. Dynamic Data Type Indicators
Data in Dynamic
Data Type Indicator Result
Single numeric value Graph Plots the single value, incl udes time stamp and attributes
Single channel Plots the whole wave form, includes time st amp and attributes
Multiple channels Plots all the data, includes time stamps and attributes
Single numeric
valueNumeric Indicator Displays the single value
Single channel Displays the last value of the channel’s data
Multiple channels Displays the last value of the first channel’s data
Single numeric value Boolean Indicator Displays a TRUE value if nume ric value is greater than or
equal to .5
Single channel Displays a TRUE value if the last value of channel’s data is greater than or equal to .5
Multiple channels Displays a TRUE value if the last value of the first channel’s data is greater than or equal to .5

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-22 ni.comWhen you wire a dynamic data type to an array indicator, LabVIEW
automatically places the Convert from Dynamic Data Express VI on the
block diagram. Double-click the Convert from Dynamic Data Express VI to open the Configure Convert from Dynamic Data dialog box to control
how the data appears in the array.
Converting to Dynamic Data
Use the Convert to Dynamic Data Expre ss VI to convert numeric, Boolean,
waveform, and array data types to the dynamic data type for use with Express VIs. When you place the Convert to Dynamic Data Express VI on
the block diagram, the Configure Convert to Dynamic Data dialog box
appears. Use this dialog box to select the kind of data to convert to the dynamic data type.
For example, if you acquire a sine wave using the Analog Input Traditional
NI-DAQ VIs and want to use a Signal Analysis Express VI to analyze the
signal, select the Single Waveform option on the Configure Convert to
Dynamic Data dialog box. Then wire the Dynamic Data Type output to
an Express VI that accepts the dyn amic data type as an input.
Handling Variant Data
Variant data do not conform to a specific data type and can contain
attributes. LabVIEW represents variant data with the variant data type. The variant data type differs from ot her data types because it stores the
control or indicator name, information about the data type from which you converted, and the data itself, which allows LabVIEW to correctly convert
the variant data type to the data type you want. For example, if you convert a string data type to a variant data type, the variant data type stores the text and indicates that the text is a string.
Use the Variant functions to create a nd manipulate variant data. You can
convert any LabVIEW data type to the variant data type to use variant data in other VIs and functions. Several polymorphic functions return the variant data type.
Use the variant data type when it is important to manipulate data
independently of data type, such as when you transmit or store data; read and/or write to unknown devices; store information in a stack, queue, or notifier; or perform operations on a heterogeneous set of controls.
You also can use the Flatten to String function to convert a data type to a
string data type to represent data inde pendently of type. Flattening data to

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-23 LabVIEW User Manualstrings is useful when you use TCP/IP to transmit data because the protocol
understands only strings.However, using flattened data has limitations because LabVIEW cannot
coerce flattened data when the original data type does not match the data type to which you want to convert. Also, attempting to unflatten a flattened integer as an extended-precision floating-point number fails. Refer to the Flattened Data section of the LabVIEW Data Storage App lication N ote for
more information about flattening and unflattening data.Another advantage of using the variant data type is the ability to store
attributes of the data. An attribute is information about the data that the variant data type stores. For example, if you want to know the time when a piece of data was created, you can store the data as variant data and add an attribute called Time to store the time string. The attribute data can be of
any type. Use variant attributes when you want to sort the data by a
particular attribute, identify the device or application that generated the data, or filter the data for only those variants with a particular attribute.
Numeric Units and Strict Type Checking
You can associate physical units of measure, such as meters or
kilometers/second, with any numeric control or indicator that has floating-point representation.Units for a control appear in a separate owned label, called the unit label. Display the unit label by right-clicking the control and selecting Visible
Items»Unit Label from the shortcut menu. Right-click the unit label and
select Build Unit String from the shortcut menu to edit the unit label.
When LabVIEW displays the unit label, you can enter a unit using standard abbreviations such as
m for meters, ft for feet, s for seconds, and so on.
Note You cannot use units in Formula Nodes.
Units and Strict Type Checking
When you associate units with an object, you can wire only objects that have compatible units. LabVIEW uses strict type checking to verify that units are compatible. If you wire two objects with incompatible units, LabVIEW returns an error. For example, LabVIEW returns an error if you wire an object with mile as its unit type to an object with liter as its unit type, because a mile is a unit of di stance and a liter is a unit of volume.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-24 ni.comFigure 5-5 shows wiring objects with compatible units. In this figure,
LabVIEW automatically scales the distance indicator to display kilometers
instead of meters because kilomete rs is the unit for the indicator.

Figure 5-5. Wiring Objects with Compatible Units
An error occurs in Figure 5-6 because distance has a unit type of seconds.
To correct the error, change second s to a unit of distance, such as
kilometers, as shown in Figure 5-5.
Figure 5-6. Wiring Objects with Incompatible Units Results in Broken Wires
Some VIs and functions are ambiguous with respect to units. You cannot
use these VIs and functions with other terminals that have units. For example, the Increment function is ambiguous with respect to units. If you

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-25 LabVIEW User Manualuse distance units, the Increment func tion cannot tell whether to add one
meter, one kilometer, or one foot. B ecause of this ambi guity, you cannot use
the Increment function and other func tions that increm ent or decrement
values with data that have associated units.
To avoid ambiguity in this example, use a numeric constant with the proper
unit and the Add function to create your own increment unit function, as shown in Figure 5-7.
Figure 5-7. Creating an Increment Function with Units
Block Diagram Data Flow
LabVIEW follows a dataflow model for running VIs. A block diagram
node executes when all its inputs are available. When a node completes execution, it supplies data to its output terminals and passes the output data to the next node in the dataflow path.
Visual Basic, C++, JA V A, and most other text-based programming
languages follow a control flow model of program execution. In control flow, the sequential order of progra m elements determines the execution
order of a program.
In LabVIEW, because the flow of data rather than the se quential order of
commands determines the execution order of block diagram elements, you can create block diagrams that have simultaneous operations. For example,
you can run two While Loops simultaneously and display the results on the front panel.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-26 ni.com
LabVIEW is a multitasking and multithreaded system, running multiple execution threads and multiple VIs simultaneously. Refer to the Using
LabVIEW to Create Mult ithrea ded VIs for Max imum Perform ance and
Reliability Application Note for more information about performing tasks
simultaneously in LabVIEW.
Data Dependency and Ar tificial Data Dependency
The control flow model of execution is instruction driven. Dataflow execution is data driven, or data depe ndent. A node that receives data from
another node always executes after the other node completes execution.Block diagram nodes not connected by wires can execute in any order.
Although the LabVIEW Development Guidelines manual recommends
using a left-to-right and top-to-bottom layout, nodes do not necessarily execute in left-to-right, top-to-bottom order.You can use a sequence structure to control execution order when natural
data dependency does not exist. Refer to the Sequence Structures section
of Chapter 8, Loops and Structures , for more information about sequence
structures. You also can use flow-through parameters to control execution order. Refer to the Flow-Through Parameters section of Chapter 14, File
I/O, for more information about flow-through parameters.

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-27 LabVIEW User ManualYou also can create an artificial data dependency, in which the receiving
node does not actually use the data received. Instead, the receiving node
uses the arrival of data to trigger its execution. Refer to the Timing Template (data dep) VI in the
examples\general\structs.llb for an
example of using artificial data dependency.
Missing Data Dependencies
Do not assume left-to-right or top-to-bottom execution when no data dependency exists. Make sure you exp licitly define the sequence of events
when necessary by wiring the dataflow.
In the following example, no dependency exists between the Read File
function and the Clos e File function because the Read File function is not
wired to the Close File function. This example might not work as expected because there is no way to determin e which function runs first. If the
Close File function runs first, the Read File function does not work.
The following block diagram establishes a dependency by wiring an output
of the Read File function to the Clos e File function. The Close File function
does not run until it receives the ou tput of the Read File function.
Data Flow and Managing Memory
Dataflow execution makes managing memo ry easier than the control flow
model of execution. In LabVIEW, you do not allocate variables or assign values to them. Instead , you create a block diag ram with wires that
represent the transition of data.

Chapter 5 Building the Block Diagram
LabVIEW User Manual 5-28 ni.comVIs and functions that generate data automatically allocate the memory for that data. When the VI or functio n no longer uses the data, LabVIEW
deallocates the associated memory. When you add new data to an array or
a string, LabVIEW allocates enough memory to manage the new data.
Because LabVIEW automatically handles memory management, you have less control over when memory is allocated or deallocated. If your VI works with large sets of data, you need to understand when memory allocation takes place. Understanding the principles involved can help you
write VIs with significantly smaller memory requirements. Minimizing memory usage can help you increas e the speed at which VIs run.
Refer to the LabVIEW Perform ance and Mem ory Man ageme nt Application
Note for more information about memory allocation. Refer to the Memory
and Speed Optimization section of Chap ter 6, LabVIEW Sty le Guide, in the
LabVIEW Development Guidelines manual for more information about
optimizing memory usage as you develop.
Designing the Block Diagram
Use the following guidelines to design block diagrams: Use a left-to-right and top-to-bottom layout. Although the positions of
block diagram elements do not determine execution order, avoid wiring from right to left to keep the block diagram organized and easy
to understand. Only wires and structures determine execution order.
 Avoid creating a block diagram that occupies more than one or two
screens. If a block diagram beco mes large and complex, it can be
difficult to understand or debug.
 Decide if you can reuse some components of the block diagram in
other VIs or if a section of the block diagram fits together as a logical component. If so, divide the block diagram into subVIs that perform specific tasks. Using subVIs helps you manage changes and debug the block diagrams quickly. Refer to the SubVIs section of Chapter 7,
Creating VIs and SubVIs , for more information about subVIs.
 Use the error handling VIs, functions, and parameters to manage errors
on the block diagram. Refer to the Error Checking and Error Handling
section of Chapter 6, Running and Debugging VIs , for more
information about handling errors.
 Improve the appearance of the bloc k diagram by wiring efficiently.
Poor wire organization might not produce errors, but it can make the block diagram difficult to read and debug or make the VI appear to do things it does not do.

Chapter 5 Building the Block Diagram
© National Instruments Corpor ation 5-29 LabVIEW User Manual Avoid wiring under a structure bord er or between overlapped objects,
because LabVIEW might hide some segments of the resulting wire.
 Avoid placing objects on top of wires. Wires connect only those
objects you click. Placing a terminal or icon on top of a wire makes it appear as if a connection exists when it does not.
 Use free labels to document code on the block diagram. Increase the space between crowded or tightly grouped objects by
pressing the <Ctrl> key and use the Positioning tool to click the block diagram workspace. While holding th e key combination, drag out a
region the size you want to insert.
(Mac OS) Press the <Option> key. (Sun) Press the <Meta> key.
(Linux) Press the <Alt> key.
A rectangle marked by a dashed border defines where space will be inserted. Release the key co mbination to add the space.
Refer to the Block Diagram Style section of Chapter 6, LabVIEW Sty le
Guide , in the LabVIEW Develop ment Guidelines manual for more
information about designing the block diagram.

© National Instruments Corporation 6-1 LabVIEW User Manual6
Running and Debugging VIs
To run a VI, you must wire all the subV Is, functions, and structures with the
data types the terminals expect. Sometimes a VI produces data or runs in a way you do not expect. You can use LabVIEW to configure how a VI runs and to identify problems with block diagram organization or with the data passing through the block diagram.
For more information…
Refer to the LabVIEW Help for more information about running and
debugging VIs.
Running VIs
Running a VI executes the operation for which you designed the VI. You
can run a VI if the Run button on the toolbar appears as a solid white arrow,
shown at left. The solid white arrow also indicates you can use the VI as a subVI if you create a connector pane for the VI. While the VI runs, the Run
button changes to darkened arrow, shown at left, to indicate that the VI is
running. You cannot edit a VI while the VI runs.
A VI runs when you click the Run or Run Continuously buttons or the
single-stepping buttons on the block diagram toolbar. Clicking the Run
button runs the VI once. The VI stops when the VI completes its data flow. Clicking the Run Continuously button, shown at left, runs the VI
continuously until you stop it manually. Clicking the single-stepping buttons runs the VI in incr emental steps. Refer to the Single-Stepping
section of this chapter for more information about using the single-stepping buttons to debug a VI.
Note Avoid using the Abort Execution button to stop a VI. Either let the VI
complete its data flow or design a method to stop the VI programmatically. By doing so, the VI is at a known state. For example, place a button on the front panel that stops the VI.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-2 ni.comConfiguring How a VI Runs
Select File»VI Properties and select Execution from the Category
pull-down menu to configure how a VI runs. For example, you can configure a VI to run immediately when it opens or to pause when called
as a subVI. You also can configure the VI to run at differ ent priorities. For
example, if it is crucial that a VI runs without waiting for another operation to complete, configure the VI to run at time-critical (highest) priority. Refer to the Using LabVIEW to Create Multithreaded VIs for Maximum
Performa nce and Rel iability Application N ote for more information abo ut
creating multithreaded VIs. Refer to Chapter 16, Customizing VIs , for more
information about configuring how VIs run.
Note Incorrectly configuring a VI to run at different priorities can cause unexpected
execution. You do not need to configure most VIs to run at different priorities.
Correcting Broken VIs
If a VI does not run, it is a broken, or nonexecutable, VI. The Run button
often appears broken, shown at left, when the VI you are creating or editing contains errors. If it is still broken when you finish wiring the block diagram, the VI is broken and cannot run.
Finding Causes for Broken VIs
Click the broken Run button or select Window»Show Error List to find
out why a VI is broken. The Error list window lists all the errors. The VI
List section lists the names of all VIs in memory that have errors. The
errors and warnings section lists the errors and warnings for the VI you
select in the VI List section. The Details section describes the errors and
in some cases recommends how to correct the errors or how to find more
information about them. Select Help to open an online help file that lists
LabVIEW errors and their descriptions.Click the Show Error button or double-click the error description to
display the relevant block diagram or front panel and highlight the object that contains the error.The toolbar includes the Warning button, shown at left, if a VI includes a
warning and you placed a checkmark in the Show Warnings checkbox in
the Error list window.
Configure LabVIEW to always show warnings in the Error list window by
selecting Tools»Options , selecting Debugging from the top pull-down

Chapter 6 Running and Debugging VIs
© National Instruments Corporation 6-3 LabVIEW User Manualmenu, and placing a checkmark in the Show warnings in error box by
default checkbox. You can make this change with the Error list window
open and see the change immediately.
Warnings do not prevent you from running a VI. They are designed to help
you avoid potential problems in VIs.
Common Causes of Broken VIs
The following list contai ns common reasons why a VI is broken while you
edit it:
 The block diagram contains a broken wire because of a mismatch of
data types or a loose, unconnected end. Refer to the Using Wires to
Link Block Diagram Objects section of Chapter 5, Building the Block
Diagram , for more information about wiring block diagram objects.
 A required block diagram terminal is unwired. Refer to the Setting
Required, Recommended, and Optional Inputs and Outputs section of
Chapter 7, Creating VIs and SubVIs , for more information about
required terminals.
 A subVI is broken or you edited its connector pane af ter you placed its
icon on the block diagram of the VI. Refer to the SubVIs section of
Chapter 7, Creating VIs and SubVIs , for more information about
subVIs.
Debugging Techniques
If a VI is not broken, but you ge t unexpected data, you can use the
following techniques to identify and correct problems with the VI or the block diagram data flow:
 Wire the error in and error out parameters at the bottom of most built-in
VIs and functions. These parameters de tect errors encountered in each
node on the block diagram and indicate if and where an error occurred.
You also can use these parameters in the VIs you build. Refer to the Error Handling section of this chapter for more information about
using these parameters.
 To eliminate all VI warnings, select Windows»Show Error List and
place a checkmark in the Show Warnings checkbox to see all
warnings for the VI. Determine the causes and correct them in the VI.
 Triple-click the wire with the Operating tool to highlight its entire path
and to ensure that the wires connect to the proper terminals.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-4 ni.comU s e t h e Context Help window to check the default values for each
function and subVI on the block diagram. VIs and functions pass default values if recommended or optional inputs are unwired. For example, a Boolean input might be set to TRUE if unwired.
U s e t h e Find dialog box to search for subVIs, text, and other objects
to correct throughout the VI.
 Select Browse»Show VI Hierarchy to find unwired subVIs. Unlike
unwired functions, unwired VIs do not always generate errors unless you configure an input to be required. If yo u mistakenly place an
unwired subVI on the block diagram, it executes when the block diagram does. Consequently, the VI might perform extra actions.
 Use execution highlighting to watch the data move through the block
diagram.
 Single-step throu gh the VI to view each acti on of the VI on the block
diagram.
 Use the Probe tool to observe interm ediate data values and to check the
error output of VIs and functions, especially those performing I/O.
 Use breakpoints to pause execution, so you can single-step or insert
probes.
 Suspend the execution of a subVI to edit values of controls and
indicators, to control the number of times it runs, or to go back to the beginning of the execution of the subVI
 Comment out a section of the block diagram to determine if the VI
performs better without it.
 Determine if the data that one function or subVI passes is undefined.
This often happens with numbers. Fo r example, at one point in the VI
an operation could have divided a number by zero, thus returning
Inf
(infinity), whereas subsequent func tions or subVIs were expecting
numbers.
 If the VI runs more slowly than e xpected, confirm that you turned off
execution highlighting in subVIs. Also, close subVI front panels and block diagrams when you are not using them because open windows
can affect execution speed.
 Check the representation of controls and indicat ors to see if you are
receiving overflow because you conv erted a floating-p oint number to
an integer or an integer to a smaller integer. For example, you might wire a 16-bit integer to a function that only accepts 8-bit integers. This causes the function to convert the 16-bit integer to an 8-bit
representation, potentially causing a loss of data.

Chapter 6 Running and Debugging VIs
© National Instruments Corporation 6-5 LabVIEW User Manual Determine if any For Loops inadve rtently execute zero iterations and
produce empty arrays.
 Verify you initialized shift registers properly unless you intend them to
save data from one execution of the loop to another.
 Check the cluster element order at the source and destination points.
LabVIEW detects data type and clus ter size mismatches at edit time,
but it does not detect mismatches of elements of the same type.
 Check the node execution order.  Check that the VI does not contai n hidden subVIs. You inadvertently
might have hidden a subVI by placing one directly on top of another node or by decreasing the size of a structure without keeping the subVI
in view.
 Check the inventory of subVIs th e VI uses against the results of
Browse»This VI’s SubVIs and Browse»Unopened SubVIs to
determine if any extra subVIs exist. Also open the Hierarchy window
to see the subVIs for a VI. To help avoid incorrect results caused by hidden VIs, specify that inputs to VIs are required.
Execution Highlighting
View an animation of the execution of the block diagram by clicking the
Highlight Execution button, shown at left. Execution highlighting shows
the movement of data on the block diagram from one node to another using bubbles that move along the wires. Use execution highlighting in conjunction with single-stepping to see how data move from node to node through a VI.
Note Execution highlighting greatly reduces the speed at wh ich the VI runs.
If the error out cluster reports an error, the error value appears next to
error out with a red border. If no error occurs, OK appears next to error out
with a green border. Refer to the Error Clusters section of this chapter for
more information about error clusters.
Single-Stepping
Single-step through a VI to view each action of the VI on the block diagram
as the VI runs. The single-stepping butt ons, shown at left, affect execution
only in a VI or subVI in single-step mode. Enter single-step mode by clicking the Step Over or Step Into button on the block diagram toolbar.
Move the cursor over the Step Over , Step Into , or Step Out button to view

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-6 ni.coma tip strip that describes the next step if you click that button. You can
single-step through subVIs or run them normally.
If you single-step through a VI with execution highlighting on, an
execution glyph, shown at left, appears on the icons of the subVIs that are
currently running.
Probe Tool
Use the Probe tool, shown at left, to ch eck intermediate values on a wire as
a VI runs. Use the Probe tool if you have a complicated block diagram with a series of operations, any one of whic h might return incorrect data. Use the
Probe tool with execution highlighting, single-stepping, and breakpoints to determine if and where data are incorr ect. If data are available, the probe
immediately updates during single-stepping or when you pause at a breakpoint. When execution pauses at a node because of single-stepping or
a breakpoint, you also can probe the wire that just executed to see the value
that flowed through that wire.
Types of Probes
You can check intermediate values on a wire when a VI runs by using the
Generic probe, by using an indicator on the Controls palette to view the
data, by using a supplied probe, by using a customized supplied probe, or by creating a new probe.
Generic
Use the generic probe to view the data that pass through a wire. Right-click
a wire and select Custom Probe»Generic from the shortcut menu to use
the generic probe.
The generic probe displays the data . You cannot configure the generic
probe to respond to the data.
LabVIEW displays the generic probe when you right-click a wire and
select Probe , unless you already specified a custom or supplied probe for
the data type.
You can debug a custom probe similar to a VI. However, a probe cannot
probe its own block diagram, nor the block diagram of any of its subVIs. When debugging probes, use the generic probe.

Chapter 6 Running and Debugging VIs
© National Instruments Corporation 6-7 LabVIEW User ManualUsing Indicators to View Data
You also can use an indicator to view the data that pass through a wire. For
example, if you view numeric data, you can use a chart within the probe to view the data. Right-click a wire, select Custom Probe»Controls from the
shortcut menu, and select the indicator you want to use. You also can click
the Select a Control icon on the Controls palette and select any custom
control or type definition saved on the computer or in a shared directory on a server. LabVIEW treats type definitions as custom controls when you use them to view probed data.
If the data type of the indicator you select does not match the data type of
the wire you right-clicked, LabVIE W does not place the indicator on the
wire.
Supplied
Supplied probes are VIs that display comprehensive information about the data that pass through a wire. For ex ample, the VI Refnum Probe returns
information about the VI name, the VI path, and the hex value of the reference. You also can use a supplied probe to respond based on the data that flow through the wi re. For example, use an Error probe on an error
cluster to receive the status, code, so urce, and descriptio n of the error and
specify if you want set a conditional breakpoint if an error or warning
occurs.
The supplied probes appear at the top of the Custom Probe shortcut menu.
Right-click a wire and select Custom Probe from the shortcut menu to
select a supplied probe. Only probes that match the data type of the wire you right-click appear on the shortcut menu.
Refer to the Using Supplied Probes VI in the
examples\general\
probes.llb for an example of using supplied probes.
Custom
Use the Custom Probe Wi zard to create a probe based on an existing probe
or to create a new probe. Righ t-click a wire and select Custom Probe»New
from the shortcut menu to display the Custom Probe Wizard. Create a probe when you want to have more control over how LabVIEW probes the data that flow through a wire. When you create a new probe, the data type
of the probe matches the data type of the wire you right-clicked. If you want
to edit the probe you created, you must open it from the directory where you saved it.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-8 ni.comAfter you select a probe from the Custom Probe shortcut menu, navigate
to it using the Select a Control palette option, or create a new probe using
the Custom Probe Wizard, that probe becomes the default probe for that data type, and LabVIEW loads that probe when you right-click a wire and select Probe from the shortcut menu. LabVIEW only loads probes that
exactly match the data type of the wire you right-click. That is, a double precision floating-point numeric probe cannot probe an unsigned 32-bit integer wire even though LabVIEW can convert the data.
Note If you want a custom probe to be the defa ult probe for a particular data type, save
the probe in the user.lib\_probes\default directory. Do not save probes in the
vi.lib\_probes directory because LabVIEW overwrites those files when you upgrade
or reinstall.
Refer to the LabVIEW Help for information about caveats when using and
creating custom probes.
Breakpoints
Use the Breakpoint tool, shown at left, to place a breakpoint on a VI, node, or wire on the block diagram and pa use execution at that location. When
you set a breakpoint on a wire, execution pauses after data pass through the wire. Place a breakpoint on the block di agram to pause ex ecution after all
nodes on the block diagram execute.
When a VI pauses at a breakpoint, LabVIEW brings the block diagram to
the front and uses a marquee to highlight the node or wire that contains the
breakpoint. When you move the cursor over an existing breakpoint, the black area of the Breakpoint tool cursor appears white.
When you reach a breakpoint during execution, the VI pauses and the
Pause button appears red. You can take the following actions:
 Single-step through execution using the single-stepping buttons. Probe wires to check intermediate values.
 Change values of front panel controls.
 Click the Pause button to continue running to the next breakpoint or
until the VI finishes running.
LabVIEW saves breakpoints with a VI, but they are active only when you
run the VI. You can view all breakpoints by selecting Browse»
Breakpoints .

Chapter 6 Running and Debugging VIs
© National Instruments Corporation 6-9 LabVIEW User ManualSuspending Execution
Suspend execution of a subVI to edit valu es of controls and indicators, to
control the number of times the subVI runs before returning to the caller, or to go back to the beginning of the execution of the subVI. You can cause all calls to a subVI to start with execution suspended, or you can suspend a specific call to a subVI.
To suspend all calls to a subVI, open the subVI and select Operate»
Suspend when Called . The subVI automatically suspends when another
VI calls it. If you select this menu item when single- stepping, the subVI
does not suspend immediately. The subVI suspends when it is called.
To suspend a specific subVI call, righ t-click the subVI node on the block
diagram and select SubVI Node Setup from the shortcut menu. Place a
checkmark in the Suspend when called checkbox to suspend execution
only at that instance of the subVI.
The Hierarchy window, which you display by selecting Browse»Show VI
Hierarchy , indicates whether a VI is paused or suspended. An arrow glyph
indicates a VI that is running regularly or single-stepping. A pause glyph indicates a paused or suspended VI. A green pause glyph, or a hollow glyph in black and white, indicates a VI th at pauses when called. A red pause
glyph, or a solid glyph in black and wh ite, indicates a VI that is currently
paused. An exclamation point glyph indicates that the subVI is suspended. A VI can be suspended and paused at the same time.
Determining the Curren t Instance of a SubVI
When you pause a subVI, the Call list pull-down menu on the toolbar lists
the chain of callers from the top-level VI down to the subVI. This list is not the same list you see when you select Browse»This VI’s Callers , which
lists all calling VIs regardless of whet her they are curren tly running. Use
the Call list menu to determine the curren t instance of the subVI if the
block diagram contains more than one instance. When you select a VI from
the Call list menu, its block diagram opens, and LabVIEW highlights the
current instance of the subVI.
Commenting Out Sections of Block Diagrams
You can run a VI with a section of th e block diagram disabled, similar to
commenting out a section of code in a text-based programming language. Disable a section of the block diagra m to determine if the VI performs
better without it.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-10 ni.comPlace the section you want to disable inside a Case structure and use a
Boolean constant to run both cases. Refer to the Case Structures section of
Chapter 8, Loops and Structures , for more information about using Case
structures. You also can create a copy of the VI and delete that section of
the block diagram from the copy. Discard the version of the VI you decide not to use.
Disabling Debugging Tools
You can disable the debugging tools to reduce memory requirements and to increase performance s lightly. Right-click the connector pane and select
VI Properties . Select Execution in the Category pull-down menu and
remove the checkmark from the Allow Debugging checkbox.
Undefined or Unexpected Data
Undefined data, which are NaN (not a number) or Inf (infinity), invalidate
all subsequent operations. Floating-point operations return the following two symbolic values that indicate faulty computations or meaningless results:

NaN (not a number) represents a floating-point value that invalid
operations produce, such as taking the square root of a negative number.

Inf (infinity) represents a floatin g-point value that operations
produce, such as dividing a number by zero.
LabVIEW does not check for overflow or underflow conditions on integer
values. Overflow and underflow for floating-point numbers is in accordance with IEEE 754, Standard for Binary Floating-Point Arithmetic .
Floating-point operations propagate
NaN and Inf reliably. When you
explicitly or implicitly convert NaN or Inf to integers or Boolean values,
the values become meaningless. For example, dividing 1 by zero produces
Inf. Converting Inf to a 16-bit integer produces the value 32,767 , which
appears to be a normal value. Refer to the Numeric Conversion section of
Appendix B, Polymorphic Functions , for more information about
converting numeric values.
Before you convert data to integer data types, use the Probe tool to check
intermediate floating-point values for validity. Check for NaN by wiring the
Comparison function Not A Number/Path/Refnum? to the value you suspect is invalid.

Chapter 6 Running and Debugging VIs
© National Instruments Corpor ation 6-11 LabVIEW User ManualDefault Data in Loops
For Loops return default data when the iteration count is zero.
Refer to the Control and Indicator Data Types section of Chapter 5,
Building the Block Diagram , for more information about default values for
data types.
For Loops
For Loops produce default data if you wire 0 to the count terminal of the
For Loop or if you wire an empty array to the For Loop as an input with auto-indexing enabled. The loop does not execute, and any output tunnel with auto-indexing disabled contains the default value for the tunnel data type. Use shift registers to transfer values through a loop regardless of
whether the loop executes.
Refer to the For Loop and While Loop Structures section of Chapter 8,
Loops and Structures , for more information about For Loops,
auto-indexing, and shift registers.
Default Data in Arrays
Indexing beyond the bounds of an array produces the default value for the array element parameter. You can use the Array Size function to determine
the size of the array. Refer to the Arrays section of Chapter 10, Grouping
Data Using Strings, Arrays, and Clusters , for more information about
arrays. Refer to the Auto-Indexing Loops section of Chapter 8, Loops and
Structures , for more information about indexing. You can index beyond the
bounds of an array inadvertently by inde xing an array past the last element
using a While Loop, by supplying too large a value to the index input of an
Index Array function, or by supplying an empty array to an Index Array
function.
Preventing Undefined Data
Do not rely on special values such as NaN, Inf, or empty arrays to
determine if a VI produces undefined data. Instead, confirm that the VI produces defined data by making the VI report an error if it encounters a
situation that is likely to produce undefined data.
For example, if you create a VI that uses an incoming array to auto-index a
For Loop, determine what you want the VI to do when the input array is empty. Either produce an output error code or substitute defined data for the values that the loop creates.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-12 ni.comError Checking and Error Handling
Each error has a numeric code a nd a corresponding error message. By
default, LabVIEW automatically handles any error when a VI runs by suspending execution, highlighting the subVI or function where the error
occurred, and displaying the Error dialog box.
Select File»VI Properties and select Execution from the Category
pull-down menu to disable automatic error handling for a specific VI. Select Tools»Options and select Block Diagram from the top pull-down
menu to disable automatic error handling for any new VIs you create.
To ignore any error a subVI or function encounters, wire the error out
output of the subVI or function to the error in input of the Clear Errors VI.
To disable automatic error handling for a subVI or function, wire its error
out parameter to the error in parameter of another subVI or function or to
an error out indicator.
Use the LabVIEW error handling VIs, functions, and parameters to manage
errors. For example, if LabVIEW encoun ters an error, you can display the
error message in a dialog box. Use er ror handling in conjunction with the
debugging tools to find and manage errors. National Instruments strongly recommends using error handling.
Checking for Errors
No matter how confident you are in th e VI you create, you cannot predict
every problem a user can encounter. Without a mechanism to check for
errors, you know only that the VI does not work properly. Error checking tells you why and wh ere errors occur.
When you perform any kind of input and output (I/O), consider the
possibility that errors might occur. Almost all I/O functions return error information. Include error checking in VIs, especially for I/O operations (file, serial, instrumentation, data acquisition, and communication), and provide a mechanism to hand le errors appropriately.
Checking for errors in VIs can help you identify the following problems:
 You initialized communications incorrectly or wrote improper data to
an external device.
 An external device lost power, is broken, or is working improperly.

Chapter 6 Running and Debugging VIs
© National Instruments Corpor ation 6-13 LabVIEW User Manual You upgraded the operating system software, which changed the path
to a file or the functionality of a VI or library. You might notice a problem in a VI or a system program.
Error Handling
By default, LabVIEW automatically handles errors by suspending execution. You can choose other er ror handling methods. For example,
if an I/O VI on the block diagram times out, you might not want the entire application to stop. You also might want the VI to retry for a certain period of time. In LabVIEW, you can make these error handling decisions on the block diagram of the VI.VIs and functions return errors in one of two ways—with numeric error
codes or with an error cluster. Typica lly, functions use numeric error codes,
and VIs use an error cluster, usually with error inputs and outputs. Refer to the Error Clusters section of this chapter for more information abo ut error
clusters.Error handling in LabVIEW follows the dataflow model. Just as data flow through a VI, so can error information. Wire the error information from the beginning of the VI to the end. Include an error handler VI at the end of the
VI to determine if the VI ran without errors. Use the error in and error out
clusters in each VI you use or build to pass the error information through
the VI.As the VI runs, LabVIEW tests fo r errors at each execution node.
If LabVIEW does not find any errors, the node executes normally. If LabVIEW detects an error, the node passes the error to the next node
without executing that part of the code. The next node does the same thing, and so on. At the end of the executi on flow, LabVIEW reports the error.
Error Clusters
The error in and error out clusters include the fo llowing components of
information:status is a Boolean value that reports TRUE if an error occurred. Most
VIs, functions, and structures th at accept Boolean data also recognize
this parameter. For example, you can wire an error cluster to the Boolean inputs of the Stop, Quit LabVIEW, or Select functions. If an error occurs, the error cluster pass es a TRUE value to the function.

Chapter 6 Running and Debugging VIs
LabVIEW User Manual 6-14 ni.comcode is a 32-bit signed integer that identifies the error numerically.
A non-zero error code coupled with a status of FALSE signals a
warning rather than a fatal error.
source is a string that identifi es where the error occurred.
Using While Loops for Error Handling
You can wire an error cluster to the conditional terminal of a While Loop
to stop the iteration of the While Loop. When you wire the error cluster to the conditional terminal, only the TRUE or FALSE value of the status
parameter of the error cluster is passed to the terminal. When an error occurs, the While Loop stops.
When an error cluster is wired to the Conditional terminal, the shortcut
menu items Stop if True and Continue if True change to Stop on Error
and Continue while Error .
Using Case Structures for Error Handling
When you wire an error cluster to the se lector terminal of a Case structure,
the case selector label displays two cases, Error and No Error , and the
border of the Case struct ure changes color—red for Error and green for
No Error . If an error occurs, the Case structure executes the Error
subdiagram. Refer to the Case Structures section of Chapter 8, Loops and
Structures , for more information about using Case structures.

© National Instruments Corporation 7-1 LabVIEW User Manual7
Creating VIs and SubVIs
After you learn how to build a front panel and block diagram, you can create your own VIs and subVIs, distribute VIs, and build stand-alone applications and shared libraries.Refer to the LabVIEW Development Guidelines manual for more
information about planning your project, including information about common development pitfalls and tools you can use to develop your project.
For more information…Refer to the LabVIEW Help for more information about creating and using subVIs,
saving VIs, and building stand-alone applications and shared libraries.
Planning and Designing Your Project
Before you develop your own VIs, create a list of tasks your users will need to perform. Determine the user in terface components and the number and
type of controls and indicators you need for data analysis, displaying analysis results, and so on. Think about and discuss with prospective users or other project team members how a nd when the user will need to access
functions and features. Create sample fr ont panels to show to prospective
users or project team members and determine if the front panel helps your users accomplish their tasks. Use this in teractive process to refine the user
interface as necessary.Divide your application in to logical pieces of manageable size. Begin with
a high-level block diagram that includes the main components of your application. For example, the block diagram could include a block for configuration, a block for acquisition, a block for analysis of the acquired data, a block for displaying analysis results, a block for saving the data to disk, and a block to handle errors.After you design the high-level block diagram, define the inputs and outputs. Then, design the subVIs that make up the main components of the high-level block diagram. Using subVIs makes the high-level block

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-2 ni.comdiagram easy to read, debug, understa nd, and maintain. You also can create
subVIs for common or frequent operations that you can reuse. Test subVIs as you create them. You can create higher level test routines, but catching
errors in a small module is easier than testing a hierarchy of several VIs.
You might find that the initial design of the high-level block diagram is incomplete. Using subVIs to accomplish low-level tasks makes it easier to
modify or reorganize your application. Refer to the SubVIs section of this
chapter for more information about subVIs.Select Help»Find Examples for examples of block diagrams and subVIs.
Designing Projects with Multiple Developers
If multiple developers work on th e same project, define programming
responsibilities, interfaces, and coding standards in the beginning to ensure
the development process and the application work well together. Refer to Chapter 6, LabVIEW Style Guid e, of the LabVIEW Development
Guidelines manual for more information about coding standards.
Keep master copies of the project VI s on a single computer and institute a
source code control policy. Consid er using the LabVIEW Professional
Development System, which includes source code control tools that
simplify file sharing. The tools also include a utility to compare VIs and view the changes that were made between versions of VIs. Refer to the Source Code Control section of Chapter 2, Incorporating Quality into the
Development Proces s, in the LabVIEW Development Guidelines manual
for more information about using source code control.
VI Templates
The LabVIEW VI templates include the subVIs, functions, structures, and
front panel objects you need to get st arted building common measurement
applications. VI templates open as untitled VIs that you must save. Select File»New to display the New dialog box, which includes the LabVIEW VI
templates. You also can display the New dialog box by selecting New from
the New pull-down menu of the LabVIEW dialog box.
If you use a VI template as a subV I, LabVIEW prompts you to save the
template as a VI before you closing the VI.

Chapter 7 Creating VIs and SubVIs
© National Instruments Corporation 7-3 LabVIEW User ManualCreating VI Templates
Create custom VI templates to avoi d placing the same components on the
front panel or block diagram each ti me you want to perform a similar
operation. Create a custom VI template by building a VI and saving it as a template.
Other Document Types
Select an item under the Other Document Types heading in the Create
new list of the New dialog box to start creating global variables, custom
controls, run-time menus, polymorphic VIs, or templates for global variables and controls.
Using Built-In VIs and Functions
LabVIEW includes VIs and functions to help you build specific applications, such as data acquisi tion VIs and functions, VIs that access
other VIs, and VIs that communicate with other applications. You can use
these VIs as subVIs in your application to reduce development time. Refer to the SubVIs section of this chapter for more information about subVIs.
Building Instrument Control and Data Acquisition VIs and Functions
LabVIEW includes hundreds of exampl e VIs you can use and incorporate
into VIs that you create. You can modify an example VI to fit an
application, or you can copy and past e from one or more examples into a
VI that you create.You can use the built-in VIs and functions to control external instruments, such as oscilloscopes, and to acqui re data, such as readings from a
thermocouple.Use the Instrument I/O VIs and functions to control external instruments.
To control instruments in LabVIEW, you must have the correct hardware installed, powered on, and operating on your computer. The VIs and functions you use to control instruments depend on the instrumentation communicat ion prot ocols yo ur hardware supports. Refer to t he LabVIEW
Measuremen ts Manual for more information about building VIs to control
instruments.Use the Data Acquisition VIs and functions to acquire data from DAQ devices. To use these VIs, you must have the NI-DAQ driver software and DAQ hardware installed. Refer to the LabVIEW Measuremen ts Manual for

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-4 ni.commore information about installing the NI-DAQ driver software and DAQ hardware and building VIs to acquire data. After you acquire data, you can use the built-in Analyze, Report Generation, and Mathematics VIs and
functions to analyze, generate re ports, and perform mathematical
operations on that data. Refer to t he LabVIEW Analys is Concepts man ual
for more information about analysis and mathematical concepts in
LabVIEW.
Building VIs That Access Other VIs
Use the Application Control VIs and functions to control how VIs behave when called as subVIs or run by th e user. You can use these VIs and
functions to configure multiple VIs at the same time. Also, if you are on a network with other LabVIEW users, you can use these VIs and functions to access and control VIs remotely. Refer to Chapter 17, Programmatically
Controlling VIs , for more information about controlling VIs remotely.
Building VIs That Communicat e with Other Applications
Use the File I/O VIs and functions to wr ite data to or read data from other
applications, such as Microsoft Excel. You can use these VIs and functions
to generate reports or incorporate data from another application in the VI. Refer to Chapter 14, File I/O , for more information about passing data to
and from other applications.Use the Communication VIs and functions to transfer LabVIEW data
across the Web using a communication protocol such as FTP and to build client-server applications using communication protocols. Refer to Chapter 18, Networking in LabVIEW , for more information about
communicating with other applications on the network or on the Web.
(Windows) Use the ActiveX functions to add ActiveX objects to VIs or to
control ActiveX-enabled appli cations. Refer to Chapter 19, Windows
Connectivity , for more information about using ActiveX technology.
SubVIs
After you build a VI and create its icon and connector pane, you can use it in another VI. A VI called from the block diagram of another VI is called a subVI. A subVI corresponds to a subroutine in text-based
programming languages. A subVI node corresponds to a subroutine call in text-based programming languages. The node is not the subVI itself, just as a subroutine call statement in a program is not the subroutine itself. A block

Chapter 7 Creating VIs and SubVIs
© National Instruments Corporation 7-5 LabVIEW User Manualdiagram that contains several identical subVI nodes calls the same subVI
several times.
The subVI controls and indi cators receive data from and return data to the
block diagram of the calling VI. Click the Select a VI icon on the
Functions palette, navigate to and doubl e-click a VI, and place the VI on a
block diagram to create a subVI call to that VI.
Note Before you can use a VI as a subVI, you must set up a connector pane. Refer to the
Setting up the Connector Pane section of this chapter for more information about setting
up a connector pane.
You can edit a subVI by using the Operating or Positioning tool to
double-click the subVI on the block diagram. When you save the subVI, the changes affect all calls to the subVI, not just the current instance.
When LabVIEW calls a subVI, ordi narily the subVI runs without
displaying its front panel. If you want a single instance of the subVI to display its front panel when called, right-click the subVI icon and select SubVI Node Setup from the shortcut menu. If you want every instance of
the subVI to display its front panel when called, select File»VI Properties ,
select Window Appearance from the Category pull-down menu, and
click the Customize button.
Watching for Common Operations
As you create VIs, you might find that you perform a certain operation
frequently. Consider using subVIs or loops to perform that operation
repetitively. For example, the block diagram in Figure 7-1 contains two identical operations.

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-6 ni.comFigure 7-1. Block Diagram with Two Identical Operations
You can create a subVI that performs that operation and call the subVI
twice, as shown in Figure 7-2.
Figure 7-2. Calling a SubVI Twice
You also can reuse the subVI in other VIs. Refer to Chapter 8, Loops and
Structures , for more information about using loops to combine common
operations.
Setting up the Connector Pane
To use a VI as a subVI, you need to build a connector pane, shown at left.
The connector pane is a set of terminal s that corresponds to the controls and
indicators of that VI, similar to the parameter list of a function call in text-based programming languages. The connector pane defines the inputs and outputs you can wire to the VI so you can use it as a subVI. Refer to
the Icon and Connector Pane section of Chapter 2, Introduction to Virtual
Instruments , for more information about connector panes.

Chapter 7 Creating VIs and SubVIs
© National Instruments Corporation 7-7 LabVIEW User ManualDefine connections by assigning a fron t panel control or indicator to each
of the connector pane terminals. To define a connector pane, right-click the icon in the upper right corner of the front panel window and select Show
Connector from the shortcut menu to display the connector pane. The
connector pane replaces the icon. E ach rectangle on the connector pane
represents a terminal. Use the rectangl es to assign inputs and outputs. The
number of terminals LabVIEW displays on the connector pane depends on the number of controls and indicators on the front panel.
The connector pane has, at most, 28 terminals. If your front panel contains
more than 28 controls and indicators that you want to use programmatically, group some of them into a cluster and assign the cluster to a terminal on the conn ector pane. Refer to the Clusters section of
Chapter 10, Grouping Data Using Strings, Arrays, and Clusters , for more
information about grouping data using clusters.
Note Assigning more than 16 terminals to a VI can reduce readab ility and usability.
Select a different terminal pattern for a VI by right-clicking the connector
pane and selecting Patterns from the shortcut menu. Select a connector
pane pattern with extra terminals. You can leave the extra terminals unconnected until you need them. This flexibility enables you to make changes with minimal effect on the hierarchy of the VIs.
If you create a group of subVIs that yo u use together often, give the subVIs
a consistent connector pane with common inputs in the same location to help you remember where to locate each input. If you create a subVI that
produces an output another subVI uses as the input, align the input and output connections to simplify the wiri ng patterns. Place the error in
clusters on the lower left corner of the front panel and the error out clusters
on the lower right corner.
Figure 7-3 shows examples of improperly and properly aligned error
clusters.
Figure 7-3. Improperly and Properly Aligned Error Clusters1 Improper 2 Proper
1 2

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-8 ni.comRefer to the Connector Panes section of Chapter 6, LabVIEW Style Guide,
in the LabVIEW Development Guidelin es manual for more information
about style to use when setting up a connector pane.
Setting Required, Recommended,
and Optional Inputs and Outputs
You can designate which inputs and outputs are required, recommended, and optional to prevent users from forgetting to wire subVI terminals.Right-click a terminal in the connector pane and select This Connection Is
from the shortcut menu. A checkmark in dicates the terminal setting. Select
Required , Recommended , or Optional .
For terminal inputs, required means that the block diagram on which you placed the subVI will be broken if you do not wire the required inputs. Required is not available for terminal outputs. For terminal inputs and outputs, recommended or optional means that the block diagram on which you placed the subVI can execute if y ou do not wire the recommended or
optional terminals. If you do not wire the terminals, the VI does not generate any warnings.Inputs and outputs of VIs in
vi.lib are already marked as Required ,
Recommended , or Optional . LabVIEW sets inputs and outputs of VIs you
create to Recommended by default. Set a terminal setting to required only
if the VI must have the input or output to run properly.In the Context Help window, the labels of required terminals appear bold,
recommended terminals appear as plai n text, and optional terminals appear
dimmed. The labels of optional terminals do not appear if you click the Hide Optional Terminals and Full Path button in the Context Help
window.
Creating an Icon
Every VI displays an icon, shown at left, in the upper right corner of the front panel and block diagram windows. An icon is a graphical representation of a VI. It can contain text, images, or a combination of both.
If you use a VI as a subVI, the ic on identifies the subVI on the block
diagram of the VI.The default icon contains a number that indicates how many new VIs you have opened since launching LabVIEW. Create custom icons to replace the
default icon by right-clicking the icon in the upper right corner of the front

Chapter 7 Creating VIs and SubVIs
© National Instruments Corporation 7-9 LabVIEW User Manualpanel or block diagram and selecting Edit Icon from the shortcut menu or
by double-clicking the icon in the upper right corner of the front panel.You also can drag a graphic from anywhere in your file system and drop it in the upper right corner of the front panel or block diagram. LabVIEW converts the graphic to a 32 ×32 pixel icon.
Depending on the type of monitor you use, you can design a separate icon for monochrome, 16-color, and 256-color mode. LabVIEW uses the monochrome icon for printing unless you have a color printer.Refer to the Icons section of Chapter 6, LabVIEW Sty le Guide, in the
LabVIEW Development Guidelines manual for more information about
designing an icon.
Displaying SubVIs and Express VI s as Icons or Expandable Nodes
You can display VIs and Express VIs as icons or as expandable nodes. Expandable nodes appear as icons surrounded by a colored field. SubVIs appear with a yellow field, and Expres s VIs appear with a blue field. Use
icons if you want to conserve space on the block diagram. Use expandable
nodes to make wiring easier and to aid in documenting block diagrams. By default, subVIs appear as icons on the block diagram, and Express VIs appear as expandable nodes. To display a subVI or Express VI as an expandable node, right-click the subVI or Express VI and select View as
Icon from the shortcut menu to remove the checkmark.
Note If you display a subVI or Express VI as an expandable node, you cannot display the
terminals for that node and you cannot enable database access for that node.
When you resize an expandable subVI or Express VI, the input and output terminals of the subVI or Express VI appear below the icon. Optional terminals appear with gray backgr ounds. Recommended or required input
or output terminals you do not display appear as input or output arrows in the colored field that surrounds the subVI or Express VI icon. If you wire to an optional terminal when the subVI or Express VI is expanded, then resize the subVI or Express VI so the optional terminal no longer appears
in the expanded field, the optional term inal appears as an input or output
arrow in the colored field. However, if you unwire the optional terminal, the input or output arrow does not appear.By default, inputs appear above outputs when you expand the subVI or Express VI. Right-click a terminal in the expandable field and select Select
Input/Output from the shortcut menu to select an input or output to

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-10 ni.comdisplay. A line divides inputs from outputs in the shortcut menu. Labels for expandable subVIs and Express VIs appear in the colored field that surrounds the icon. To resize the expa ndable node so it accommodates the
name of each terminal on a single line in the expandable field, right-click
the subVI or Express VI and select Size to Text from the shortcut menu.
The following expandable subVI displays four of 10 input and output terminals.
Refer to the Getting Started with LabVIEW manual for more information
about Express VIs.
Creating SubVIs from Sections of a VI
Convert a section of a VI into a subVI by using the Positioning tool to select
the section of the block diagram you want to reuse and select Edit»Create
SubVI . An icon for the new subVI replaces the selected section of the
block diagram. LabVIEW creates contro ls and indicators for the new subVI
and wires the subVI to the existing wires.Creating a subVI from a selection is co nvenient but still requires careful
planning to create a logi cal hierarchy of VIs. Co nsider which objects to
include in the selection and avoid changing the functionality of the resulting VI.
Designing SubVIs
If users do not need to view the front panel of a subVI, you can spend less time on its appearance, including colors and fonts. However, front panel
organization is still impor tant because you might n eed to view the front
panel while you debug the VI.

Chapter 7 Creating VIs and SubVIs
© National Instruments Corpor ation 7-11 LabVIEW User ManualPlace the controls and indicators as th ey appear in the connector pane.
Place the controls on the left of the front panel and the indicators on the right. Place the error in clusters on the lower left of the front panel and
theerror out clusters on the lower right. Refer to the Setting up the
Connector Pane section of this chapter for more information about setting
up a connector pane.
If a control has a default value, put the default value in parentheses as part
of the control name. Also include meas urement units, if applicable, in the
control name. For example, if a contro l sets the high limit temperature and
has a default value of 75 °F, name the control high limit temperature
(75 degF) . If you will use the subVI on multiple platforms, avoid using
special characters in contro l names. For example, use degF instead of ° F.
Name Boolean controls so users can de termine what the c ontrol does in the
TRUE state. Use names like Cancel , Reset , and Initialize that describe the
action taken.
Viewing the Hierarchy of VIs
The Hierarchy window displays a graphical representation of the calling
hierarchy for all VIs in memory, including type definitions and global variables. Select Browse»Show VI Hierarchy to display the Hierarchy
window. Use this window to view the subVIs and other nodes that make up the current VI.
As you move the Operating tool over objects in the Hierarchy window,
LabVIEW displays the name of each VI . You can use the Positioning tool
to drag a VI from the Hierarchy window to the block diagram to use the
VI as a subVI in another VI. You also can select and copy a node or several
nodes to the clipboard and paste them on other block diagrams.
Double-click a VI in the Hierarchy window to display the front panel of
that VI.
A VI that contains subVIs has an arrow button on its bottom border. Click
this arrow button to show or hide subVIs. A red arrow button appears when all subVIs are hidden. A black arrow button appears when all subVIs are displayed.

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-12 ni.comSaving VIs
You can save VIs as individual files or you can group several VIs together and save them in a VI library. VI library files end with the extension
.llb .
National Instruments recommends that you save VIs as individual files, organized in directories, especially if multiple developers are working on
the same p roject. Refer to the Organizing VIs in Director ies section of
Chapter 6, LabVIEW Style Guid e, in the LabVIEW Development
Guidelines manual for more information about organizing VIs in
directories.
Advantages of Saving VIs as Individual Files
The following list describes reasons to save VIs as individual files: You can use the file system to manage the individual files. You can use subdirectories.  You can store VIs and controls in individual files more robustly than
you can store your entire pr oject in the same file.
 You can use the Professional Devel opment System built-in source code
control tools or third-party source code control tools.
Advantages of Saving VIs as Libraries
The following list describes reasons to save VIs as libraries: You can use up to 255 characters to name your files.
(Mac OS) Mac OS 9. x or earlier limits yo u to 31 characters for
filenames, but has no limit on characters for VI filenames in a library.
 You can transfer a VI library to ot her platforms more easily than you
can transfer multiple indi vidual VIs. You also can ensure that the user
receives all the files needed.
 You can slightly reduce the file size of your project because VI
libraries are compressed to reduce disk space requirements.
 You can mark VIs in a library as top-level so when you open the
library, LabVIEW automatically opens all the top-level VIs in that library.
Note LabVIEW stores many of its built-in VIs and examples in VI libraries to ensure
consistent storage locations on all platforms.

Chapter 7 Creating VIs and SubVIs
© National Instruments Corpor ation 7-13 LabVIEW User ManualIf you use VI libraries, consider dividing your application into multiple
VI libraries. Put the high-level VIs in one VI library and set up other libraries to contain VIs separated by function. Saving changes to a VI in a library takes longer than saving change s to an individual VI, because the
operating system must write the changes to a larger file. Saving changes to
a large library also can increase memory requirements and decrease
performance. Try to limit the size of each library to approximately 1 MB.
Managing VIs in Libraries
Use the VI Library Manage r, available by selecting Tools»VI Library
Manager , to simplify copying, renaming, and deleting files within VI
libraries. You also can use this t ool to create new VI libraries and
directories and convert VI libraries to and from directories. Creating new
VI libraries and directories and c onverting VI libraries to and from
directories is important if you need to manage your VIs with source code
control tools.
Before you use the VI Library Manager, close all VIs that might be affected
to avoid performing a file operat ion on a VI already in memory.
(Windows 2000/XP/Me/98) You also can double-click a .llb file in Windows
Explorer to display the contents of the library so you can open, move, copy, rename, and delete files in the library.
Naming VIs
When you save VIs, use descriptive names. Descriptive names, such as
Temperature Monitor.vi and Serial Write & Read.vi , make it
easy to identify a VI and know how you use it. If you use ambiguous names, such as
VI#1.vi , you might find it difficult to identify VIs, especially if
you have saved several VIs.
Consider whether your users will run the VIs on another platform. Avoid
using characters that some operating systems reserve for special purposes,
such as \ : / ? * < > and #.
Keep VI names less than 31 charact ers if your users might run them on
Mac OS 9. xor earlier.

Chapter 7 Creating VIs and SubVIs
LabVIEW User Manual 7-14 ni.comSaving for a Previous Version
You can save VIs for a previous ve rsion of LabVIEW to make upgrading
LabVIEW convenient and to help you maintain the VIs in two versions of LabVIEW when necessary. If you upgr ade to a new version of LabVIEW,
you can go back to the last version of the VIs.
When you save a VI for the previous version, LabVIEW converts not just
that VI but all the VIs in its hierarchy, excluding
vi.lib files.
Often a VI uses functionality not av ailable in the previous version of
LabVIEW. In such cases, LabVIEW saves as much of the VI as it can and
produces a report of what it cannot co nvert. The report appears immediately
in the Warnings dialog box. Click the OK button to acknowledge these
warnings and close the dialog box. Click the Save button to save the
warnings to a text file to review later.
Distributing VIs
If you want to distribute VIs to other computers or to other users, consider if you want to include block diagram source code users can edit or if you want to hide or remove the block diagram.
If you want to distribute VIs that include block diagram source code to
other LabVIEW users, you can assign password protection to the block diagrams. The block diagram is still available, but users must enter a
password to view or edit the block diagram.
If you want to distribute VIs to developers of other programming
languages, you can build a stand-alone application or shared library. A stand-alone applica tion or shared library is appropriate when you do not
expect your users to edit the VIs. Users can run your application or use the shared library, but they cannot ed it or view the block diagrams.
Note You can create stand-alone ap plications or shared libr aries only in the LabVIEW
Professional Development Systems or using the Application Builder.
Another option for distributing VIs is to remove the block diagram source
code so other users cannot edit the VI. Select File»Save With Options to
save VIs without the block diagrams to reduce the file size and prevent users from changing the source code. If you save a VI without the block diagram, users cannot move the VI to another platform or upgrade the VI
to a future version of LabVIEW.

Chapter 7 Creating VIs and SubVIs
© National Instruments Corpor ation 7-15 LabVIEW User ManualCaution If you save VIs without block diagrams, do not overwrite the original versions of
the VIs. Save the VIs in different directories or use different names.
Refer to the Porti ng and Loca lizing LabVIEW VIs Application No te for
more information about porting VIs among platforms and localizing VIs.
Building Stand-Alone Applications and Shared Libraries
Select Tools»Build Application or Shared Library (DLL) to use the
Application Builder to create stand-al one applications and installers or
shared libraries (DLLs) for VIs. Use shar ed libraries if you want to call the
VIs in the shared library using text-b ased programming languages, such as
LabWindows™/CVI™, Microsoft Visual C++, a nd Microsoft Visual Basic.
Shared libraries are useful when you want to share the functionality of the VIs you build with other developers. Using shared libraries provides a way for programming languages other than LabVIEW to access code developed
with LabVIEW.Other developers can run the stand-alone applica tion or use the shared
library, but they cannot edit or view the block diagrams.
Note The LabVIEW Professional Development Sy stem includes the Application Builder.
If you use the LabVIEW Base Package or Full Development System, you can purchase the Application Builder separately by visiting the National Instruments Web site at
ni.com/
info and entering the info code rdlv21 .Use the tabs in the Build Application or Shared
Library (DLL) dialog box to configure various set tings for the application or shared
library you want to build. After you define these settings, save them in a script so you can easily rebuild the application if necessary.
Refer to the LabVIEW A pplication Builder User Gui de for more
information about installing the Application Builder.

© National Instruments Corpor ation II-1 LabVIEW User ManualPart II
Building and Editing VIs
This part describes LabVIEW features , VIs, and functions you can use to
make your applications operate in sp ecific ways. The chapters in this
section describe the usefulness of each LabVIEW feature and outline each
class of VIs and functions.Part II, Building a nd Editing VI s, contains the foll owing chapters:
 Chapter 8, Loops and Structures , describes how to use loops and
structures on the block diagram to repeat blocks of code and to execute code conditionally or in a specific order.
 Chapter 9, Event-Driven Programming , describes how to dynamically
and statically register events and how to create and name your own events.
 Chapter 10, Grouping Data Using Strings, Arrays, and Clusters ,
describes how to use strings, arrays, and clusters to group data.
 Chapter 11, Local and Global Variables , describes how to use local
and global variables pass information between locations in your application that you cannot connect with a wire.
 Chapter 12, Graphs and Charts , describes how to use graphs and
charts to display plots of data in a graphical form.
 Chapter 13, Graphics and Sound VIs , describes how to display or
modify graphics and sound in VIs.
 Chapter 14, File I/O , describes how to perform file I/O operations.
 Chapter 15, Documenting and Printing VIs , describes how to
document and print VIs.
 Chapter 16, Customizing VIs , describes how to configure VIs and
subVIs to work according to your application needs.

Part II Building and Editing VIs
LabVIEW User Manual II-2 ni.com Chapter 17, Programmatically Controlling VIs , describes how to
communicate with VIs and other instances of LabVIEW so you can
programmatically control VIs and LabVIEW.
 Chapter 18, Networking in LabVIEW , describes how to use VIs to
communicate, or network, with other processes, including those that run on other applications or on remote computers.
 Chapter 19, Windows Connectivity , describes how to provide a public
set of objects, commands, and functions that other Windows applications can access.
 Chapter 20, Calling Code from Text-Based Programming Languages ,
describes how to call code from text-based programming languages and use DLLs.
 Chapter 21, Formulas and Equations , describes how to use equations
in VIs.

© National Instruments Corporation 8-1 LabVIEW User Manual8
Loops and Structures
Structures are graphical re presentations of the loop s and case statements of
text-based programming languages. Use structures on the block diagram to repeat blocks of code and to execute code conditionally or in a specific order.
Like other nodes, structures have term inals that connect th em to other block
diagram nodes, execute automatically when input data are available, and supply data to output wires when execution completes.
Each structure has a distinctive, resi zable border to enclose the section of
the block diagram that executes accordin g to the rules of the structure.
The section of the block diagram inside the structure border is called a
subdiagram. The terminals that feed da ta into and out of structures are
called tunnels. A tunnel is a connection point on a structure border.
For more information…
Refer to the LabVIEW Help for more information about using structures.
Use the following structures located on the Structures palette to control
how a block diagram executes processes:
For Loop —Executes a subdiagram a set number of times.
While Loop —Executes a subdiagram until a condition is met.
Case structure —Contains multiple subdiagrams, only one of which
executes depending on the input value passed to the structure.
Sequence structure —Contains one or more subdiagrams, which
execute in sequential order.
Formula Node —Performs mathematical op erations based on numeric
input. Refer to the Formula Nodes section of Chapter 21, Formulas
and Equations , for information about using Formula Nodes.
Event structure —Contains one or more subdiagrams that execute
depending on how the user interacts with the VI.
Right-click the border of the structure to display the shortcut menu.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-2 ni.comFor Loop and While Loop Structures
Use the For Loop and the While Loop to control repetitive operations.
For Loops
A For Loop, shown at left, executes a subdiagram a set number of times.
The value in the count terminal (an input terminal), shown at left, indicates
how many times to repeat the subdiagram. Set the count explicitly by wiring a value from outside the loop to the left or top side of the count terminal, or set the count implicitly with auto-indexing. Refer to the Auto-Indexing to Set the For Loop Count section of this chapter for more
information about setting the count implicitly.
The iteration terminal (an output terminal), shown at left, contains the
number of completed iterat ions. The iteration count always starts at zero.
During the first iteration, th e iteration terminal returns
0.
Both the count and iteration terminals are 32-bit signed integers. If you wire
a floating-point number to the count terminal, LabVIEW rounds it and coerces it to within range. If you wire
0 or a negative number to the count
terminal, the loop does not execute and the outputs contain the default data for that data type.
Add shift registers to the For Loop to pass data from the current iteration to
the next iteration. Refer to the Shift Registers and the Feedback Node in
Loops section of this chapter for more information about adding shift
registers to a loop.
While Loops
Similar to a Do Loop or a Repeat-U ntil Loop in text-based programming
languages, a While Loop, shown at left, executes a subdiagram until a condition is met.
The While Loop executes the subdiagram until the conditional terminal, an
input terminal, receives a specific Bool ean value. The default behavior and
appearance of the conditional terminal is Stop if True , shown at left.
When a conditional terminal is Stop if True , the While Loop executes its
subdiagram until the condi tional terminal receives a TRUE value. You can
change the behavior and appearance of the conditional terminal by
right-clicking the terminal or the border of the While Loop and selecting Continue if True , shown at left, from the shortcut menu. When a
conditional terminal is Continue if True , the While Loop executes its

Chapter 8 Loops and Structures
© National Instruments Corporation 8-3 LabVIEW User Manualsubdiagram until the conditional terminal receives a FALSE value. You also
can use the Operating tool to click th e conditional terminal to change the
condition.
You also can perform basic error handling using the conditional terminal of
a While Loop. When you wi re an error cluster to the conditional terminal,
only the TRUE or FALSE value of the status parameter of the error cluster
passes to the terminal. Also, the Stop if True and Continue if True
shortcut menu items change to Stop if Error and Continue while Error .
Refer to the Error Checking and Error Handling section of Chapter 6,
Running and Debugging VIs , for more information about error clusters and
error handling.
The iteration terminal (an output terminal), shown at left, contains the
number of completed iterations. The iter ation count always starts at zero.
During the first iteration, th e iteration terminal returns 0.
Add shift registers to the While Loop to pass data from the current iteration
to the next iteration. Refer to the Shift Registers and the Feedback Node in
Loops section of this chapter for more information about adding shift
registers to a loop.
Avoiding Infinite While Loops
If you place the terminal of the Boolean control outside the While Loop,
as shown in Figure 8-1, and the control is set to FALSE if the conditional terminal is Stop if True when the loop starts, you cause an infinite loop.
You also cause an infinite loop if the control outside the loop is set to TRUE and the conditional terminal is Continue if True .
Figure 8-1. Infinite While Loop
Changing the value of the control does not stop the infinite loop because the
value is only read once, before the loop starts. To stop an infinite loop, you must abort the VI by clicking the Abort button on the toolbar.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-4 ni.comAuto-Indexing Loops
If you wire an array to a For Loop or While Loop input tunnel, you can read
and process every element in that arra y by enabling auto-indexing. Refer to
Chapter 10, Grouping Data Using Strings, Arrays, and Clusters , for more
information about arrays.
When you wire an array to an input tunnel on the loop border and enable
auto-indexing on the input tunnel, elemen ts of that array enter the loop one
at a time, starting with the first elem ent. When auto-indexing is disabled,
the entire array is passed into the loop. When you auto -index an array
output tunnel, the output array receives a new element from every iteration
of the loop. Therefore, auto-indexed output arrays are always equal in size to the number of iterations.
Right-click the tunnel at th e loop border and select Enable Indexing
orDisable Indexing from the shortcut menu to enable or disable
auto-indexing. Auto-indexing for While Loops is disabled by default.
The loop indexes scalar elements from 1D arrays, 1D arrays from
2D arrays, and so on. The opposite o ccurs at output tunnels. Scalar
elements accumulate seque ntially into 1D arrays, 1D arrays accumulate
into 2D arrays, and so on.
Auto-Indexing to Se t the For Loop Count
If you enable auto-indexing on an array wired to a For Loop input terminal,
LabVIEW sets the count terminal to the array size so you do not need to wire the count terminal. Because you can use For Loops to process arrays
an element at a time, LabVIEW enable s auto-indexing by default for every
array you wire to a For Loop. Disable auto-indexing if you do not need to process arrays one element at a time.
If you enable auto-indexing for more than one tunnel or if you wire the
count terminal, the count becomes the smaller of the choices. For example, if two auto-indexed arrays enter the loop, with 10 and 20 elements respectively, and you wire a value of 15 to the count terminal, the loop
executes 10 times, and the loop indexes only the first 10 elements of the second array. If you plot data from two sources on one graph and you want to plot the first 100 elements, wire 100 to the count terminal. If one of the data sources includes only 50 elem ents, the loop executes 50 times and
indexes only the first 50 elements. Use the Array Size function to determine
the size of arrays.

Chapter 8 Loops and Structures
© National Instruments Corporation 8-5 LabVIEW User ManualWhen you auto-index an array output tunnel, the output array receives a
new element from every iteration of the loop. Therefore, auto-indexed
output arrays are always equal in size to the number of iterations. For example, if the loop executes 10 time s, the output array has 10 elements.
If you disable auto-indexing on an output tunnel, only the element from the last iteration of the loop passes to the next node on the block diagram. A bracketed glyph appears on the loop border to indicate that auto-indexing is enabled. The thickness of the wire between the output tunnel and the next
node also indicates the loop is using auto-indexing. The wire is thicker when you use auto-indexing because the wire contains an array, instead of
a scalar.
Auto-Indexing with While Loops
If you enable auto-indexing for an array entering a While Loop, the
While Loop indexes the array the same way a For Loop does. However, the number of iterations a While Loop execu tes is not limited by the size of the
array because the While Loop iterates until a specific condition is met.
When a While Loop indexes past the end of the input array, the default value for the array element type passe s into the loop. You can prevent the
default value from passing into the While Loop by using the Array Size function. The Array Size function indicat es how many elements are in the
array. Set up the While Loop to stop executing when it has iterated the same number of times as the array size.
Caution Because you cannot determine the size of the output array in advance, enabling
auto-indexing for the output of a For Loop is more efficient than with a While Loop.
Iterating too many times can cause your system to run out of memory.
Using Loops to Build Arrays
In addition to using loops to read and process elements in an array, you also
can use the For Loop and the While Loop to build arrays. Wire the output of a VI or function in the loop to th e loop border. If you use a While Loop,
right-click the resultin g tunnel and select Enable Indexing from the
shortcut menu. On the For Loop, indexing is enabled by default. The output of the tunnel is an array of every valu e the VI or function returns after each
loop iteration.
Refer to the
examples\general\arrays.llb for examples of building
arrays.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-6 ni.comShift Registers and the Fee dback Node in Loops
Use shift registers or the Feedback Node with For Loops or While Loops
to transfer values from one loop iteration to the next.
Shift Registers
Use shift registers when you want to pass values from previous iterations
through the loop. A shift register appear s as a pair of terminals, shown at
left, directly opposite each other on the vertical sides of the loop border.
The right terminal contai ns an up arrow and stores data on the completion
of an iteration. LabVIEW transfers the data connected to the right side of
the register to the next iteration. Create a shift register by right-clicking the left or right border of a loop and selecting Add Shift Register from the
shortcut menu.
A shift register transfers any data t ype and automatically changes to the
data type of the first object wired to the shift register. The data you wire to the terminals of each shift regi ster must be the same type.
Initialize a shift register by wiring a control or constant to the shift register
terminal on the left side of the loop. Initializing a shift register resets the value the shift register passes the fi rst time the loop executes when the VI
runs. If you do not initialize the register, the loop uses the value written to the register when the loop last executed or the default value for the data type
if the loop has never executed.
Use a loop with an uninitialized shift regi ster to run a VI repeatedly so that
each time the VI runs, the initial output of the shift register is the last value
from the previous execution. Use an unini tialized shift register to preserve
state information between subsequent executions of a VI. After the loop executes, the last value stored in the shift register is output from the right
terminal.
You can add more than one shift register to a loop. If you have multiple
operations that use previous iteration values within your loop, use multiple shift registers to store the data values from those different processes in the
structure.

Chapter 8 Loops and Structures
© National Instruments Corporation 8-7 LabVIEW User ManualFigure 8-2. Multiple Shift Registers
Stacked Shift Registers
Stacked shift registers le t you access data from previ ous loop iterations. To
create a stacked shift register, right- click the left terminal and select Add
Element from the shortcut menu. Stacked shift registers remember values
from multiple previous iterations an d carry those values to the next
iterations.
Stacked shift registers can only occur on the left side of the loop because
the right terminal only transfers th e data generated from the current
iteration to the next iteration.

Figure 8-3. Stacked Shift Registers
If you add another element to the left terminal, values from the last two
iterations carry over to the next iter ation, with the mo st recent iteration
value stored in the top shift register. The bottom terminal stores the data passed to it from the previous iteration.
Replacing Shift Regist ers with Tunnels
Replace shift registers with tunnels by right-clicking the shift register and
selecting Replace with Tunnels from the shortcut menu when you no
longer need to transfer values from one loop iteration to the next.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-8 ni.comIf you replace an output shift register terminal with a tunnel on a For Loop,
the wire to any node outside the loop breaks because the For Loop enables indexing by default. Right-click the tunnel and select Disable Indexing at
Source from the shortcut menu to disable indexing and automatically
correct the broken wire. If you want indexing enabled, delete the broken
wire and the indicator terminal, right-click the tunnel, and select Create
Indicator .
Refer to the Auto-Indexing Loops section of this chapter for more
information about indexing in loops.
Replacing Tunnels with Shift Registers
Replace tunnels with shift registers by right-clicking the tunnel and selecting Replace with Shift Register from the shortcut menu when you
want to transfer values from one loop iteration to the next. If no tunnel exists on the loop border opposite of the tunnel you right-clicked, LabVIEW automatically creates a pair of shift register terminals. If a tunnel
exists on the loop border opposite of the tunnel you right-clicked, LabVIEW replaces the tunnel you righ t-clicked with a shift register
terminal, and the cursor becomes a shif t register icon. Click a tunnel on the
opposite side of the loop to replace the tunnel with a shift register or click
the block diagram to place the shift regi ster on the loop border directly
across from the other shift register term inal. If the shift register terminal
appears behind a tunnel, the shift register is not wired.
If you convert a tunnel with indexing enabled to a shift register on a While
Loop, the wire to any node outside th e loop breaks because shift registers
cannot auto index. Delete the broken wire, wire the output wire to the right of the shift register to another tunnel, right-click the tunnel, and select
Enable Indexing from the shortcut menu, and wire the tunnel to the node.
Refer to the Auto-Indexing Loops section of this chapter for more
information about indexing in loops.
Feedback Node
The Feedback Node, shown at left, ap pears automatically only in a For
Loop or While Loop when you wire th e output of a subVI, function, or
group of subVIs and functions to the input of that same VI, function, or group. Like a shift register, the Feedback Node stores data when the loop completes an iteration, sends that value to the next iteration of the loop, and transfers any data type. Use the Feedba ck Node to avoid unnecessarily long
wires in loops. The Feedback Node arrow indicates in which direction the data flows along the wire.

Chapter 8 Loops and Structures
© National Instruments Corporation 8-9 LabVIEW User ManualYou also can select the Feedback Node and place it only inside a For Loop
or While Loop. If you place the Feedba ck Node on the wire before you
branch the wire that connects the data to the tunnel, the Feedback Node
passes each value to the tunnel. If y ou place the Feedback Node on the wire
after you branch the wire that connect s data to the tunnel, the Feedback
Node passes each value back to the input of the VI or function and then passes the last value to the tunnel.
For example, the For Loop in Figure 8 -4 iterates 10 times. The Feedback
Node passes the value from the previous iteration of the loop to the tunnel before it passes the value to the input of the Add function. The value in the tunnel is always the value from the previous iteration. On the last iteration of the loop, the Feedback Node holds th e last value, which in this case is
45, but does not pass that value to the tunnel or to the numeric indicator. When the VI finishes running, the va lue in the numeric indicator is 36,
which is the value from the previous, not the last, iteration of the loop.

Figure 8-4. Passing the Next to Last Value Out of the For Loop
The For Loop in Figure 8-5 also iterate s 10 times. However, the Feedback
Node passes the value from the previous iteration only to the input of the Add function each time the loop iterates . On the last iteration of the loop,
the Feedback Node passes the value from the previous iteration (36) to the input of the Add function. The Add function adds the value the iteration terminal generates (9) to the value the Feedback Node passes (36) and
sends the result to the tunnel. When the VI finishes running, the value in the
numeric indicator is
45.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-10 ni.com
Figure 8-5. Passing the Last Value Out of the For Loop
Initializing Fe edback Nodes
Right-click the Feedback Node and select Initializer Terminal from the
shortcut menu to add the Initializer terminal to the loop border to initialize the loop. When you select the Feedback Node or if you convert an initialized shift register to a Feed back Node, the loop appears with an
Initializer terminal automatically. Init ializing a Feedback Node resets the
initial value the Feedback Node passes the first time the loop executes when the VI runs. If you do not initia lize the Feedback Node, the Feedback
Node passes the last value written to the node or the default value for the data type if the loop has never executed. If you leave the input of the Initializer terminal unwire d, each time the VI runs, the initial input of the
Feedback Node is the last va lue from the previous execution.
Replacing Shift Register s with a Feedback Node
Replace a shift register with a Fee dback Node by right-clicking the shift
register and selecting Replace with Feedback Node from the shortcut
menu. Replace a Feedback Node with sh ift registers by right-clicking the
Feedback Node and selecting Replace with Shift Register from the
shortcut menu.
Controlling Timing
You might want to control the speed at which a process executes, such as
the speed at which data are plotted to a chart. You can us e a wait function
in the loop to wait an amount of time in milliseconds before the loop re-executes.Refer to the Memory and Speed Opt imiza tion section of Chapter 6,
LabVIEW Style Guid e, in the LabVIEW Development Guidelines manual
for more information about using a wait function in a loop to optimize memory usage.

Chapter 8 Loops and Structures
© National Instruments Corpor ation 8-11 LabVIEW User ManualCase and Sequence Structures
Case, Stacked Sequence, Flat Sequen ce, and Event structures contain
multiple subdiagrams. A Case st ructure executes one subdiagram
depending on the input value passed to the structure. A Stacked Sequence
and a Flat Sequence structure execute all their subdiagrams in sequential
order. An Event structure executes its subdiagrams depending on how the user interacts with the VI.
Case Structures
A Case structure, shown at left, has two or more subdiagrams, or cases. Only one subdiagram is visible at a time, and the structure executes only
one case at a time. An input value de termines which subdiagram executes.
The Case structure is simi lar to case statements or
if…then…else
statements in text-based programming languages.
The case selector label at the top of the Case structure, shown at left,
contains the name of the selector value that corresponds to the case in the center and decrement and incremen t arrows on each side. Click the
decrement and increment arrows to scroll through the available cases. You also can click the down arrow next to the case name and select a case from
the pull-down menu.
Wire an input value, or selector, to th e selector terminal, shown at left, to
determine which case executes. You must wire an integer, Boolean value, string, or enumerated type value to the selector terminal. You can position
the selector terminal anywhere on the le ft border of the Case structure. If
the data type of the selector term inal is Boolean, the structure has a
TRUE
case and a FALSE case. If the selector terminal is an integer, string, or
enumerated type value, the struct ure can have any number of cases.
Specify a default case for the Case stru cture to handle out-of-range values.
Otherwise, you must explicitly list every possible input value. For example, if the selector is an integer and you specify cases for
1, 2, and 3, you must
specify a default case to execute if the input value is 4 or any other valid
integer value.
Case Selector Values and Data Types
You can enter a single value or lists a nd ranges of values in the case selector
label. For lists, use commas to separa te values. For numer ic ranges, specify
a range as 10..20 , meaning all numbers from 10 to 20 inclusively.
You also can use open-ended ranges. For example, ..100 represents all

Chapter 8 Loops and Structures
LabVIEW User Manual 8-12 ni.comnumbers less than or equal to 100, and 100.. represents all numbers
greater than or equal to 100. You also can combine lists and ranges, for example
..5, 6, 7..10, 12, 13, 14 . When you enter values that
contain overlapping ranges in the sa me case selector label, the Case
structure redisplays the label in a more compact form. The previous
example redisplays as ..10, 12..14 . For string ranges, a range of a..c
includes all of a and b, but not c. A range of a..c,c includes the ending
value of c.
When you enter string and enumerated values in a case selector label, the
values display in quotation marks, for example “red” , “green” , and
“blue” . However, you do not need to type the quotation marks when you
enter the values unless the string or enumerated value contains a comma or
range symbol ( "," or ".." ). In a string value, use special backslash codes
for non-alphanumeric characters, such as \r for a carriage return, \n for a
line feed, and \t for a tab. Refer to the LabVIEW Help for a list of these
backslash codes.
If you change the data type of the wi re connected to the selector terminal
of a Case structure, the Case stru cture automatically converts the case
selector values to the new data type when possible. If you convert a numeric
value, for example 19, to a string, the string value is “19” . If you convert a
string to a numeric value, LabVIEW conv erts only those string values that
represent a number. The other values remain strings. If you convert a
number to a Boolean value, LabVIEW converts 0 to FALSE and 1 to
TRUE, and all other numeric values become strings.
If you enter a selector value that is not the same type as the object wired to
the selector terminal, the value appears red to indicate that you must delete or edit the value before the structure can execute, and the VI will not run.
Also, because of the possible round-o ff error inherent in floating-point
arithmetic, you cannot use floating-poi nt numerics as case selector values.
If you wire a floating-point value to the case, LabVIEW rounds the value to the nearest even integer. If you type a floating-point value in the case selector label, the value appears red to indicate that you must delete or edit
the value before the structure can execute.
Input and Output Tunnels
You can create multiple input and output tunnels for a Case structure. Inputs are available to al l cases, but cases do not need to use each input.
However, you must define each out put tunnel for each case. When you
create an output tunnel in one case, tunnels appear at the same position on
the border in all the othe r cases. If at least one out put tunnel is not wired,
all output tunnels on the structure appear as white squares. You can define

Chapter 8 Loops and Structures
© National Instruments Corpor ation 8-13 LabVIEW User Manuala different data source for the same out put tunnel in each case, but the data
types must be compatible for each case. You also can righ t-click the output
tunnel and select Use Default If Unwired from the shortcut menu to use
the default value for the tunnel data type for all unwired tunnels.
Using Case Structures for Error Handling
When you wire an error cluster to the se lector terminal of a Case structure,
the case selector label displays two cases, Error and No Error , and the
border of the Case struct ure changes color—red for Error and green for
No Error . The Case structure executes th e appropriate case subdiagram
based on the error state. Refer to the Error Handling section of Chapter 6,
Running and Debugging VIs , for more information about handling errors.
Sequence Structures
A sequence structure contains one or more subdiagrams, or frames, that
execute in sequential order. Sequence structures are not used commonly in
LabVIEW. Refer the Using Sequence Structures and the Avoiding
Overusing Sequence Structures sections of this chapter for more
information on when to use sequence structures.
There are two types of sequence struct ures, the Flat Sequence structure and
the Stacked Sequence structure.
Flat Sequence Structure
The Flat Sequence structure, shown at left, displays all the frames at once
and executes the frames from left to right until the last frame executes. Use
the Flat Sequence structure to avoid using sequence locals and to better
document the block diagram. When you add or delete frames in a Flat
Sequence structure, the st ructure resizes automati cally. To rearrange the
frames in a Flat Sequen ce structure, cut and pa ste from one frame to
another.
Stacked Sequence Structure
The Stacked Sequence structure, show n at left, stacks each frame so you
see only one frame at a time and executes frame 0, then frame 1, and so on
until the last frame execute s. The Stacked Sequence structure returns data
only after the last frame executes. Us e the Stacked Sequence structure if
you want to conserve space on the block diagram.
The sequence selector identifier, shown at left, at the top of the Stacked
Sequence structure contains the curren t frame number and range of frames.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-14 ni.comUse the sequence selector identifier to navigate through the available
frames and rearrange frames. The frame label in a Stacked Sequence
structure is similar to the case select or label of the Case structure. The
frame label contains the frame numbe r in the center and decrement and
increment arrows on each side. Click the decrement and increment arrows
to scroll through the available frames . You also can click the down arrow
next to the frame number and select a frame from the pull-down menu.
Right-click the border of a frame, select Make This Frame , and select a
frame number from the shortcut menu to rearrange the or der of a Stacked
Sequence structure.
Unlike the case selector label, you can not enter values in the frame label.
When you add, delete, or rearrange fr ames in a Stacked Sequence structure,
LabVIEW automatically adjusts th e numbers in the frame labels.
Using Sequence Structures
Use the sequence structures to contro l the execution order when natural
data dependency does not exist. A nod e that receives data from another
node depends on the other node for data and always executes after the other node completes execution.
Within each frame of a sequence struct ure, as in the rest of the block
diagram, data dependency determines the execution order of nodes. Refer to the Data Dependency and Artificial Data Dependency section of
Chapter 5, Building the Block Diagram , for more information about data
dependency.
The tunnels of Stacked Sequence structur es can have only one data source,
unlike Case structures. The output can emit from any frame, but data leave
the Stacked Sequence structure only wh en all frames co mplete execution,
not when the individual frames complete execution. As with Case structures, data at input tunnels are available to all frames.
To pass data from one frame to any subsequent frame of a Stacked
Sequence structure, use a sequence lo cal terminal, shown at left. An
outward-pointing arrow appears in the sequence local terminal of the frame
that contains the data source. The term inal in subsequent frames contains
an inward-pointing arrow, indicating that the terminal is a data source for that frame. You cannot use the sequenc e local terminal in frames that
precede the first frame where you wired the sequence local.
Refer to the
examples\general\structs.llb for examples of using
sequence structures.

Chapter 8 Loops and Structures
© National Instruments Corpor ation 8-15 LabVIEW User ManualAvoiding Overusing Sequence Structures
To take advantage of the inherent parallelism in LabVIEW, avoid
overusing sequence structures. Sequence structures guaran tee the order of
execution and prohibit parallel operations. For example, asynchronous tasks that use I/O devices, such as PXI, GPIB, serial ports, and DAQ
devices, can run concurrently with other operations if sequence structures do not prevent them from doing so. Sequ ence structures also hide sections
of the block diagram and interrupt the natural left-to-right flow of data.
When you need to control the execution order, consider establishing data
dependency between the nodes. For example, you can use error I/O to control the execution order of I/O. Refer to the Error Handling section
of Chapter 6, Running and Debugging VIs , for more information about
error I/O.
Also, do not use sequence structures to update an indicator from multiple
frames of the sequence st ructure. For example, a VI used in a test
application might have a Status indicator that displays the name of the
current test in progress. If each test is a subVI called from a different frame,
you cannot update the indi cator from each frame, as shown by the broken
wire in the Stacked Sequen ce structure in Figure 8-6.
Figure 8-6. Updating an Indicator from Different Frames in a Stacked
Sequence Structure
Because all frames of a Stacked Sequen ce structure execute before any data
pass out of the structure, only one frame can assign a value to the Status
indicator.
Instead, use a Case structure and a While Loop, as shown in Figure 8-7.

Chapter 8 Loops and Structures
LabVIEW User Manual 8-16 ni.comFigure 8-7. Updating an Indicator from Different Cases in a Case Structure
Each case in the Case structure is equi valent to a sequence structure frame.
Each iteration of the While Loop executes the next case. The Status
indicator displays the status of the VI for each case. The Status indicator is
updated in the case before the one that calls the corresponding subVI
because data pass out of the structure after each case executes.
Unlike a sequence structure, a Case stru cture can pass data to end the While
Loop during any case. For example, if an error occurs while running the
first test, the Case structure can pass FALSE to the conditional terminal to end the loop. However, a sequence structure must execute all its frames even if an error occurs.
Replacing Sequence Structures
Right-click a Flat Sequence structure and select Replace with Stacked
Sequence Structure from the shortcut menu to convert a Flat Sequence
structure to a Stacked Sequence struct ure. Right-click a Stacked Sequence
structure and select Replace»Replace wi th Flat Sequence from the
shortcut menu to convert a Stacked Sequence structure to a Flat Sequence
structure.

© National Instruments Corporation 9-1 LabVIEW User Manual9
Event-Driven Programming
LabVIEW is a dataflow programming environment where the flow of data
determines the execution order of bl ock diagram elements. Event-driven
programming features extend the LabV IEW dataflow environment to allow
the user’s direct interaction with th e front panel and other asynchronous
activity to further influence block diagram execution.
Note Event-driven programming f eatures are available only in the LabVIEW Full and
Professional Development System s. You can run a VI built with these features in the
LabVIEW Base Package, but you cannot reconfigure the event-handling components.
For more information…
Refer to the LabVIEW Help for more information about using events in your
application.
What Are Events?
An event is an asynchronous notification that something has occurred.
Events can originate from the user interface, external I/O, or other parts of
the program. User interface events incl ude mouse clicks, key presses, and
so on. External I/O events include hardware timers or triggers that signal when data acquisition completes or when an error condition occurs.
Other types of events can be gene rated programmatically and used to
communicate with different parts of the program. LabVIEW supports user
interface and programmatically genera ted events but does not support
external I/O events.
In an event-driven program, events that occu r in the system directly
influence the execution flow . In contrast, a procedur al program executes in
a pre-determined, sequential order. Event-driven programs usually include a loop that waits for an event to occur, executes code to respond to the event, and reiterates to wait for the next ev ent. How the progra m responds to each
event depends on the code written for that specific event. The order in which an event-driven program executes depends on which events occur

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-2 ni.comand on the order in which they occur. Some sections of the program might
execute frequently because the events they handle occur frequently, and
other sections of the program might no t execute at all because the events
never occur.
Why Use Events?
Use user interface events in LabVIE W to synchronize user actions on the
front panel with block diagram executi on. Events allow you to execute a
specific event-handling case each time a user performs a specific action.
Without events, the block diagram must poll the state of front panel objects
in a loop, checking to see if any ch ange has occurred. Polling the front
panel requires a significant amount of CPU time and can fail to detect changes if they occur too quickly. By using events to respond to specific user actions, you eliminate the need to poll the front panel to determine which actions the user performed. Instead, LabVIEW actively notifies the
block diagram each time an interacti on you specified occurs. Using events
reduces the CPU requirements of the program, simplifies the block diagram code, and guarantees that the block diagram can respond to all interactions the user makes.
Use programmatically generated events to communicate among different
parts of the program that have no dataflow dependency. Programmatically generated events have many of the same advantages as user interface events and can share the same event handlin g code, making it easy to implement
advanced architectures, such as qu eued state machines using events.
Event Structure Components
Use the Event structure, shown at left , to handle events in a VI. The Event
structure works like a Ca se structure with a built-in Wait On Notification
function. The Event structure can have multiple cases, each of which is a
separate event-handling ro utine. You can configur e each case to handle one
or more events, but only one of these events can occur at a time. When the
Event structure executes, it waits until one of the configured events occur,
then executes the correspon ding case for that event. The Event structure
completes execution after handling exactl y one event. It does not implicitly
loop to handle multiple events. Like a Wait on Notification function, the Event structure can time out while wait ing for notification of an event.
When this occurs, a specific Timeout case executes.
The event selector label at the top of the Event structure, shown at left,
indicates which events cause the currently displayed case to execute. View other event cases by clicking the down arrow next to the case name and selecting another case from the shortcut menu.

Chapter 9 Event-Driven Programming
© National Instruments Corporation 9-3 LabVIEW User Manual(Windows) You also can move the cursor over the selector label and press
the <Ctrl> key while moving the mouse wheel. (UNIX) Press the
<Meta> key.
The Timeout terminal at the top left co rner of the Event structure, shown at
left, specifies the number of milliseconds to wait for an event before timing out. The default is –1, which specifies to wait indefinitely for an event to occur. If you wire a value to the Timeout terminal, you must provide a Timeout case.
The Event Data Node, shown at left, behaves similarly to the Unbundle By
Name function. This node is attached to the inside left border of each event
case. The node identifies the data LabVIEW provides when an event occurs. You can resize this node vertical ly to add more data items, and you
can set each data item in the node to access any event data element. The
node provides different data elements in each case of the Event structure
depending on which event(s) you configure that case to handle. If you configure a single case to handle multiple events, the Event Data Node provides only the event data elements that are common to all the events
configured for that case.
The Event Filter Node, shown at left, is similar to the Event Data Node.
This node is attached to the inside ri ght border of filter event cases. The
node identifies the subset of data availa ble in the Event Data Node that the
event case can modify. The node disp lays different data depending on
which event(s) you configure that case to handle. By default, these items
are inplace to the corresponding data items in the Event Data Node. If you
do not wire a value to a data item of an Event Filter Node, that data item
remains unchanged. Refer to the Notify and Filter Events section of this
chapter for more informat ion about filter events.
The dynamic event terminals, shown at left, are available by right-clicking
the Event structure and selecting Show Dynamic Event Terminals from
the shortcut menu. Thes e terminals are used on ly for dynamic event
registration. Refer to the Dynamic Event Registration and Modifying
Registration Dynamically sections of this chapter for more information
about using these terminals.
Note Like a Case structure, the Event structure supports tunnels. However, by default you
do not have to wire Event structure output tunnels in every case. All unwired tunnels use the default value for the tunnel data type. Right-click a tunnel and deselect Use Default If
Unwired from the shortcut menu to revert to the default Case structure behavior where
tunnels must be wired in all cases.

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-4 ni.comRefer to the LabVIEW Help for information about the default values for
data types.
Notify and Filter Events
There are two types of user interface events—notify and filter.
Notify events are an indication that a user action has already occurred, such
as when the user has changed the valu e of a control. Us e notify events to
respond to an event after it has occu rred and LabVIEW has processed it.
You can configure any number of Event structures to respond to the same notify event on a specific object. When the event occurs, LabVIEW sends
a copy of the event to each Event stru cture configured to handle the event
in parallel.
Filter events inform you that the us er has performed an action before
LabVIEW processes it, which allows you to customize how the program responds to interactions with the user interface. Use filter events to
participate in the handling of the event, possibly overriding the default behavior for the event. In an Event structure case for a filter event, you can validate or change the event data before LabVIEW finishes processing it, or you can discard the event entirely to prevent the change from affecting
the VI. For example, you can configur e an Event structure to discard the
Panel Close? event, preventing the user from interactively closing the front panel of the VI. Filter events have names that end with a question mark, such as Panel Close?, to help you distinguish them from notify events. Most filter events have an associated notif y event of the same name, but without
the question mark, which LabVIEW gene rates after the filter event if no
event case discarded the event.
As with notify events, you can configur e any number of Event structures to
respond to the same filter event on a specific object. However, LabVIEW sends filter events sequen tially to each Event stru cture configured for the
event. The order in which LabVIEW se nds the event to each Event structure
depends on the order in which the events were registered. Refer to the Using Events in LabVIEW section of this chapter for more information
about event registration. Each Event st ructure must complete its event case
for the event before LabVIEW can notify the next Event structure. If an Event structure case changes any of the event data, LabVIEW passes the changed data to subsequent Event stru ctures in the chain. If an Event
structure in the chain discards the event, LabVIEW does not pass the event
to any Event structures remaining in the chain. LabVIEW completes
processing the user action which tr iggered the event only after all
configured Event structures handle the event without discarding it.

Chapter 9 Event-Driven Programming
© National Instruments Corporation 9-5 LabVIEW User ManualNote National Instruments recommends you use filter events only when you want to take
part in the handling of the user action, either by discarding the event or by modifying the event data. If you only want to know that the user performed a partic ular action, use notify
events.
Event structure cases that handle filter events have an Event Filter Node as
described in the Event Structure Components section of this chapter. You
can change the event data by wiring ne w values to these terminals. If you
do not wire a data item, that item re mains unchanged. You can completely
discard an event by wiring a TRUE value to the Discard? terminal.
Note A single case in the Event structure canno t handle both notify and filter events. A
case can handle multiple notify events but can handle multiple filter events only if the event data items are identical for all events.
Using Events in LabVIEW
LabVIEW can generate many different events. To avoid generating unwanted events, use event registration to specify which events you want
LabVIEW to notify you about. LabVIEW supports two models for event registration—static and dynamic.
Static registration allows you to specify which events on the front panel of
a VI you want to handle in each Ev ent structure case on the block diagram
of that VI. LabVIEW registers these ev ents automatically when the VI runs.
Each event is associated with a control on the front panel of the VI, the front
panel window of the VI as a whole, or the LabVIEW application. You cannot statically configure an Event st ructure to handle events for the front
panel of a different VI. Configuration is static because you cannot change
at run time which events the Even t structure handles. Refer to the Static
Event Registration section of this chapter for more information about using
static registration.
Dynamic event registration avoids the limitations of static registration by
integrating event registration with the VI Server, which allows you to use Application, VI, and Control references to specify at run time the objects
for which you want to generate events. Dynamic registration provides more flexibility in controlling what events LabVIEW generates and when it generates them. However, dynamic registration is more complex than static registration because it requires using VI Server references with block
diagram functions to explicitly register and unregister for events rather than
handling registration automatically using the information you configured in the Event structure. Refer to the Dynamic Event Registration section of this
chapter for more information about using dynamic registration.

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-6 ni.comNote In general, LabVIEW generates user interface events only as a result of direct user
interaction with the active front panel. LabVIE W does not generate events, such as Value
Change, when you use the VI Server, global va riables, local variable s, DataSocket, and so
on. Refer to the Value (Signaling) property in the LabVIEW Help for information about
generating a Value Change event programm atically. In many cases, you can use
programmatically generated events instead of queues and notifiers.
The event data provided by a LabVIEW event always include a time stamp,
an enumeration that indicates whic h event occurred, and a VI Server
reference to the object that trigge red the event. The time stamp is a
millisecond counter you can use to co mpute the time elapsed between two
events or to determine the order of occurrence. The reference to the object
that generated the event is strictly typed to the VI Server class of that object.
Events are grouped into classes accordin g to what type of object generates
the event, such as Application, VI, or Control. If a single case handles
multiple events for objects of different VI Server classes, the reference type
is the common parent class of all obj ects. For example, if you configure a
single case in the Event structure to handle events for a digital numeric control and a color ramp control, the type of the control reference of the
event source is Numeric because th e digital numeric and color ramp
controls are in the Numeric class. Refer to Chapter 17, Programmatically
Controlling VIs , for more information about using VI Server classes.
Note If you register for the same event on both the VI and Control class, LabVIEW
generates the VI event first. LabVIEW generates Control events for container objects, such as clusters, before it generates events for the objects they contain. If the Event structure
case for a VI event or for a Control event on a container object discards the event,
LabVIEW does not generate further events.
Each Event structure and Register Fo r Events node on the block diagram
owns a queue that LabVIEW uses to store events. When an event occurs, LabVIEW places a copy of the event in to each queue registered for that
event. An Event structure handles all ev ents in its queue and the events in
the queues of any Register For Events nodes that you wired to the dynamic event terminals of the Event struct ure. LabVIEW uses these queues to
ensure that events are reliably delive red to each registered Event structure
in the order the events occur.
By default, LabVIEW locks the front panel that contains the object that
generates an event until all Event st ructures finish handling the event.
While the front panel is locked, LabVIEW does not process front panel activity but places those interactions in a buffer and handles them when the
front panel is unlocked. Front panel locking does not affect certain actions,

Chapter 9 Event-Driven Programming
© National Instruments Corporation 9-7 LabVIEW User Manualsuch as moving the window, interactin g with the scrollbars, and clicking the
Abort button. You can disable front panel locking for notify events by
removing the checkmark from the option in the Edit Events dialog box.
Front panel locking must be enabled for filter events to ensure the internal state of LabVIEW is not altered before it has an opportunity to completely process the pending event.
LabVIEW can generate events even wh en no Event structure is waiting to
handle them. Because the Event structure handles only one event each time it executes, place the Event structure in a While Loop to ensure that an
Event structure can handle all events that occur.
Caution If no Event structure executes to handl e an event and front panel locking is
enabled, the user interface of the VI become s unresponsive. If this occurs, click the Abort
button to stop the VI. You can disable panel locking by right-clicking the Event structure and removing the checkmark from the Lock front panel until th e event case for this
event completes checkbox in the Edit Events dialog box. You cannot turn off front panel
locking for filter events.
Refer to the LabVIEW Help for information about caveats when using
Event structures and for inform ation about available events.
Static Event Registration
Static event registration is available on ly for user interface events. Use the
Edit Events dialog box to configure an Event structure to handle a
statically registered event. Select the event source, which can be the
application, the VI, or an individual control. Select a specific event the
event source can generate, such as Panel Resize, Value Change, and so on. Edit the case to handle the event data according to the application
requirements. Refer to the LabVIEW Help for more information about the
Edit Events dialog box and how to register events statically.
LabVIEW statically registers events automatically and tr ansparently when
you run a VI that contains an Event structure. LabVIEW generates events
for a VI only while that VI is runnin g or when another r unning VI calls the
VI as a subVI.
When you run a VI, LabVIEW sets that top-level VI and the hierarchy of
subVIs the VI calls on its block diagram to an execution state called
reserved. You cannot edit a VI or click the Run button while the VI is in the
reserved state because the VI can be cal led as a subVI at any time while its
parent VI runs. When LabVIEW sets a VI to the reserved state, it automatically registers the events you statically configured in all Event

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-8 ni.comstructures on the block diagram of that VI. When the top-level VI finishes
running, LabVIEW sets it and its subVI hierarchy to the idle execution state and automatically unregisters the events.
Refer to the
examples\general\uievents.llb for examples of using
static event registration.
Dynamic Event Registration
Dynamic event registration gives you complete control over which events LabVIEW generates and when it generates them. Use dynamic registration if you want event generation to occur dur ing only part of the application or
if you want to change which VIs or controls generate events while your
application is running. With dynamic registration, you can handle events in a subVI rather than only in the VI where the events are generated.
Handling dynamically registered events involves the following four main
steps:
1. Obtain VI Server references to the objects for which you want to
handle events.
2. Register for events on the objects by wiring the VI Server references to
the Register For Events node.
3. Enclose the Event structure in a Wh ile Loop to handle events on the
objects until a terminating condition occurs.
4. Use the Unregister For Events function to stop event generation.
To dynamically register for events on an object, first obtain a VI Server
reference to the object. Use the Open Application Reference and Open VI
Reference functions to obtain application and VI references. To obtain a reference for a control, use a Property Node to query a VI for its controls
or right-click the control and select Create»Reference from the shortcut
menu to create a control refe rence constant. Refer to the Application and VI
References section of Chapter 17, Programmatically Controlling VIs , for
more information about using VI Server references.
Use the Register For Events function to dynamically register for events.
You can resize the Register For Events node to show one or more event
source inputs. Wire an application, VI, or control reference to each event source input. Right-click each input and select which event you want to
register for from the Events shortcut menu. The events from which you can
select depend on the VI Server reference type you wire to the event source input. The events on the Events shortcut menu are the same events you see
in the Edit Events dialog box when you statical ly register events. When the

Chapter 9 Event-Driven Programming
© National Instruments Corporation 9-9 LabVIEW User ManualRegister For Events node executes, LabVIEW registers for the specified
event on the object associated with each event source input reference. Once
you register events, LabVIEW queues ev ents as they occur until an Event
structure handles them. Actions that occur before the node executes do not generate events unless another object previously registered for them.
Note Unlike a Property Node, the Register For Events node does not require you to wire
the top left input. Use this input only when you want to modify an existing registration. Refer to the Modifying Registration Dynamically section of this chapter for more
information about event re-registration.
The dynamic event terminals, available by right-clicking the Event
structure and selecting Show Dynamic Event Terminals from the shortcut
menu, behave similarly to shift register s. The left terminal accepts an event
registration refnum or a cluster of ev ent registration refnums. If you do not
wire the inside right terminal, it carries the same data as the left terminal. However, you can wire the event registration refnum or cluster of event registration refnums to the inside right terminal through a Register For Events node and modify the event registration dynamically. Refer to the Modifying Registration Dynamically section of this chapter for more
information about using dynamic event terminals.
The output of the Register For Events node is an event registration refnum,
which is a strict data type LabVIEW uses to propagate information about registered events to the Event structure. You can vi ew the registered events
in the Context Help window by idling the cursor over the event registration
refnum. After you configure the Register For Events node, wire the event
registration refnum output of the Register For Events node to the dynamic
event terminal on the left side of an Event structure and configure the Event
structure to handle the registered events. Avoid branching an event
registration refnum wire b ecause that allows multip le Event structures to
pull events from one queue and introd uces a race conditi on that can cause
unpredictable behavior.
To configure an Event st ructure to handle a dynami cally registered event,
use the Edit Events dialog box. The Event Sources section of the dialog
box contains a Dynamic subheading that lists each dynamically registered
event source. The names of the event sources are the same names as the references you wired to the Register For Events node connected to the
Event structure and are listed in the sa me order. Select the event source you
want from the Dynamic list. Notice that the same event you registered
using the Register For Events node appears highlighted in the Events
section. After you select the event, edit the case to handle the event data
according to the application requirements.

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-10 ni.comStop event generation by wiring the dynamic event terminal on the right
side of the Event Structure to the event registration refnum input of an
Unregister For Events function outsid e the While Loop that contains the
Event structure. When the Unregist er For Events function executes,
LabVIEW unregisters all events the ev ent registration refnum specifies,
destroys the event queue associated wi th the event registration refnum, and
discards any events that remain in the queue. If you do not unregister
events, and the user performs actions that generate events after the While
Loop that contains the Event structure finishes, LabVIEW queues events indefinitely, which can cause the VI to become unresponsive if you configured the events to lock the front panel. In this event, LabVIEW destroys the event queue when the VI goes idle.
LabVIEW also unregisters all events automatically when the top-level VI
finishes running. However, National Instruments recommends that you unregister events explicitly, especially in a long-running application, to conserve memory resources.
Dynamic Event Example
The block diagram in Figure 9-1 demonstrates how to use dynamic event registration using the Mouse Enter even t on a string control as an example.

Figure 9-1. Dynamically Registering Events
Refer to the LabVIEW Help for more information about how to register
events dynamically.
Refer to the examples\general\dynamicevents.llb for examples of
dynamically regi stering events.

Chapter 9 Event-Driven Programming
© National Instruments Corpor ation 9-11 LabVIEW User ManualModifying Registration Dynamically
If you register for events dynamically, you can modify the registration
information at run time to change which objects LabVIEW generates
events for. Wire the top left event registration refnum input of a Register
For Events node if you want to modify the existing registration associated with the refnum you wire rather than create a new registration. When you
wire the event registration refnum input, the node automatically resizes
to show the same events on the same types of references as you specified in the Register For Events node that originally created the event registration
refnum. You cannot manually resize or reconfigure the function while the event registration refnum input is wired.
If you wire an object reference to an event source input of a Register For
Events node and you also have wired the event registration refnum input,
the node replaces whatever reference was previously registered through the corresponding event source input of the original Register For Events node.
You can wire the Not a Re fnum constant to an event source input to
unregister for an individual event. If you do not wire an event source input,
LabVIEW does not change the regi stration for that event. Use the
Unregister For Events function if you want to unregister for all events associated with an ev ent registration refnum.
The example in Figure 9-2 shows how you can dynamically change at run
time which objects LabVIEW generate s events for. When the following
block diagram executes, LabVIEW re gisters the Numeric reference and
waits for an event to o ccur on the associated Numeric control. When
LabVIEW generates a Value Change event for the Numeric control, the
Numeric Value Change event case execute s a Register For Events node to
change the numeric control registered for the Value Change event from
Numeric to Numeric 2 . If the user subsequently changes the value of the
Numeric control, LabVIEW does not ge nerate a Value Change event.
However, changes to the Numeric 2 control generate Value Change events.
Each time LabVIEW generates a Value Change event for the Numeric 2
control, the Register For Events node executes but has no effect because the
Numeric 2 control is already registered for the Value Change event.

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-12 ni.com
Figure 9-2. Dynamically Mo difying Event Registration
Note You cannot dynamically modify statically registered events.
User Events
You programmatically can create and name your own events, called user
events, to carry user-defined data. Li ke queues and notifiers, user events
allow different parts of an appli cation to communicate asynchronously.
You can handle both user interface an d programmatically generated user
events in the same Event structure.
Creating and Registering User Events
To define a user event, wire a block diagram object, such as a front panel
terminal or block diagram constant, to the Create User Ev ent function. The
data type of the object defines the data type of the user event. The label of
the object becomes the name of the user event. If the data type is a cluster,
the name and type of each field of the cluster define the data the user event
carries. If the data type is not a cluste r, the user event carries a single value
of that type, and the label of the obj ect becomes the name of the user event
and of the single data element.
The user event out output of the Create User Ev ent function is a strictly
typed refnum that carries the name and da ta type of the user event. Wire the
user event out output of the Create User Event function to an event source
input of the Register For Events node.
Handle a user event the same way you handle a dynamically registered user
interface event. Wire the event registration refnum output of the Register
For Events node to the dynamic event term inal on the left side of the Event

Chapter 9 Event-Driven Programming
© National Instruments Corpor ation 9-13 LabVIEW User Manualstructure. Use the Edit Events dialog box to configure a case in the Event
structure to handle the event. The name of the user even t appears under the
Dynamic subheading in the Event Sources section of the dialog box.
The user event data items appear in th e Event Data Node on the left border
of the Event structure. User events ar e notify events and can share the same
event case of an Event structure as user interface events or other user events.
You can wire a combination of user ev ents and user interface events to the
Register For Events node.
Generating User Events
Use the Generate User Event functi on to deliver the user event and
associated data to other parts of an application through an Event structure
configured to handle the event. Th e Generate User Event function accepts
a user event refnum and a value for the event data. The data value must
match the data type of the user event.
If the user event is not registered, th e Generate User Event function has no
effect. If the user event is registered but no Event structure is waiting on it,
LabVIEW queues the user event and da ta until an Event structure executes
to handle the event. You can register fo r the same user event multiple times
by using separate Register For Event nodes, in which case each queue associated with an even t registration refnum recei ves its own copy of the
user event and associated event data each time the Generate User Event
function executes.
Note To simulate user interaction with a front panel, you can create a user event that has
event data items with the same names and data types as an existing user interface event.
For example, you can create a user event called MyValChg by using a cluster of two
Boolean fields named OldVal and NewVal , which are the same event data items the Value
Change user interface event associates with a Boolean control. You can share the same
Event structure case for the simulated MyValChg user event and a real Boolean Value
Change event. The Event structure executes the event case if a Generate User Event node
generates the user event or if a us er changes the value of the control.
Unregistering User Events
Unregister user events wh en you no longer need them. In addition, destroy
the user event by wiring the user event refnum to the user event input of
the Destroy User Event function. Wire the error out output of the
Unregister For Events function to the error in input of the Destroy User
Event function to ensure that the f unctions execute in the correct order.

Chapter 9 Event-Driven Programming
LabVIEW User Manual 9-14 ni.comLabVIEW unregisters all events and destroys existing user events
automatically when the top-level VI finishes running. However, National Instruments recommends that you unregister and destroy user events explicitly, especially in a long-running application, to conserve memory
resources.
User Event Example
The block diagram in Figure 9-3 show s how to use user events. A block
diagram constant cluster specifies the name of the user event, My Data ,
and the data type for th e event, a string called string . The Register For
Events node registers for the user event on the user event refnum. An Event structure in a While Loop wa its for the event to occur. In parallel with the
While Loop, the Generate User Even t function sends the event, which
causes the User Event case to execute in the Event structure. When the
While Loop terminates, the VI unregiste rs for the event and destroys the
user event.
Build the VI in Figure 9-3 and then use execution highlighting to see how
the event data move from node to node through the VI.

Figure 9-3. Generating User Events
Refer to the examples\general\dynamicevents.llb for examples of
dynamically regi stering events.

© National Instruments Corpor ation 10-1 LabVIEW User Manual10
Grouping Data Using Strings,
Arrays, and Clusters
Use strings, arrays, and clusters to group data. Strings group sequences of
ASCII characters. Arrays group data el ements of the same type. Clusters
group data elements of mixed types.
For more information…
Refer to the LabVIEW Help for more information about grouping data using
strings, arrays, and clusters.
Strings
A string is a sequence of displayable or non-displayable ASCII characters.
Strings provide a platform-independent format for information and data. Some of the more common applicatio ns of strings include the following:
 Creating simple text messages.
 Passing numeric data as character strings to instruments and then
converting the strings to numerics.
 Storing numeric data to disk. To store numerics in an ASCII file, you
must first convert numerics to strings before writing the numerics to a disk file.
 Instructing or prompting the user with dialog boxes.
On the front panel, strings appear as tables, text entry boxes, and labels.
Edit and manipulate strings with the String functions on the block diagram. You format strings for use in other applications, such as word processing applications and spreadsheets, or for use within other VIs and functions.

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-2 ni.comStrings on the Front Panel
Use the string controls and indicators to simulate text entry boxes and
labels. Refer to the String Controls and Indicators section of Chapter 4,
Building the Front Panel , for more information about string controls and
indicators.
String Display Types
Right-click a string control or indicator on the front panel to select from the display types shown in Table 10-1. The table also shows an example message in each display type.
Tables
Use the table control to create a table on the front panel. Each cell in a table
is a string, and each cell resides in a column and a row. Therefore, a table
is a display for a 2D array of strings. Figure 10-1 shows a table and all its parts. Refer to the Arrays section of this chapter for more information about
arrays.Table 10-1. String Display Types
Display Type Description Message
Normal
DisplayDisplays printable characters using the font of the control. Non-displayable characters generally appear as boxes. There are four display types.
\ is a backslash.
‘\’ Codes
DisplayDisplays backslash codes for all non-displayable characters. There\sare\sfour\sdisplay\st
ypes.\n\\\sis\sa\sbackslash.
Password
DisplayDisplays an asterisk ( *) for each
character including spaces.****************************
*****************
Hex Display Displays the ASCII value of each
character in hex instead of the character itself.5468 6572 6520 6172 6520 666F
7572 2064 6973 706C 6179 2074 7970 6573 2E0A 5C20 6973 2061 2062 6163 6B73 6C61 7368 2E

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corpor ation 10-3 LabVIEW User ManualFigure 10-1. Parts of a Table
Programmatically Editing Strings
Use the String functions to edit strings in the following ways:
 Search for, retrieve, and replace ch aracters or substrings within a
string.
 Change all text in a string to upper case or lower case.
 Find and retrieve matching patterns within a string.
 Retrieve a line from a string. Rotate and reverse text within a string.
 Concatenate two or more strings.
 Delete characters from a string.
Refer to the
examples\general\strings.llb for examples of using
the String functions to edit strings. Refer to the Memory and Speed
Optimization section of Chapter 6, LabVIEW Style Guide , in the LabVIEW
Development Guidelines manual for more information about minimizing
memory usage when editing strings programmatically.1 Cell indicated by index values
2 Column headings3 Vertical scrollbar4 Horizontal scrollbar5 Row headings6 Horizontal index7 Vertical index
7
6
5
432 1

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-4 ni.comFormatting Strings
To use data in another VI, function, or application, you often must convert
the data to a string and then format the string in a way that the VI, function,
or application can read. For example, Microsoft Excel exp ects strings that
include delimiters, such as tab, comm as, or blank spaces. Excel uses the
delimiter to segregate numbers or words into cells.
For example, to write a 1D array of numerics to a spreadsheet using the
Write File function, you must format the array into a string and separate each numeric with a delimiter, such as a tab. To write an array of numerics
to a spreadsheet using the Write to Sp readsheet File VI, you must format
the array with the Array to Spreadsheet String function and specify a format
and a delimiter.
Use the String functions to perform the following tasks:
 Concatenate two or more strings.
 Extract a subset of strings from a string.
 Convert data into strings. Format a string for use in a word pr ocessing or spread sheet application.
Use the File I/O VIs and functions to save strings to text and spreadsheet
files.
Format Specifiers
In many cases, you must enter one or more format specifiers in the format
string parameter of a String function to format a string. A format specifier
is a code that indicates how to convert numeric data to or from a string.
LabVIEW uses conversion codes to determine the textual format of the
parameter. For example, a format specifier of %x converts a hex integer to
or from a string.
The Format Into String and Scan From String functions can use multiple
format specifiers in the format string parameter, one for each input or
output to the expandable function.
The Array To Spreadsheet String and Spreadsheet String To Array
functions use only one fo rmat specifier in the format string parameter
because these functions have only one input to conver t. LabVIEW treats
any extra specifiers you insert into these functions as literal strings with no special meaning.

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corpor ation 10-5 LabVIEW User ManualNumerics and Strings
Numeric data and string data differ because string data are ASCII
characters and numeric data are not . Text and spreadsheet files accept
strings only. To write numeric data to a text or spreadsheet file, you must first convert the numeric data to a string.
To add a set of numerics to an existin g string, convert the numeric data to
a string and use the Concatenate Strings or another String function to add the new string to the existing stri ng. Use the String/ Number Conversion
functions to convert numerics to strings.
A string can include a set of numerics you display in a graph or chart. For
example, you can read a text file that includes a set of numerics that you
want to plot to a chart. However, those numerics are in ASCII text, so you must read the numerics as a string and then format the string into a set of
numerics before you plot the numerics to a chart.
Figure 10-2 shows a string that includes a set of numerics, converts the
string to numerics, builds an array of numerics, and plots the numerics to a
graph.

Figure 10-2. Converting a String to Numerics
Converting Data to and from XML
Extensible Markup Language (XML) is a formatting standard that uses tags
to describe data. Unlike an HTML tag, an XML tag does not tell a browser how to format a piece of data. Inst ead, an XML tag identifies a piece of
data.
For example, suppose you are a bookseller who sells books on the Web.
You want to classify each book in your library by the following criteria:
 Type of book (fiction or nonfiction)
 Title

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-6 ni.com Author
P u b l i s h e r
 Price
 Genre(s)  Synopsis
 Number of pages
You can create an XML file for each book. The XML file for a book titled
Touring Germany’s Great Cathedrals would be similar to the following:
<nonfiction>
<Title>Touring Germany's Great Cathedrals</Title>
<Author>Tony Walters</Author><Publisher>Douglas Drive Publishing</Publisher>
<PriceUS>$29.99</PriceUS>
<Genre>Travel</Genre><Genre>Architecture</Genre>
<Genre>History</Genre>
<Synopsis>This book fully illustrates twelve of
Germany's most inspiring cathedrals with full-color photographs, scaled cross-sections, and time lines of their construction.</Synopsis>
<Pages>224</Pages>
</nonfiction>
Similarly, you can classify LabVIEW data by name, value, and type.
You can represent a string control for a user name in XML as follows:
<String>
<Name>User Name</Name>
<Value>Reggie Harmon</Value></String>

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corpor ation 10-7 LabVIEW User ManualUsing XML-Based Data Types
Converting LabVIEW data to XML formats the data so that when you save
the data to a file, you easily can identi fy the value(s), name(s), and type of
the data from the tags that describe the data. For example, if you convert an array of temperature values to XML and save that data to a text file, you easily can identify the temper ature values by locating the
<Value> tag that
identifies each temperature.
Use the Flatten to XML function to co nvert a LabVIEW data type to XML
format. The following ex ample generates 100 simulated temperatures,
plots the array of temperat ures to a chart, converts the array of numbers to
the XML format, and writes the XML data to the temperatures.xml file.
Use the Unflatten from XML function to convert a data type in the
XML format into LabVIEW data. The following example reads the 100 temperatures in the
temperatures.xml file and plots the array of
temperatures to a chart.
Note Although you can flatten LabVIEW Variant data to XML, attempting to unflatten
variant data from XML results in an empty LabVIEW variant.
Refer to the examples\file\XMLex.llb for examples of converting to
and from the XML format.

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-8 ni.comLabVIEW XML Schema
LabVIEW converts data to an established XML schema. Currently, you
cannot create customized schemas, and you cannot control how LabVIEW
tags each piece of data. Also, you can not convert entire VIs or functions
to XML.
Refer to the LabVIEW\help directory for the LabVIEW XML schema.
Grouping Data with Arrays and Clusters
Use the array and cluster controls and functions to group data. Arrays group
data elements of the same type. Clusters group data elements of mixed types.
Arrays
An array consists of elements and di mensions. Elements are the data that
make up the array. A dimension is the le ngth, height, or depth of an array.
An array can have one or more dimensions and as many as 231 – 1 elements
per dimension, memory permitting.
You can build arrays of numeric, Bo olean, path, string, waveform, and
cluster data types. Consider using ar rays when you work with a collection
of similar data and when you perform repetitive computations. Arrays are ideal for storing data you collect from waveforms or data generated in loops, where each iteration of a loop produces one element of the array.
You cannot create arrays of arrays. However, you can use a
multidimensional array or create an ar ray of clusters where each cluster
contains one or more arrays. Refer to the Restrictions for Arrays section of
this chapter for more information abou t the types of elements an array can
contain. Refer to the Clusters section of this chapter for more information
about clusters.
Indexes
To locate a particular element in an ar ray requires one index per dimension.
In LabVIEW, indexes let you navigate through an array and retrieve elements, rows, columns, and pages fr om an array on the block diagram.

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corpor ation 10-9 LabVIEW User ManualExamples of Arrays
An example of a simple array is a text array that lists the nine planets of our
solar system. LabVIEW represents this as a 1D array of strings with nine
elements.
Array elements are ordered. An arra y uses an index so you can readily
access any particular elemen t. The index is zero-based, which means it is
in the range 0 to n – 1, where n is the number of elements in the array. For
example, n = 9 for the nine planets, so the index ranges from 0 to 8. Earth
is the third planet, so it has an index of 2.
Another example of an array is a wave form represented as a numeric array
in which each successive element is the voltage value at successive time intervals, as shown in Figure 10-3.
Figure 10-3. Waveform in an Array of Numerics
A more complex example of an array is a graph represented as an array of
points where each point is a cluster co ntaining a pair of numerics that
represent the X and Y coordina tes, as shown in Figure 10-4.
Figure 10-4. Graph in an Array of PointsVolts 0.4 0.9 1.4 0.8 –0.1 –0.7 –0.3 0.3 0.2Index 0 1 2 3 4 5678
X Coord 0.4 2.2 3.3 3.2 2.4 1.8 1.9
Y Coord 0.2 0.5 1.3 2.3 2.6 1.9 1.2Index 0123456

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-10 ni.comThe previous examples use 1D arrays. A 2D array stores elements in a grid.
It requires a column index and a row index to locate an element, both of
which are zero-based. Figure 10-5 shows a 6 column by 4 row 2D array, which contains 6 ×4 = 24 elements.
Figure 10-5. 6 Column by 4 Row 2D Array
For example, a chessboard has eight co lumns and eight rows for a total of
64 positions. Each position can be empty or have one chess piece. You can represent a chessboard as a 2D array of strings. Each string is the name of
the piece that occupies the corresponding location on the bo ard or an empty
string if the location is empty.
You can generalize the 1D array examples in Figures 10-3 and 10-4 to two
dimensions by adding a row to the array. Figure 10-6 shows a collection of waveforms represented as a 2D array of numerics. The row index selects the waveform, and the column index selects the point on the waveform.
Figure 10-6. Multiple Waveforms in a 2D Array of Numerics
Refer to the examples\general\arrays.llb for examples of using
arrays. Refer to the Using Loops to Build Arrays section of Chapter 8,
Loops and Structures , for more information about building arrays.Column Index
0
123Row Index012345
00.4 0.9 1.4 0.8 –0.1 –0.7 –0.3 0.3 0.2
1–0.1 0.6 0.4 0.2 0.8 1.6 1.4 0.9 1.1
2 1.6 1.4 0.7 0.5 –0.5 –0.6 –0.2 0.3 0.5012345678

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corporation 10-11 LabVIEW User ManualRestrictions for Arrays
You can create an array of almost any data type, with the following
exceptions:
 You cannot create an array of arrays. However, you can use a
multidimensional array or use the Build Cluster Array function to create an array of clusters where each cluster contains one or more
arrays.
 You cannot create an array of subpanel controls.
 You cannot create an array of tab controls.
 You cannot create an array of ActiveX controls.
 You cannot create an array of charts. You cannot create an array of multiplot XY graphs.
Creating Array Controls, In dicators, and Constants
Create an array control or indicator on the front panel by placing an array
shell on the front panel, as shown in Figure 10-7, and dragging a data object or element, which can be a numeric, Boolean, string, path, refnum, or cluster control or indicator, into the array shell.
Figure 10-7. Array Shell
The array shell automatically resi zes to accommodate the new object,
whether a small Boolean control or a large 3D graph. To create a
multidimensional array on the front panel, right-click the index display and select Add Dimension from the shortcut menu. You also can resize the
index display until you have as many dimensions as you want. To delete dimensions one at a time, right-click the index display and select Remove
Dimension from the shortcut menu. You also can resize the index display
to delete dimensions.
To display a particular element on the front panel, either type the index
number in the index display or use the arrows on the index display to navigate to that number.

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-12 ni.comTo create an array constant on the bloc k diagram, select an array constant
on the Functions palette, place the array shell on the front panel, and place
a string constant, numeric constant, or cluster constant in the array shell.
You can use an array constant as a ba sis for comparison with another array.
Array Index Display
A 2D array contains rows and columns. As shown in Figure 10-8, the upper
display of the two boxes on the left is the row index and the lower display is the column index. The combined display to the right of the row and column displays shows the value at the specified position. Figure 10-8
shows that the value at row 6, column 13, is
66.
Figure 10-8. Array Control
Rows and columns are zero-based, mean ing the first column is column 0,
the second column is column 1, and so on. Changing the index display for the following array to row 1, column 2 displays a value of
6.
If you try to display a column or row that is out of the range of the array
dimensions, the array control appears di mmed to indicate that there is no
value defined, and LabVIEW displays the default value of the data type. The default value of the data type depends on the data type of the array.
Use the Positioning tool to resize the array to show more than one row or
column at a time.1 Row Index 2 Column Index 3 Value at row, column
0 1 2 3
4 5 6 7
8 9 10 11
1
23

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corporation 10-13 LabVIEW User ManualArray Functions
Use the Array functions to create an d manipulate arrays, such as the
following tasks:
 Extract individual data elements from an array.
 Insert, delete, or replace data elements in an array. Split arrays.
Automatically Resizing Array Functions
The Index Array, Replace Array Subset, Insert Into Array, Delete From
Array, and Array Subset functions automatically resize to match the
dimensions of the input array you wire. For example, if you wire a 1D array to one of these functions, the function shows a single index input. If you wire a 2D array to the same function, it shows two index inputs—one for the row and one for the column.
You can access more than one element, or subarray (row, column, or page)
with these functions by using the Positioning tool to manually resize the function. When you expand one of these functions, the functions expand in increments determined by the dimensions of the array wired to the function.
If you wire a 1D array to one of thes e functions, the function expands by a
single index input. If you wire a 2D array to the same function, the function expands by two index inputs—one for the row and one for the column.
The index inputs you wire determine the shape of the subarray you want to
access or modify. For example, if the i nput to an Index Array function is a
2D array and you wire only the row input, you extract a complete 1D row
of the array. If you wire only the column input, you extract a complete
1D column of the array. If you wire the row input and the column input,
you extract a single element of the arra y. Each input group is independent
and can access any portion of an y dimension of the array.
The block diagram shown in Figure 10-9 uses the Index Array function to
retrieve a row and an element from a 2D array.
Figure 10-9. Indexing a 2D Array

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
LabVIEW User Manual 10-14 ni.comTo access multiple consecutive values in an array, expand the Index Array
function, but do not wire values to the index inputs in each increment.
For example, to retrieve the first, second, and third rows from a 2D array, expand the Index Array function by three increments and wire 1D array indicators to each sub-array output.
Refer to the Memory and Speed Opt imiza tion section of Chapter 6,
LabVIEW Style Guid e, in the LabVIEW Development Guidelines manual
for more information about minimizing memory usage when using Array functions in a loop.
Clusters
Clusters group data elements of mixed types, such as a bundle of wires, as in a telephone cable, where each wire in the cable represents a different
element of the cluster. A cluster is similar to a record or a struct in
text-based programming languages.Bundling several data elements into clusters eliminates wire clutter on the block diagram and reduces the number of connector pane terminals that subVIs need. The connector pane has, at most, 28 terminals. If your front
panel contains more than 28 controls and indicators that you want to use programmatically, group some of them into a cluster and assign the cluster to a terminal on the connector pane.Although cluster and array elements are both ordered, you must unbundle all cluster elements at once rather th an index one element at a time. You
also can use the Unbundle By Name function to access specific cluster
elements. Clusters also diff er from arrays in that th ey are a fixed size. Like
an array, a cluster is either a control or an indicator. A cluster cannot contain
a mixture of controls and indicators.Most clusters on the block diagram have a pink wire pattern and data type terminal. Clusters of numerics, sometimes referred to as points, have a brown wire pattern and data type terminal. You can wire brown numeric clusters to Numeric functions, such as Add or Square Root, to perform the same operation simultaneously on all elements of the cluster.Cluster elements have a logical order unrelated to their position in the shell. The first object you place in the cl uster is element 0, the second is
element 1, and so on. If you delete an element, the order adjusts
automatically. The cluster order determines the order in which the elements appear as terminals on the Bundle and Unbundle functions on the block diagram. You can view and modify the cluster order by right-clicking the

Chapter 10 Grouping Data Using Strings, Arrays, and Clusters
© National Instruments Corporation 10-15 LabVIEW User Manualcluster border and selecting Reorder Controls In Cluster from the
shortcut menu.
To wire clusters, both clusters must have the same number of elements.
Corresponding elements, determined by the cluster order, must have compatible data types. For example, if a double-precision floating-point numeric in one cluster corresponds in cluster order to a string in the another cluster, the wire on the block diagra m appears broken and the VI does not
run. If numerics of different represen tations, LabVIEW coerces them to the
same representation. Refer to the Numeric Conversion section of
Appendix B, Polymorphic Functions , for more information about numeric
conversion.
Use the Cluster functions to create and manipulate clusters. For example,
you can perform the following tasks:
 Extract individual data elements from a cluster. Add individual data elements to a cluster.
 Break a cluster out into it s individual data elements.

© National Instruments Corpor ation 11-1 LabVIEW User Manual11
Local and Global Variables
In LabVIEW, you read data from or write data to a front panel object using
its block diagram terminal. However, a front panel object has only one block diagram terminal, and your application might need to access the data in that terminal from more than one location.
Local and global variables pass information between locations in your
application that you cannot connect w ith a wire. Use local variables to
access front panel objects from more th an one location in a single VI.
Use global variables to access and pass data among several VIs.
For more information…
Refer to the LabVIEW Help for more information a bout using local and global
variables.
Local Variables
Use local variables to access front pa nel objects from more than one
location in a single VI and pass data between block diagram structures that
you cannot connect with a wire.
With a local variable, you can write to or read from a co ntrol or indicator
on the front panel. Writing to a local variable is similar to passing data to any other terminal. However, with a local variable you can write to it even if it is a control or read from it even if it is an indicator. In effect, with a local
variable, you can access a front panel ob ject as both an i nput and an output.
For example, if the user interface requi res users to log in , you can clear the
Login and Password prompts each time a new user logs in. Use a local
variable to read from the Login and Password string controls when a user
logs in and to write empty strings to these controls when the user logs out.

Chapter 11 Local and Global Variables
LabVIEW User Manual 11-2 ni.comCreating Local Variables
Right-click an existing front panel object or block diagram terminal and
select Create»Local Variable from the shortcut menu to create a local
variable. A local variable icon for th e object appears on the block diagram.
You also can select a local variable from the Functions palette and place it
on the block diagram. The local variable node, shown at left, is not yet associated with a control or indicator . Right-click the local variable node
and select a front panel object from the Select Item shortcut menu. The
shortcut menu lists all the front panel objects that have owned labels.
LabVIEW uses owned labels to associate local variables with front panel
objects, so label the front panel cont rols and indicators with descriptive
owned labels. Refer to the Labeling section of Chapter 4, Building the
Front Panel , for more information about owned and free labels.
Global Variables
Use global variables to access and pa ss data among several VIs that run
simultaneously. Global variables are bu ilt-in LabVIEW objects. When you
create a global variable, LabVIEW auto matically creates a special global
VI, which has a front panel but no block diagram. Add controls and indicators to the front panel of the global VI to define the data types of the global variables it contai ns. In effect, this front panel is a container from
which several VIs can access data.
For example, suppose you have two VIs running simultaneously. Each VI
contains a While Loop and writes data points to a waveform chart. The first
VI contains a Boolean cont rol to terminate both VIs. You must use a global
variable to terminate both loops with a single Boolean control. If both loops were on a single block diagram within the same VI, you could use a local variable to terminate the loops.
Creating Global Variables
Select a global variable, shown at left, from the Functions palette and place
it on the block diagram. Double-click the global variable node to display the front panel of the global VI. Place c ontrols and indicator s on this front
panel the same way you do on a standard front panel.

Chapter 11 Local and Global Variables
© National Instruments Corpor ation 11-3 LabVIEW User ManualLabVIEW uses owned labels to identify global variables, so label the front
panel controls and indicators with descriptive owned labels. Refer to the Labeling section of Chapter 4, Building the Front Panel , for more
information about owned and free labels.
You can create several single global VI s, each with one front panel object,
or you can create one global VI with multiple front panel objects. A global VI with multiple objects is more efficient because you can group related variables together. The block diagram of a VI can include several global
variable nodes that are associated with controls and indicators on the front
panel of a global VI. These global vari able nodes are eith er copies of the
first global variable node that you placed on the block diagram of the global VI, or they are the global variable nod es of global VIs that you placed on
the current VI. You place global VIs on other VIs the same way you place
subVIs on other VIs. Each time you pl ace a new global variable node on a
block diagram, LabVIEW creates a new VI associated only with that global
variable node and copies of it. Refer to the SubVIs section of Chapter 7,
Creating VIs and SubVIs , for more information about subVIs.
After you finish placing objects on the global VI front panel, save it and
return to the block diagram of the or iginal VI. You must then select the
object in the global VI that you want to access. Right-click the global
variable node and select a front panel object from the Select Item shortcut
menu. The shortcut menu lists all the front panel objects that have owned labels.
Read and Write Variables
After you create a local or global variab le, you can read data from a variable
or write data to it. By default, a ne w variable receives data. This kind of
variable works as an indicator and is a write local or global. When you write
new data to the local or global variab le, the associated front panel control
or indicator updates to the new data.
You also can configure a variable to beha ve as a data source, or a read local
or global. Right-click the variable and select Change To Read from the
shortcut menu to configure the variable to behave as a control. When this
node executes, the VI reads the data in the associated front panel control or
indicator.
To change the variable to receive data from the block diagram rather than
provide data, right-click the variable and select Change To Write from the
shortcut menu.

Chapter 11 Local and Global Variables
LabVIEW User Manual 11-4 ni.comOn the block diagram, you can distinguish read locals or globals from write
locals or globals the same way you distinguish controls from indicators. A read local or global has a thick border similar to a control. A write local
or global has a thin border similar to an indicator.
Refer to the
examples\general\locals.llb and examples\
general\globals.llb for examples of using local and global variables.
Using Local and Global Variables Carefully
Local and global variables are adva nced LabVIEW concepts. They are
inherently not part of the LabVIEW dataflow execution model. Block diagrams can become difficult to read when you use local and global variables, so you should use them carefully. Misusing local and global variables, such as using them instead of a connector pane or using them to
access values in each frame of a sequence structure, can lead to unexpected
behavior in VIs. Overusing local and global variables, such as using them to avoid long wires across the block diagram or using them instead of data flow, slows performance. Refer to the Block Diagram Data Flow section of
Chapter 5, Building the Block Diagram , for more information about the
LabVIEW dataflow execution model.
Initializing Local and Global Variables
Verify that the local and global variables contain known data values before
the VI runs. Otherwise, the variables might contain data that cause the VI
to behave incorrectly.
If you do not initialize the variable befo re the VI reads the variable for the
first time, the variable contains the default value of the associated front
panel object.
Race Conditions
A race condition occurs when two or mo re pieces of code that execute in
parallel change the value of the same shared resource, typically a local or
global variable. Figure 11-1 show s an example of a race condition.

Chapter 11 Local and Global Variables
© National Instruments Corpor ation 11-5 LabVIEW User ManualFigure 11-1. Race Condition
The output of this VI depends on the order in which the operations run.
Because there is no data dependency between the two operations, there is
no way to determine which runs first. To avoid r ace conditions, do not write
to the same variable you read from. Refer to the Data Dependency and
Artificial Data Dependency section of Chapter 5, Building the Block
Diagram , for more information about data dependency.
Memory Considerations wh en Using Local Variables
Local variables make copies of data buffers. When you read from a local
variable, you create a new buffer for th e data from its associated control.
If you use local variables to transfer large amounts of data from one place
on the block diagram to another, you generally use more memory and, consequently, have slower execution speed than if you transfer data using a
wire. If you need to store data during execution, consider using a shift register.
Memory Considerations wh en Using Global Variables
When you read from a glob al variable, LabVIEW creates a copy of the data
stored in that global variable.
When you manipulate large arrays and strings, the time and memory
required to manipulate global variab les can be considerable. Manipulating
global variables is especially ineffici ent when dealing with arrays because
if you modify only a single array element, LabVIEW stores and modifies the entire array. If you read from the global variable in several places in an
application, you create several memory buffers, which is inefficient and
slows performance.

© National Instruments Corpor ation 12-1 LabVIEW User Manual12
Graphs and Charts
Use graphs and charts to display data in a graphical form.
Graphs and charts differ in the way they display and update data. VIs with
graphs usually collect the data in an array and then plot the data to the graph, which is similar to a spreadsh eet that first stores the data then
generates a plot of it. In contrast, a chart appends new data points to those already in the display to create a histor y. On a chart, you can see the current
reading or measurement in context with data previously acquired.
For more information…
Refer to the LabVIEW Help for more information about using graphs and charts.
Types of Graphs and Charts
The graphs and charts include the following types:
Waveform Chart and Graph —Displays data acquired at a constant
rate.
XY Graph —Displays data acquired at a non-constant rate, such as
data acquired when a trigger occurs.
Intensity Chart and Graph —Displays 3D data on a 2D plot by using
color to display the values of the third dimension.
Digital Waveform Graph —Displays data as pulses or groups of
digital lines. Computers transfer digital data to other computers in pulses.

(Windows) 3D Graphs —Displays 3D data on a 3D plot in an ActiveX
object on the front panel.
Refer to examples\general\graphs for examples of graphs and charts.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-2 ni.comGraph and Chart Options
Although graphs and charts plot data differently, they have several
common options that you access from the shortcut menu. Refer to the
Customizing Graphs and Customizing Charts sections of this chapter for
more information about the options available only on graphs or only on charts.
Waveform and XY graphs and charts ha ve different options than intensity,
digital, and 3D graphs and charts. Refer to the Intensity Graphs and Charts ,
3D Graphs , and Digital Waveform Graphs sections of this chapter for more
information about intensity, digital, and 3D graph and chart options.
Multiple X- and Y-Scal es on Graphs and Charts
All graphs support multiple x- and y-scales, and all charts support multiple
y-scales. Use multiple scales on a grap h or chart to display multiple plots
that do not share a common x- or y-s cale. Right-click the scale of the graph
or chart and select Duplicate Scale from the shortcut menu to add multiple
scales to the graph or chart.
Anti-Aliased Line Plots for Graphs and Charts
You can improve the appear ance of line plots in grap hs and charts by using
anti-aliased lines. When you enable anti-aliased line drawing, line plots
appear smoother. Anti-aliased line drawing does not alter line widths, line styles, point styles, and so on.
Note Anti-aliased line drawing is not available on digital waveform graphs.
To enable anti-aliased line plots, right-click the plot legend and select
Anti-aliased from the shortcut menu. If th e plot legend is not visible,
right-click the graph or chart and select Visible Items»Plot Legend from
the shortcut menu.
Note Because anti-aliased line drawing can be co mputation intensive, using anti-aliased
line plots can slow performance.

Chapter 12 Graphs and Charts
© National Instruments Corpor ation 12-3 LabVIEW User ManualCustomizing Graph an d Chart Appearance
You customize the appearance of graphs and charts by showing or hiding
options. Right-click the graph or chart and select Visible Items from the
shortcut menu to display or hide the following options:
Plot Legend —Defines the color and style of the plot(s). Resize the
legend to display multiple plots.
Scale Legend —Defines labels for scales and configures scale
properties.
Graph Palette —Changes scaling and formatting while a VI is
running.
X Scale and Y Scale —Formats the x- and y-scales. Refer to the Axis
Formatting section of this chapter for more information about scales.
Cursor Legend (graph only) —Displays a marker at a defined point
coordinate. You can display multiple cursors on a graph.
X Scrollbar —Scrolls through the data in the graph or chart. Use the
scrollbar to view data that the graph or chart does not currently display.
Customizing Graphs
You can modify the behavior of grap h cursors, scaling options, and graph
axes. Figure 12-1 illustrates the elements of a graph.
You can customize the waveform and intensity graphs to match your data
display requirements or to display more information. Options available for
charts include a scrollbar, a legend , a palette, a digital display, and
representation of scales with respect to time.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-4 ni.comFigure 12-1. Graph Elements
You add most of the items listed in the legend above by right-clicking the
graph, selecting Visible Items from the shortcut menu, and selecting the
appropriate element.
Graph Cursors
Cursors on graphs allow you to read the exact value of a point on a plot. The cursor value displays in the cursor legend. Add a cursor to a graph by
right-clicking the graph, selecting Visible Items»Cursor Legend from the
shortcut menu, and clicking anywhere in a cursor legend row to activate a
cursor. Use the Positioning tool to expand the cursor legend to add multiple cursors.
You can place cursors and a cursor display on all graphs, and you can label
the cursor on the plot. You can set a curs or to lock onto a plot, and you can
move multiple cursors at the same time. A graph can have any number of cursors.1 Plot legend
2 Cursor (graph only)3 Grid mark4 Mini-grid mark5 Graph palette6 Cursor mover 7 Cursor legend8 Scale legend9X – s c a l e 10 Y-scale11 Label
1011
91
3
4
5 62
8 7

Chapter 12 Graphs and Charts
© National Instruments Corpor ation 12-5 LabVIEW User ManualAutoscaling
Graphs can automatically adjust thei r horizontal and vertical scales to
reflect the data you wire to them. This behavior is called autoscaling. Turn
autoscaling on or off by right-clicking the graph and selecting X Scale»
Autoscale X or Y Scale»Autoscale Y from the shortcut menu. By default,
autoscaling is enabled for graphs. However, autoscaling can slow
performance.Use the Operating or Labeling tool to change the horizontal or vertical scale
directly.
Waveform Graph Scale Legend
Use the scale legend to label scal es and configure scale properties.
Use the Operating tool to click the Scale Format button, shown at left,
to configure the format, pr ecision, and mapping mode.
Use the Scale Lock button, shown at left, to toggle autoscaling for each
scale, the visibility of s cales, scale labels, and plot s, and to format scale
labels, grids, grid lines, and grid colors.
Axis Formatting
Use the Format and Precision tab of the Graph Properties and Chart
Properties dialog boxes to specify how the x-axis and y-axis appear on the
graph or chart.By default, the x-axis is configured to use floating-point notation and with a label of
Time , and the y-axis is configured to use automatic formatting
and with a label of Amplitude . Right-click the graph or chart and select
Properties to display the Graph Properties dialog box or Chart
Properties dialog box to configure the axes for the graph or chart.
Use the Format and Precision tab of the Graph Properties or Chart
Properties dialog box to specify a numeric format for the axes of a graph
or chart. Select the Scales tab to rename the axis and to format the
appearance of the axis scale. By defaul t, a graph or chart axis displays up
to six digits before automatically switching to exponential notation.Place a checkmark in the Direct entry mode preferred checkbox to
display the text options that let you enter format strings directly. Enter format strings to cust omize the appearance of the scales and numeric
precision of the axes. Refer to the Using Format Strings topic of the
LabVIEW Help for more information ab out formatting str ings.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-6 ni.comDynamically Formatting Graphs
Wire a dynamic data type output to a waveform graph to automatically format the plot legend and x-scale tim e stamp for the graph. For example,
if you configure the Simulate Signal E xpress VI to generate a sine wave and
to use absolute time and wire the output of the Simulate Signal Express VI to a waveform graph, the plot legend of the graph automatically updates the plot label to
Sine , and the x-scale displays the time and date when you run
the VI.Right-click the graph and select Ignore Attributes from the shortcut menu
to ignore the plot legend label the dynamic data type includes. Right-click the graph and select Ignore Time Stamp from the shortcut menu to ignore
the time stamp configuration the dynamic data type includes.
Note If the data you display in the waveform graph contains an absolute time time stamp,
select Ignore Time Stamp to ig nore the time sta mp. Refer to the Getting St arted with
LabVIEW manual for more information abo ut using the d ynamic data t ype wi th gra phs and
for more information about Express VIs. Refer to the Dynamic Data Type section of
Chapter 5, Building the Block Diagram , for more information about using the dynamic
data type.
Using Smooth Updates
When LabVIEW updates an object with smooth updates off, it erases the
contents of the object and draws the new value, which results in a
noticeable flicker. Using smooth updates avoids the flicker that erasing and
drawing causes. Right-clic k the graph and select Advanced»Smooth
Updates from the shortcut menu to use an offscreen buffer to minimize the
flicker. Using Smooth Updates can slow performance depending on the
computer and video system you use.
Customizing Charts
Unlike graphs, which display an entire waveform that overwrites the data already stored, charts update periodica lly and maintain a history of the data
previously stored.You can customize the waveform and intensity charts to match your data display requirements or to display more information. Options available for charts include a scrollbar, a legend , a palette, a digital display, and
representation of scales with respect to time. You can modify the behavior
of chart history length, update modes, and plot displays.

Chapter 12 Graphs and Charts
© National Instruments Corpor ation 12-7 LabVIEW User ManualChart History Length
LabVIEW stores data points already added to the chart in a buffer, or the
chart history. The default size for a chart history buffer is 1,024 data points. You can configure the history buffer by right-clicking the chart and
selecting Chart History Length from the shortcut menu. You can view
previously collected data using the char t scrollbar. Right-click the chart and
select Visible Items»X Scrollbar from the shortcut menu to display a
scrollbar.
Chart Update Modes
Charts use the following three differen t modes to display data. Right-click
the chart and select Advanced»Update Mode from the shortcut menu.
Select Strip Chart , Scope Chart , or Sweep Chart . The default mode is
Strip Chart .
Strip Chart —-Shows running data continuously scrolling from left to
right across the chart with old data on the left and new data on the right. A strip chart is similar to a pa per tape strip chart recorder.
Scope Chart —Shows one item of data, such as a pulse or wave,
scrolling partway across the chart from left to the right. For each new
value, the chart plots the value to th e right of the last value. When the
plot reaches the right border of th e plotting area, LabVIEW erases the
plot and begins plotting again from the left border. The retracing display of a scope chart is similar to an oscilloscope.
Sweep Chart —Works similarly to a scope chart except it shows the
old data on the right and the new data on the left separated by a vertical line. LabVIEW does not erase the plot in a sweep chart when the plot
reaches the right border of the plot ting area. A sweep chart is similar
to an EKG display.
Overlaid versus Stacked Plots
You can display multiple plots on a char t by using a single vertical scale,
called overlaid plots, or by using mul tiple vertical scales, called stacked
plots. Figure 12-2 shows examples of overlaid plots and stacked plots.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-8 ni.com
Figure 12-2. Charts with Overlaid and Stacked Plots
Right-click the chart and select Stack Plots from the shortcut menu to view
the chart plots as multiple vertical s cales. Right-click the chart and select
Overlay Plots to view the chart plots as a single vertical scale.
Refer to the Charts VI in the examples\general\graphs\charts.llb
for examples of differen t kinds of charts and the data types they accept.
Waveform and XY Graphs
Waveform graphs display even ly sampled measurements. XY graphs
display any set of points, evenly sampled or not. Figure 12-3 shows examples of a waveform graph and an XY graph.

Figure 12-3. Waveform and XY Graphs

Chapter 12 Graphs and Charts
© National Instruments Corpor ation 12-9 LabVIEW User ManualThe waveform graph plots only single-valued functions, as in y=f (x), with
points evenly distributed along the x-axis, such as acquired time-varying waveforms. The XY graph is a general-purpose, Cartesian graphing object that plots multivalued functions, such as circular shapes or waveforms with
a varying timebase. Both graphs can display plots containing any number of points.
Both types of graphs accept several data types, which minimizes the extent
to which you must manipulate data before you display it.
Single-Plot Waveform Graph Data Types
The waveform graph accepts two data types for single-plot waveform
graphs.
The graph accepts a single array of values and interprets the data as points
on the graph and increments the x index by one starting at x= 0. The graph
also accepts a cluster of an initial x value, a ∆x, and an array of y data.
Refer to the Waveform Graph VI in the examples\general\graphs\
gengraph.llb for examples of the data types that single-plot waveform
graphs accept.
Multiplot Waveform Graph
A multiplot waveform grap h accepts a 2D array of values, where each row
of the array is a single plot. The graph interprets the data as points on the
graph and increments the x index by one, starting at x= 0. Wire a 2D array
data type to the graph, right-click the graph, and select Transpose Array
from the shortcut menu to handle each column of the array as a plot. This
is particularly useful when you sample multiple channels from a DAQ device because the device returns the da ta as 2D arrays with each channel
stored as a separate column. Refer to the (Y) Multi Plot 1 graph in the Waveform Graph VI in the
examples\general\graphs\
gengraph.llb for an example of a graph that accepts this data type.
A multiplot waveform graph also accepts a cluster of an x value, a ∆x value,
and a 2D array of y data. The graph interprets the y data as points on the
graph and increments the x index by ∆x, starting at x= 0. This data type is
useful for displaying multiple signals all sampled at the same regular rate.
Refer to the (Xo, dX, Y) Multi Plot 3 graph in the Waveform Graph VI in the
examples\general\graphs\gengraph.llb for an example of a
graph that accepts this data type.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-10 ni.comA multiplot waveform graph accepts a plot array where the array contains
clusters. Each cluster contains a point array that contains the y data. The
inner array describes the points in a plot, and the outer array has one cluster for each plot. Figure 12-4 sh ows this array of the y cluster.
Figure 12-4. Array of Cluster y
Use a multiplot waveform graph instead of a 2D array if the number of
elements in each plot is different. Fo r example, when you sample data from
several channels using different time amounts from each ch annel, use this
data structure instead of a 2D array because each row of a 2D array must
have the same number of elements. The number of elements in the interior
arrays of an array of clusters can vary. Refer to the (Y) Multi Plot 2 graph in the Waveform Graph VI in the
examples\general\graphs\
gengraph.llb for an example of a graph that accepts this data type.
A multiplot waveform graph accep ts a cluster of an initial x value, a ∆x
value, and array that contains clusters . Each cluster contains a point array
that contains the y data. You use the Bundle function to bundle the arrays
into clusters and you use the Build Array function to build the resulting clusters into an array. You also can use the Build Cluster Array, which
creates arrays of clusters that co ntain inputs you specify. Refer to the
(Xo, dX, Y) Multi Plot 2 graph in the Waveform Graph VI in the
examples\general\graphs\gengraph.llb for an example of a graph
that accepts this data type.
A multiplot waveform graph accepts an array of clusters of an x value, a
∆xvalue, and an array of y data. This is the most general of the multiplot
waveform graph data types because yo u can indicate a unique starting point
and increment for the x-axis of each pl ot. Refer to the (Xo, dX, Y) Multi
Plot 1 graph in the Waveform Graph VI in the examples\general\
graphs\gengraph.llb for an example of a grap h that accepts this data
type.
Single-Plot XY Graph Data Types
The single-plot XY graph accepts a cluster that contains an x array and
ayarray. The XY graph also accepts an array of points, where a point is
a cluster that contains an x value and a y value.

Chapter 12 Graphs and Charts
© National Instruments Corporation 12-11 LabVIEW User ManualRefer to the XY Graph VI in the examples\general\graph\
gengraph.llb for an example of single-plot XY graph data types.
Multiplot XY Graph Data Types
The multiplot XY graph accepts an array of plots, where a plot is a cluster
that contains an x array and a y array. The multiplot XY graph also accepts
an array of clusters of pl ots, where a plot is an array of points. A point is a
cluster that contains an x value and a y value.
Refer to the XY Graph VI in the examples\general\graph\
gengraph.llb for an example of multiplot XY graph data types.
Waveform Charts
The waveform chart is a special type of numeric indicator that displays one
or more plots. Refer to the examples\general\graphs\charts.llb
for examples of waveform charts.
If you pass charts a single value or multiple values at a time, LabVIEW
interprets the data as points on the chart and increments the x index by one
starting at x= 0. The chart treats these inputs as new data for a single plot.
If you pass charts the waveform data type, the x index conforms to the time
format specified.
The frequency at which you send data to the chart determines how often the
chart redraws.
To pass data for multiple plots to a waveform chart, you can bundle the data
together into a cluster of scalar nu merics, where each numeric represents a
single point for each of the plots.
If you want to pass multiple points for plots in a single update, wire an array
of clusters of numerics to the char t. Each numeric re presents a single
yvalue point for each of the plots.
If you cannot determine the number of plots you want to display until run
time, or you want to pass multiple points for multiple plots in a single update, wire a 2D array of numerics or waveforms to the chart. As with the
waveform graph, by default, waveform charts handle rows as new data for each plot. Wire a 2D array data type to the chart, right-click the chart, and
select Transpose Array from the shortcut menu to treat columns in the
array as new data for each plot.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-12 ni.comIntensity Graphs and Charts
Use the intensity graph and chart to display 3D data on a 2D plot by placing
blocks of color on a Cartesian plane. For example, you can use intensity
graphs and charts to display patterned data, such as temperature patterns
and terrain, where the magnitude represents altitude. The intensity graph and chart accept a 2D array of numbe rs. Each number in the array
represents a specific color. The indexes of the elements in the 2D array set
the plot locations for the colors. Figure 12-5 shows the concept of the
intensity char t operation.
Figure 12-5. Intensity Chart Color Map
The rows of the data pass into the display as new columns on the graph or
chart. If you want rows to appear as rows on the display, wire a 2D array
data type to the graph or chart, righ t-click the graph or chart, and select
Transpose Array from the shortcut menu.
The array indexes correspond to the lower left vertex of the block of color.
The block of color has a unit area, whic h is the area between the two points, Input Array Color Map Definition
Column = y
Resulting PlotRow = xArray
Element
= zColor
green
greenyellow
yellow
yelloworange
orangedk red
dk reddk redlt red
lt redpurple
purpleblue
blue
011
23615045131065
230
01
12
50 50 13
10
5 1361 45
6 2

Chapter 12 Graphs and Charts
© National Instruments Corporation 12-13 LabVIEW User Manualas defined by the array indexes. The in tensity graph or chart can display up
to 256 discrete colors.
After you plot a block of data on an intensity chart, the origin of the
Cartesian plane shifts to the right of the last data block. When the chart
processes new data, the new data appear to the right of the old data. When a chart display is full, the oldest data scroll off the left side of the chart. This behavior is similar to the behavior of strip charts. Refer to the Chart Update
Modes section of this chapter for more information about these charts.
Refer to the
examples\general\graphs\intgraph.llb for examples
of intensity charts and graphs.
Color Mapping
You can set the color mapping interactively for intensity graphs and charts the same way you define the colors for a color ramp numeric control. Refer to the Color Ramps section of Chapter 4, Building the Front Panel , for
more information about color ramps.
You can set the color mapping for the intensity graph and chart
programmatically by using the Property Node in two ways. Typically, you specify the value-to-color mappings in the Property Node. For this method, specify the Z Scale: Marker Values prope rty. This property consists of an
array of clusters, in wh ich each cluster contains a numeric limit value and
the corresponding color to display for that value. When you specify the
color mapping in this manner, you can specify an upper out-of-range color using the Z Scale: High Color prope rty and a lower out-of-range color
using the Z Scale: Low Color property. The intensity graph and chart is
limited to a total of 254 colors, with the lower and upper out-of-range colors bringing the total to 256 colors. If you specify more than 254 colors, the intensity graph or chart creates the 2 54-color table by interpolating among
the specified colors.
If you display a bitmap on the intensity graph, you specify a color table
using the Color Table property. With this method, you can specify an array of up to 256 colors. Data passed to th e chart are mapped to indexes in this
color table based on the co lor scale of the intensity chart. If the color scale
ranges from 0 to 100, a value of 0 in the data is mapped to index 1, and a value of 100 is mapped to index 254, with interior values interpolated
between 1 and 254. Anything below 0 is mapped to the out-of-range below color (index 0), and anything above 100 is mapped to the out-of-range above color (index 255).

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-14 ni.comNote The colors you want the intensity graph or chart to display are limited to the exact
colors and number of colors your video card can display. You also are limited by the
number of colors allocated for your display.
Intensity Chart Options
The intensity chart shares many of the optional parts of the waveform charts, which you can show or hide by right-clicking the chart and selecting Visible Items from the shortcut me nu. In addition, b ecause the intensity
chart includes color as a third dimens ion, a scale similar to a color ramp
control defines the range and mappings of values to colors.Like waveform charts, the intensity chart maintains a history of data, or buffer, from previous updates. You can configure this buffer by right-clicking the chart and selecting Chart History Length from the
shortcut menu. The default size for an intensity chart is 128 data points. The intensity chart display can be memory intensive. For example, displaying a single-precision chart with a history of 512 points and 128 y values requires
512 * 128 * 4 bytes (size of a single-precision number), or 256 KB.
Intensity Graph Options
The intensity graph works the same as the intensity chart, except it does not retain previous data and does not include update modes. Each time new data pass to an intensity graph, the new data replace old data.The intensity graph can have cursors lik e other graphs. Each cursor displays
the x, y, and z values for a specified point on the graph.
Digital Waveform Graphs
Use the digital waveform graph to display digital data, especially when you work with timing diagrams or logic anal yzers. Refer to t he LabVIEW
Measuremen ts Manual for more informat ion ab out acqu iring dig ital da ta.
The digital waveform graph accepts th e digital waveform data type, the
digital data type, and an array of those data types as an input. By default, the digital waveform graph collapses digital buses, so the graph plots digital data on a single plot. If you wire an array of digital data, the digital waveform graph plots each element of th e array as a different plot in the
order of the array.

Chapter 12 Graphs and Charts
© National Instruments Corporation 12-15 LabVIEW User ManualThe digital waveform graph in Figure 12-6 plots digital data on a single
plot. The VI converts the numbers in the Numbers array to digital data and
displays the binary representations of the numbers in the Binary
Representations digital data indicator. In the digital graph, the number 0
appears without a top line to symbolize that all the bit values are zero. The
number 255 appears without a bottom line to symbolize that all the bit values are 1.
Figure 12-6. Plotting Digital Da ta on a Single Plot
Refer to the LabVIEW Help for more information about configuring the
plots of the digital waveform graph.
To plot each sample of digital data , right-click the y-axis and select Expand
Digital Buses from the shortcut menu. Each plot represents a different
sample.
The digital waveform graph in Figure 12-7 displays the six numbers in the
Numbers digital array control.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-16 ni.com
Figure 12-7. Graphing Integers Digitally
The Binary Representations digital control displays the binary
representations of the numbers. Each co lumn in the table represents a bit.
For example, the number 89 requires 7 bits of memory (the 0 in column 7
indicates an unused bit). Point 3 on the digital waveform graph plots the 7 bits necessary to represent the numbe r 89 and a value of zero to represent
the unused eighth bit on plot 7.
The VI in Figure 12-8 converts an array of numbers to digital data and uses
the Build Waveform function to assemble the start time, delta t, and the numbers entered in a digital data control and to display the digital data.
Figure 12-8. Converting an Array of Numbers to Digital Data
Refer to the Digital Waveform Control and Digital Data Control sections
in Chapter 4, Building the Front Panel , for more information about the
digital data control, the digital waveform data type, and converting data to digital data.

Chapter 12 Graphs and Charts
© National Instruments Corporation 12-17 LabVIEW User ManualMasking Data
The VI in Figure 12-7 produ ces a graph in which each plot represents one
bit in the data. You also can select, re order, and combine bits in the data
before you display it on the graph. Selecting, reordering, and combining bits is called masking the data.
Use a mask to combine the plots of two or more different bits and display
them on a single plot. If you have an array of 8-bit integers, you can plot up to 8 bits on a single plot. If you have an array of 16-bit integers, you can display up to 16 bits on a single plot, and so on. You also can plot the same bit two or more times on a single plot.
3D Graphs
Note 3D graph controls are available only on Windows in the LabVIEW Full and
Professional Development Systems.
For many real-world data sets, such as the temperature distribution on a
surface, joint time-frequency analysis, and the motion of an airplane, you
need to visualize data in three dimensions. With the 3D graphs, you can visualize three-dimensional data and alter the way that data appears by
modifying the 3D graph properties.
The following 3D graphs are available:
3D Surface —Draws a surface in 3D space. When you drop this
control on the front panel, LabVIEW wires it to a subVI that receives
the data that represent the surface.
3D Parametric —Draws a complex surface in 3D space. When you
drop this control on the front panel, LabVIEW wires it to a subVI that receives the data that represent the surface.
3D Curve —Draws a line in 3D space. When you drop this control on
the front panel, LabVIEW wires it to a subVI that receives the data that
represent the line.
Use the 3D graphs in conjunction with the 3D Graph VIs to plot curves and
surfaces. A curve contains individual po ints on the graph, each point having
an x, y, and z coordinate. The VI then conn ects these points with a line. A
curve is ideal for visualiz ing the path of a moving object, such as the flight
path of an airplane.

Chapter 12 Graphs and Charts
LabVIEW User Manual 12-18 ni.comThe 3D graphs use ActiveX technology and VIs that handle 3D representation. You can set properti es for the 3D Graph Properties VIs
to change behavior at run time, including setting basic, axes, grid, and projection properties.A surface plot uses x, y, and z data to plot points on the graph. The surface
plot then connects these points, for ming a three-dimensional surface view
of the data. For example, you could use a surface plot for terrain mapping.
When you select a 3D graph, LabVIE W places an ActiveX container on the
front panel that contains a 3D gr aph control. LabVIEW also places a
reference to the 3D graph control on the block diagram. LabVIEW wires
this reference to one of the three 3D Graph VIs.
Waveform Data Type
The waveform data type carri es the data, start time, and ∆t of a waveform.
You can create waveforms using the Build Waveform function. Many of the VIs and functions you use to acq uire or analyze waveforms accept and
return the waveform data type by default. When you wire a waveform data type to a waveform graph or chart, th e graph or chart automatically plots a
waveform based on the data, start time, and ∆x of the waveform. When you
wire an array of waveform data type s to a waveform graph or chart, the
graph or chart automatica lly plots all the waveforms. Refer to Chapter 5,
Creat ing a Ty pical Measureme nt Application, of the LabVIEW
Measuremen ts Manual for more information ab out using the wave form
data type.
Digital Waveform Data Type
The digital waveform data type carries start time, delta x, the data, and the attributes of a digital waveform. Yo u can use the Build Waveform function
to create digital waveforms. When you wire a digital waveform data type to the digital waveform graph, the graph automatically plots a waveform based on the timing information and data of the digital waveform. Wire the digital waveform data type to a digital data indicator to view the samples and signals of a digital waveform. Refer to Chapter 5, Typical
Measurement Applications, of the LabVIEW Measuremen ts Manual for
more information about using the digital waveform data type.

© National Instruments Corpor ation 13-1 LabVIEW User Manual13
Graphics and Sound VIs
Use the Graphics and Sound VIs to display or modify graphics and sound
in VIs.
For more information…
Refer to the LabVIEW Help for more information about using graphics and sound
in VIs.
Using the Picture Indicator
The picture indicator is a general-purpos e indicator for displaying pictures
that can contain lines, circles, text , and other types of graphic shapes.
Because you have pixel-level control over the picture indicator, you can create nearly any graphics object. Use th e picture indicator and the graphics
VIs instead of a graphics application to create, modify, and view graphics
in LabVIEW.
The picture indicator has a pixel-based coordinate system in which the
origin (0, 0) is the pixel located at th e top left corner of the control. The
horizontal ( x) component of a coordinate increases toward the right, and the
vertical ( y) coordinate increases toward the bottom.
If a picture is too large for the pictur e indicator that displays it, LabVIEW
crops the picture so you can see only the pixels that fit within the display region of the indicator. Use the Positioning tool to resize the indicator and run the VI again to view the entire picture. You also can display vertical and
horizontal scrollbars for a picture indicator so you can view the pixels that do not fit within the display region of the indicator. Right-click the indicator and select Visible Items»Scrollbar from the shortcut menu to display
scrollbars for the indicator.
You can use VI Server properties in th e Picture class to modify the picture
indicator programmatically , such as to change the size of the picture
indicator or the pictur e area in the indicator. Refer to Chapter 17,
Programmatically Controlling VIs , for more information about using VI
Server properties.

Chapter 13 Graphics and Sound VIs
LabVIEW User Manual 13-2 ni.comWhen you place a picture indicator on th e front panel, it appears as a blank
rectangular area, and a corresponding terminal, shown at left, appears on the block diagram.
To display an image in a picture indi cator, you must write an image to the
indicator programmatically. You cannot co py an image to the clipboard and
paste it into the picture indicator. You can use the Picture Functions VIs to specify a set of drawing instructions. Each VI takes a set of inputs that describes a drawing instruction. Based on these inputs, the VI creates a compact description of these specificat ions that you pass to the picture
indicator for display. Refer to the Picture Functions VIs section of this
chapter for more information about using the Picture Functions VIs to display an image in a picture indicator.
Picture Plots VIs
Use the Picture Plot VIs to create comm on types of graphs using the picture
indicator. These graphs include a po lar plot, a waveform graph, an
XY graph, a Smith plot, a radar plot, and a graph scale.
The Picture Plot VIs use low-level dr awing functions to create a graphical
display of your data and customize the drawing code to add functionality. These graphical displays are not as interactive as the built-in LabVIEW
controls, but you can use them to visual ize information in ways the built-in
controls currently cannot. For example, you can use the Plot Waveform VI to create a plot with slightly different functionality than built-in waveform graphs.
Using the Polar Plot VI as a SubVI
Use the Polar Plot VI to draw specific, contiguous quadrants of a polar
graph or the entire graph at once. As with the built-in LabVIEW graphs,
you can specify the color of the compon ents, include a grid , and specify the
range and format for the scales.
The Polar Plot VI provides a large amou nt of functionality in a single VI.
Consequently, the VI includes complicated clusters for inputs. You can use default values and custom controls to decrease the comple xity of the VI.
Instead of creating the default cluste r input on the block diagram, copy a
custom control from the Polar Plot Demo VI in the
examples\picture\
demos.llb and place it on the front panel.

Chapter 13 Graphics and Sound VIs
© National Instruments Corpor ation 13-3 LabVIEW User ManualUsing the Plot Waveform and Plot XY VIs as SubVIs
Use the Plot Waveform VI, which emul ates the behavior of the built-in
waveform graph, to draw waveforms in a variety of styles, including points, connected points, and bars. As with the built-in waveform graphs, you can specify the color of the components, include a grid , and specify the range
and format for the scales.
The Plot Waveform VI provides a large amount of functionality in a
single VI. Consequently, the VI includes complicated clusters for inputs. You can use default values and custom controls to decrease the complexity of the VI. Instead of creating the de fault cluster input, copy a custom
control from the Waveform and XY Plots VI in the
examples\picture\
demos.llb and place it on the front panel.
The Plot XY VI and the Plot Mul ti-XY VI are similar to the Plot
Waveform VI. You use different cont rols to specify the cosmetic
appearance of the plot because the XY plotting VIs have three additional
plot styles—two scatter plot styles and a plot style where a line is drawn at each unique x-position to mark the minimum and maximum y-values for
that x-value.
Using the Smith Plot VIs as SubVIs
Use the Smith Plot VIs to study transmission line behavior, such as in the
telecommunications industry. A transmission line is a medium through which you transmit energy and signals. A transmission line can be a wire or it can be the atmosphere through which a signal tran smits. Transmission
lines have an effect on the signal that is transmitt ing. This effect, called
the impedance of the transmission line, can attenuate or phase shift an
AC signal.
The impedance of the transmission line is a measure of the resistance and
the reactance of the line. The impedance, z, is commonly listed as a
complex number of the form z=r+jx, where both resistance ( r) and
reactance ( x) are components.
Use the Smith Plot VIs to display impedances of transmission lines.
The plot consists of circles of constant resistance and reactance.
You can plot a given impedance, r+jx, by locating the intersection of the
appropriate r circle and x circle. After you plot the impedance, use the
Smith Plot VIs as visual aids to match impedance and to calculate the
reflection coefficient of a transmission line.

Chapter 13 Graphics and Sound VIs
LabVIEW User Manual 13-4 ni.comThe Smith Plot VIs provide a large amount of functionality in each
single VI. Consequently, many of thes e VIs include complicated clusters
for inputs. You can use default values and custom controls to decrease the
complexity of the VIs. Instead of creating the default cluster input,
copy a custom control from the Sm ith Plot example VIs in the examples\
picture\demos.llb and place it on the front panel.
If you are graphing load impedances, you can represent an impedance as a
complex number of the form r+jx.
To avoid losing detail in the Smith plot, use the Normalize Smith Plot VI to
normalize the data. You can pass the data you normalize with the Normalize Smith Plot VI directly to the Smith Plot VI. You usually scale
Smith plot data with respect to the characteristic impedance (Z
0) of the
system.
Picture Functions VIs
Use the Picture Functions VIs to draw shapes and enter text into a picture
indicator. You can draw points, lines, shapes, and pixmaps. Pixmaps of
unflattened data are 2D arrays of co lor, where each value corresponds to a
color or to an index into an array of RGB color values, depending on the color depth.
The first row of the Picture Functions palette contains VIs you use to draw
points and lines. A point is a cluster of two 16-bit signed integers that represent the x- and y-coordinates of a pixel.
When you use the Pictur e Functions VIs, the picture remembers the
position of the graphics pen. For most of the Picture Functions VIs, you
must specify absolute coordinates—that is, relative to the origin (0, 0). With the Draw Line VI and the M ove Pen VI, you can specify either
absolute or relative coordinates. Relative coordinates are relative to the current location of the pen. You can use the Move Pen VI to change the
location of the pen without drawing. Only the Draw Point VI, Move Pen VI, Draw Line VI, and Draw Multiple Lines VI change the location of the pen.
The second row of the Picture Functions palette contains VIs you use to
draw a shape. Each of these VIs draw s a shape in a rectangular area of a
picture. You specify a rectangle as a clus ter of four values that represent the
left, top, right, and bottom pixels.

Chapter 13 Graphics and Sound VIs
© National Instruments Corpor ation 13-5 LabVIEW User ManualThe third row of the Picture Functions palette contains VIs you use to
draw text in a picture. The Get Text R ect VI does not draw any text. Instead,
you use it to calculate the size of a bounding rectangle of a string.
The fourth row of the Picture Functions palette contains VIs you use to
draw flattened and unflattened pixmaps in a picture, to apply a mask to an
image, to obtain a subset of a source image, and to convert a picture data
type to a flattened image data cluster.
The last row of the Picture Function s palette contains the empty picture
constant, which you use when you need to start with or make changes to an empty picture. The last row of the palette also contains VIs you use to convert red, green, and blue values to the corresponding RGB color and to convert a color to its respective red, green, and blue components.
You can wire the pictures you create with the Picture Functions VIs only
to a picture indicator or to the picture input of a Picture Functions VI.
LabVIEW draws the picture when it updates the picture indicator on an
open front panel.
Each Picture Functions VI concatenat es its drawing instruction to the
drawing instructions wired to the picture input and returns the
concatenated drawing instructions in the new picture output.
The following block diagram uses the Draw Rect VI to draw two
overlapping rectangles.

Chapter 13 Graphics and Sound VIs
LabVIEW User Manual 13-6 ni.comCreating and Modifying Colors wi th the Picture Functions VIs
Many of the Picture Functions VIs have a color input to modify the color
of the shapes and text. The easiest way to specify a color is to use a color
box constant and click the co nstant to select a color.
To create colors as the result of cal culations rather than with color box
constants, you need to understand how a color box specifies a color using a numeric value.
A 32-bit signed integer represents a color, and the lower three bytes
represent the red, green, and blue comp onents of the color. For a range of
blue colors, create an array of 32-bit in tegers where the blue values of each
element change and are greater than the red and green values. To create a
range of gray colors, create an array of 32-bit integers where the red, green,
and blue values of each element are the same.
Graphics Formats VIs
Use the Graphics Formats VIs to read data from and write data to several
standard graphics file fo rmats, including bitmap ( .bmp ), Portable Network
Graphics ( .png ), and Joint Photographic Experts Group ( .jpg ) files. You
can use these VIs to perform the following tasks:
 Read data from a graphics file for display in a picture indicator. Read data for image manipulation.
 Write an image for viewing in other applications.
Bitmap data are 2D arrays in whic h each point varies depending on the
color depth. For example, in a black-a nd-white, or 1-bit, image, each point
is Boolean. In 4-bit and 8-bit images, each point is an index in a color table.
For 24-bit true-color images, each point is a mixture of red, green, and blue
(RGB) values.
The VIs that read and write graphics files work with data in a simple,
flattened format that is closer to the way graphics files are written to disk,
with the data stored in a 1D array. These graphics files are pixmaps, which
are similar in concept to bitmaps. You can display this flattened data
directly using the Draw Flattened Pixmap VI.
To manipulate the data as a 2D array, you can convert it to the appropriate
format using the Unflatten Pixm ap VI and Flatten Pixmap VI.

Chapter 13 Graphics and Sound VIs
© National Instruments Corpor ation 13-7 LabVIEW User ManualSound VIs
Use the Sound VIs to integrate sound files and functions into your VIs.
You can use these VIs to pe rform the following tasks:
 Create VIs that play sound files, such as a recorded warning, when
users perform certain actions.
 Create a VI that plays a sound file when the VI starts or finishes
running or when you reach a certain point in the VI.
 Configure a sound input device to acquire sound data. Use the Sound
Input VIs to acquire the sound data. You also can read any sound information coming through the device.
 Configure a sound output device to accept sound data from other
Sound VIs. You can control the volume of the sound going through the device, play or pause the sound, and clear the sound from your system.

© National Instruments Corpor ation 14-1 LabVIEW User Manual14
File I/O
File I/O operations pass data to and from files. Use the File I/O VIs and
functions to handle all aspects of file I/O, including the following:
 Opening and closing data files. Reading data from and writing data to files.
 Reading from and writing to spreadsheet-formatted files.
 Moving and renaming files and directories. Changing file characteristics.
 Creating, modifying, and r eading a configuration file.
Use the high-level VIs to perfor m common I/O operations. Use the
low-level VIs and functions to contro l each file I/O operation individually.
For more information…
Refer to the LabVIEW Help for more information about performing file I/O
operations.
Basics of File I/O
A typical file I/O operation involves the following process.
1. Create or open a file. Indicate where an existing file resides or where
you want to create a new file by specifying a path or responding to a dialog box to direct LabVIEW to the f ile location. After the file opens,
a refnum represents th e file. Refer to the References to Objects or
Applications section of Chapter 4, Building the Front Panel , for more
information about refnums.
2. Read from or write to the file.
3. Close the file.
Most File I/O VIs and functions perform only one step in a file I/O
operation. However, some high-level File I/O VIs designed for common file I/O operations perform all three steps. Although these VIs are not always as efficient as the low-level functi ons, you might find them easier to use.

Chapter 14 File I/O
LabVIEW User Manual 14-2 ni.comChoosing a File I/O Format
The File I/O VIs you use depend on th e format of the files. You can read
data from or write data to files in three formats—text, binary, and datalog. The format you use depends on the data you acquire or create and the applications that will access that data.
Use the following basic guidelines to determine which format to use:
 If you want to make your data available to other applications, such as
Microsoft Excel, use text files becau se they are the most common and
the most portable.
 If you need to perform random access file reads or writes or if speed
and compact disk space are crucial, use binary files because they are more efficient than text file s in disk space and in speed.
 If you want to manipulate complex records of data or different
data types in LabVIEW, use datalog files because they are the best way to store data if you intend to acces s the data only from LabVIEW and
you need to store complex data structures.
When to Use Text Files
Use text format files for your data to make it available to other users or applications, if disk space and file I/O speed are not crucial, if you do not
need to perform random access reads or writes, and if numeric precision is
not important.
Text files are the easiest format to us e and to share. Almost any computer
can read from or write to a text file . A variety of text-based programs can
read text-based files. Most instrument control applications use text strings.
Store data in text files when you want to access it from another application,
such as a word processing or spreadsheet application. To store data in text
format, use the String functions to convert all data to text strings. Text files can contain information of different data types.
Text files typically take up more memory than binary and datalog files if the
data is not originally in text form, su ch as graph or chart data, because the
ASCII representation of data usually is larger than the data itself. For example, you can store the number –123.4567 in 4 bytes as a single-precision floating-point number. However, its ASCII representation
takes 9 bytes, one for each character.

Chapter 14 File I/O
© National Instruments Corpor ation 14-3 LabVIEW User ManualIn addition, it is difficult to randomly access numeric data in text files.
Although each character in a string ta kes up exactly 1 byte of space, the
space required to express a number as text typically is not fixed. To find the
ninth number in a text file, LabVIE W must first read and convert the
preceding eight numbers.You might lose precision if you store numeric data in text files. Computers store numeric data as binary data, and typically you write numeric data to a text file in decimal notation. A loss of precision might occur when you write the data to the text file. Loss of precision is not an issue with binary files.Refer to the
examples\file\smplfile.llb and examples\
file\sprdsht.llb for examples of using file I/O with text files.
When to Use Binary Files
Storing binary data, such as an integer, uses a fixed number of bytes on disk. For example, storing any number from 0 to 4 billion in binary format, such as 1, 1,000, or 1,000,000, takes up 4 bytes for each number.
Use binary files to save numeric data and to access specific numbers from a file or randomly access numbers from a file. Binary files are machine
readable only, unlike text files, whic h are human readable. Binary files are
the most compact and fastest format fo r storing data. You can use multiple
data types in binary files, but it is uncommon.Binary files are more efficient because they use less disk space and because
you do not need to convert data to and from a text representation when you store and retrieve data. A binary file can represent 256 values in 1 byte of
disk space. Often, binary files contain a byte-for-byte image of the data as
it was stored in memory, except fo r cases like extended and complex
numerics. When the file contains a byte -for-byte image of the data as it was
stored in memory, reading the file is faster because conversion is not
necessar y. Refer to the LabVIEW D ata Storage Application Note for more
information about how LabVIEW stores data.
Note Text and binary files are both known as by te stream files, which means they store
data as a sequence of characters or bytes.
Refer to the Read Binary File and Write Binary File VIs in the examples\
file\smplfile.llb for examples of reading and writing an array of
double-precision floating-point values to and from a binary file, respectively.

Chapter 14 File I/O
LabVIEW User Manual 14-4 ni.comWhen to Use Datalog Files
Use datalog files to acce ss and manipulate data onl y in LabVIEW and to
store complex data structures quickly and easily.
A datalog file stores data as a sequen ce of identically structured records,
similar to a spreadsheet, where each ro w represents a record. Each record
in a datalog file must have the same data types associated with it. LabVIEW writes each record to the file as a cl uster containing the data to store.
However, the components of a datalog record can be any data type, which
you determine when you create the file.
For example, you can create a datalog whose record data type is a cluster
of a string and a number. Then, each reco rd of the datalog is a cluster of a
string and a number. However, the first record could be (
“abc”,1 ), while
the second record could be ( “xyz”,7 ).
Using datalog files requires little manipulation, which makes writing and
reading much faster. It also simplifie s data retrieval because you can read
the original blocks of data back as a record without having to read all records that precede it in the file. Random access is fast and easy with datalog files because all you need to access the record is the record number.
LabVIEW sequentially assigns the reco rd number to each record when it
creates the datalog file.
You can access datalog files from the front panel and from the block
diagram. Refer to the Logging Front Panel Data section of this chapter for
more information about accessing data log files from the front panel.
LabVIEW writes a record to a datalog fi le each time the associated VI runs.
You cannot overwrite a record after LabVIEW writes it to a datalog file. When you read a datalog file, you can read one or more records at a time.
Refer to the
examples\file\datalog.llb for examples of reading and
writing datalog files.

Chapter 14 File I/O
© National Instruments Corpor ation 14-5 LabVIEW User ManualUsing High-Level File I/O VIs
Use the high-level File I/O VIs to perform common I/O operations, such as
writing to or reading from th e following types of data:
 Characters to or from text files.
 Lines from text files.
 1D or 2D arrays of single-precision numerics to or from spreadsheet
text files.
 1D or 2D arrays of single-precision numerics or 16-bit signed integers
to or from binary files.
You can save time and programming effort by using the high-level VIs to
write to and read from files. The hi gh-level VIs perform read or write
operations in addition to opening and closing the file. Avoid placing the high-level VIs in loops, because the VIs perform open and close operations
each time they run. Refer to the Disk Streaming section of this chapter for
more information about keeping files open while you perform multiple operations.
The high-level VIs expect a file path input. If you do not wire a file path,
a dialog box appears for you to specify a fi le to read from or write to. If an
error occurs, the high-level VIs display a dialog box that describes the error.
You can choose to halt execution or to continue.
Figure 14-1 shows how to use the high-le vel Write To Spr eadsheet File VI
to send numbers to a Microsoft Excel spreadsheet file. When you run this
VI, LabVIEW prompts you to write the data to an existing file or to create a new file.
Figure 14-1. Using a High-Level VI to Write to a Spreadsheet
Use the Binary File VIs to read from and write to files in binary format.
Data can be integers or single-precision floating-point numerics.

Chapter 14 File I/O
LabVIEW User Manual 14-6 ni.comUsing Low-Level and Advanced File I/O VIs
and Functions
Use low-level File I/O VIs and functions and the Advanced File I/O
functions to contro l each file I/O opera tion individually.
Use the principal low-level functions to create or open a file, write data to
or read data from the file, and cl ose the file. Use the other low-level
functions to perform the following tasks:
 Create directories.
 Move, copy, or delete files.
 List directory contents. Change file characteristics.
 Manipulate paths.
A path, shown at left, is a LabVIEW data type that identifies the location
of a file on disk. The path describes the volume that contains the file, the directories between the top-level of the file system and the file, and the name of the file. Enter or display a path using the standard syntax for a given platform with the path control or indicator. Refer to the Path Controls
and Indicators section of Chapter 4, Building the Front Panel , for more
information about path controls and indicators.
Figure 14-2 shows how to use low-level VIs and functions to send numbers
to a Microsoft Excel spreadsheet file. When you run this VI, the Open/Create/Replace VI opens the
numbers.xls file. The Write File
function writes the string of numbers to the file. The Close function closes the file. If you do not close the file, the file stays in memory and is not accessible from other applications or to other users.

Chapter 14 File I/O
© National Instruments Corpor ation 14-7 LabVIEW User ManualFigure 14-2. Using a Low-Level VI to Write to a Spreadsheet
Compare the VI in Figure 14-2 to the VI in Figure 14-1, which completes
the same task. In Figure 14-2, you have to use the Array To Spreadsheet String function to format the array of numbers as a string. The Write To
Spreadsheet File VI in Figure 14-1 op ens the file, converts the array of
numbers to a string, and closes the file.
Refer to the Write Datalog File Example VI in the
examples\file\
datalog.llb for an example of using low-level File I/O VIs and
functions.
Disk Streaming
You also can use the low-level File I/O VIs and functions for disk streaming, which saves memory resour ces. Disk streaming is a technique
for keeping files open while you perform multiple write operations, for example, within a loop. Although the high-level write operations are easy to use, they add the overhead of ope ning and closing the file each time they
execute. Your VIs can be more effici ent if you avoid opening and closing
the same files frequently.
Disk streaming reduces the number of times the function interacts with the
operating system to open and clos e the file. To create a typical
disk-streaming opera tion, place the Open/Create/ Replace File VI before
the loop and the Close File function after the loop. Continuous writing to a file then can occur within the loop without the overhead associated with opening and closing the file.
Disk streaming is ideal in lengthy data acquisition operations where speed
is critical. You can write data continuously to a file while acquisition is still in progress. For best results, avoid r unning other VIs and functions, such as
Analyze VIs and functions, until you complete the acquisition.

Chapter 14 File I/O
LabVIEW User Manual 14-8 ni.comCreating Text and Spreadsheet Files
To write data to a text file, you must convert your data to a string. To write
data to a spreadsheet file, you must fo rmat the string as a spreadsheet string,
which is a string that includes delimiters, such as tabs. Refer to the Formatting Strings section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about formatting strings.
Writing text to text files requires no formatting because most word
processing applications that read text do not require formatted text. To write a text string to a text file, use the Write Characters To File VI,
which automatically opens and closes the file.
Use the Write To Spreadsheet File VI or the Array To Spreadsheet String
function to convert a set of numbers from a graph, a chart, or an acquisition
into a spreadsheet string. Refer to the Using High-Level File I/O VIs and
Using Low-Level and Advanced File I/O VIs and Functions sections of this
chapter for more information abou t using these VIs and functions.
Reading text from a word processing application might result in errors
because word processing applications format text with different fonts,
colors, styles, and sizes that the hi gh-level File I/O VIs cannot process.
If you want to write numbers and text to a spreadsheet or word processing
application, use the String functions and the Array functi ons to format the
data and to combine the strings. Then write the data to a file. Refer to
Chapter 10, Grouping Data Using Strings, Arrays, and Clusters , for more
information about using these functions to format and combine data.
Formatting and Writing Data to Files
Use the Format Into File function to format string, numeric, path, and
Boolean data as text and to write the formatted text to a file. Often you can use this function instead of separately formatting the string with the Format Into String function and writing the resulting string with the Write Characters To File VI or Write File function.
Refer to the Formatting Strings section of Chapter 10, Grouping Data
Using Strings, Arrays, and Clusters , for more information about formatting
strings.
Scanning Data from Files
Use the Scan From File function to scan text in a file for string, numeric, path, and Boolean values and then conv ert the text into a data type. Often

Chapter 14 File I/O
© National Instruments Corpor ation 14-9 LabVIEW User Manualyou can use this function instead of read ing data from a file with the Read
File function or Read Characters From File VI and scanning the resulting string with the Scan From String function.
Creating Binary Files
To create a binary file, acquire a set of numbers and write them to a file.
Use the Write To I16 and Write To SGL VIs to save 1D and 2D arrays of
16-bit integers or single-precision floating-point numbers to a file. Use the Read I16 and Read SGL VIs to read the files you created.
To write numbers of different data types, such as double-precision
floating-point numerics or 32-bit unsi gned integers, use the low-level or
Advanced File functions. When you read the file, use the Read File function
and specify the data type of the number.
Refer to the Read Binary File and Write Binary File VIs in the
examples\file\smplfile.llb for examples of writing and reading
floating-point numerics to and from a binary file.
Creating Datalog Files
You can create and read datalog files by enabling front panel datalogging or by using the low-level or Advanced File functions to acquire data and
write the data to a file. Refer to the Logging Front Panel Data section of
this chapter for more in formation about creating and accessing datalog files
from the front panel.
You do not have to format the data in a datalog file. However, when you
write or read datalog files, you must specify the data type. For example, if you acquire a temperature reading with the time and date the temperature
was recorded, you write the data to a da talog file and specify the data as a
cluster of one number and two strings. Refer to the Simple Temp Datalogger VI in the
examples\file\datalog.llb for an example of
writing data to a datalog file.
If you read a file that includes a temperature reading with the time and date
the temperature was recorded, you specify that you want to read a cluster
of one number and two strings. Refer to the Simple Temp Datalog Reader
VI in the examples\file\datalog.llb for an example of reading a
datalog file.

Chapter 14 File I/O
LabVIEW User Manual 14-10 ni.comWriting Waveforms to Files
Use the Write Waveforms to File a nd Export Waveforms to Spreadsheet
File VIs to send waveforms to f iles. You can write waveforms to
spreadsheet, text, or datalog files.
If you expect to use the waveform you create only in a VI, save the
waveform as a datalog file ( .log ). Refer to the When to Use Datalog Files
section of this chapter for more information about datalogging.
The VI in Figure 14-3 acquires multiple waveforms, displays them on a
graph, and writes them to a spreadsheet file.
Figure 14-3. Writing Multiple Waveforms to a Spreadsheet File
Reading Waveforms from Files
Use the Read Waveform from File VI to read waveforms from a file.
After you read a single waveform, you can add or edit waveform data type components with the Build Waveform function, or you can extract
waveform components with the Get Waveform Attribute function.
The VI in Figure 14-4 reads a wa veform from a file, edits the dt component
of the waveform, and plots the edited waveform to a graph.
Figure 14-4. Reading a Waveform from a File

Chapter 14 File I/O
© National Instruments Corporation 14-11 LabVIEW User ManualThe Read Waveform from File VI al so reads multiple waveforms from a
file. The VI returns an array of waveform data types, which you can display in a multiplot graph. If you want to access a single waveform from a file,
you must index the array of waveform data types, as shown in Figure 14-5.
Refer to the Arrays section of Chapter 10, Grouping Data Using Strings,
Arrays, and Clusters , for more information about indexing arrays. The VI
accesses a file that includes multiple waveforms. The Inde x Array function
reads the first and third waveforms in the file and plots them on two separate waveform graphs. Refer to Chapter 8, Loops and Structures , for
more information about graphs.
Figure 14-5. Reading Multiple Waveforms from a File
Flow-Through Parameters
Many File I/O VIs and functions contain flow-through parameters,
typically a refnum or path, that return the same value as the corresponding
input parameter. Use these parameters to control the execution order of the
functions. By wiring the flow-through output of the first node you want to execute to the corresponding input of the next node you want to execute, you create artificial data dependency. Without these flow-through parameters, you have to use sequence st ructures to ensure that file I/O
operations take place in the order you want. Refer to the Data Dependency
and Artificial Data Dependency section of Chapter 5, Building the Block
Diagram , for more information about ar tificial data dependency.

Chapter 14 File I/O
LabVIEW User Manual 14-12 ni.comCreating Configuration Files
Use the Configuration File VIs to read and create st andard Windows
configuration settings ( .ini ) files and to write platform-specific data, such
as paths, in a platform-independent fo rmat so that you can use the files
these VIs generate across multiple plat forms. The Configuration File VIs
do not use a standard file format for configuration files. While you can use
the Configuration File VIs on any plat form to read and write files created
by the VIs, you cannot use the Configuration File VIs to create or modify configuration files in a Mac OS or UNIX format.
Refer to the
examples\file\config.llb for examples of using the
Configuration File VIs.
Note The standard extension for Windows configuration settings files is .ini , but the
Configuration File VIs work with files with any extension, provided the content is in the correct format. Refer to the Windows Configuration Settings File Format section of this
chapter for more information about configuring the content.
Using Configuration Settings Files
A standard Windows configuration settings file is a specific format for storing data in a text file. You can programmatically access data within the
.ini file easily because it follows a specific format.
For example, consider a configuration settings file with the following
contents:
[Data]
Value=7.2
You can use the Configuration File VIs to read this data, as shown in
Figure 14-6. This VI uses the Read Key VI to read the key named Value
from the section called Data . This VI works regardless of how the file
changes, provided the file remains in the Windows configuration settings file format.

Chapter 14 File I/O
© National Instruments Corporation 14-13 LabVIEW User ManualFigure 14-6. Reading Data from an .ini File
Windows Configuration Settings File Format
Windows configuration settings files are text files divided into named
sections. Brackets enclose each section name. Every section name in a file
must be unique. The sections contain key/value pairs separated by an equal sign (
=). Within each section, every key name must be unique. The key
name represents a configuration prefer ence, and the value name represents
the setting for that preference. The following example shows the
arrangement of the file:
[Section 1]
key1=valuekey2=value
[Section 2]
key1=valuekey2=value
Use the following data types with Configuration File VIs for the value
portion of the key parameter:
 String
P a t h
 Boolean 64-bit double-precision floating-point numeric
 32-bit signed integer
 32-bit unsigned integer
The Configuration File VIs can read a nd write raw or escaped string data.
The VIs read and write raw data byte-for-byte, without converting the data to ASCII. In converted, or es caped, strings LabVIEW stores any
non-displayable text characters in the configuration settings file with the equivalent hexadecimal escape codes, such as
\0D for a carriage return.
In addition, LabVIEW stor es backslash characters in the configuration

Chapter 14 File I/O
LabVIEW User Manual 14-14 ni.comsettings file as double backslashes, such as \\ for \. Set the read raw
string? or write raw string? inputs of the Configuration File VIs to TRUE
for raw data and to FALSE for escaped data.
When VIs write to a configuration file, they place quotation marks around
any string or path data that contain a space character. If a string contains
quotation marks, LabVIEW stores them as \". If you read and/or write to
configuration files using a text editor, you might notice that LabVIEW replaced quotation marks with
\".
LabVIEW stores path data in a platform-independent format, the standard
UNIX format for paths, in .ini files. The VIs interpret the absolute path
/c/temp/data.dat stored in a configuration settings file as follows:
 (Windows) c:\temp\data.dat
 (Mac OS) c:temp:data.dat
 (UNIX) /c/temp/data.dat
The VIs interpret the relative path temp/data.dat as follows:
 (Windows) temp\data.dat
 (Mac OS) :temp:data.dat
 (UNIX) temp/data.dat
Logging Front Panel Data
Use front panel datalogging to record data for use in other VIs and in
reports. For example, you can log data from a graph and use that data in
another graph in a separate VI.
Each time a VI runs, front panel datalogging saves the front panel data to a
separate datalog file, which is in the format of delimited text. You can retrieve the data in the following ways:
 Use the same VI from which you recorded the data to retrieve the data
interactively.
 Use the VI as a subVI to retrieve the data programmatically.
 Use the File I/O VIs and functions to retrieve the data.
Each VI maintains a log-file binding th at records the location of the datalog
file where LabVIEW maintains the logged front panel data. Log-file binding is the association between a VI and the datalog file to which you log the VI data.

Chapter 14 File I/O
© National Instruments Corporation 14-15 LabVIEW User ManualA datalog file contains records that in clude a time stamp and the data from
each time you ran the VI. When you access a datalog file, you select which record you want by running the VI in retrieval mode and using the front panel controls to view the data. When you run the VI in retrieval mode, a numeric control appears at the top of the front panel, so you can navigate among the records. Refer to Figure 14 -7 for an example of this numeric
control.
Automatic and Interactive Front Panel Datalogging
Select Operate»Log at Completion to enable automatic logging. The first
time you log front panel data for a VI, LabVIEW prompts you to name the datalog file. LabVIEW logs data each time you run the VI and appends a
new record to the datalog file each additional time you run the VI. You
cannot overwrite a record after LabVIEW writes it to a datalog file.
To log your data interactively, select Operate»Data Logging»Log .
LabVIEW appends the data to the datalog file immediately. Log your data interactively so you can select when to log the data. Logging your data automatically logs the data each time you run the VI.
Note A waveform chart logs only one data point at a time with front panel datalogging.
If you wire an array to the chart indicator, the da talog file contains a subset of the array the
chart displays.
Viewing the Logged Front P anel Data Interactively
After you log data, you can view it interactively by selecting Operate»
Data Logging»Retrieve . The data retrieval toolbar appears, as shown in
Figure 14-7.
Figure 14-7. Data Retrieval Toolbar
The highlighted number indicates the data record you are viewing. The
numbers in square brackets indicate the range of records you logged for the current VI. You log a record each tim e you run the VI. The date and time
indicate when you logged the selected record. View the next or previous
record by clicking the in crement or decrement arro ws. You also can use the
up and down arrow keys on your keyboard.
In addition to the data retrieval tool bar, the front panel appearance changes
according to the record you select on the toolbar. For example, when you

Chapter 14 File I/O
LabVIEW User Manual 14-16 ni.comclick the increment arrow and advance to another record, the controls and
indicator display the data for that pa rticular record at the time you logged
the data. Click the OK button to exit retrieval mode and return to the VI
whose datalog file you were viewing.
Deleting a Record
While in retrieval mode, you can delete specific records. Mark for deletion
an individual record in retrieval mode by viewing that record and clicking the Trash button. If you click the Trash button again, the record is no
longer marked for deletion.
Select Operate»Data Logging»Purge Data while in retrieval mode to
delete all the records you marked for deletion.
If you do not delete your marked record before you click the OK button,
LabVIEW prompts you to delete the marked records.
Clearing the Log-File Binding
Use log-file binding to associate a VI with the datalog file to use when
logging or retrieving front panel data. You can have two or more datalog files associated with one VI. This mig ht help you test or compare the VI
data. For example, you could compare the data logged the first time you run the VI to the data logged the second time you run the VI. To associate more than one datalog file with a VI, you must clear the log-file binding by selecting Operate»Data Logging»Clear Log File Binding . LabVIEW
prompts you to specify a datalog file the next time you run the VI either with automatic logging enabled or when you choose to log data interactively.
Changing the Log-File Binding
Change the log-file binding to log front panel data to or retrieve front panel data from a different log file by selecting Operate»Data Logging»Change
Log File Binding . LabVIEW prompts you to select a different log file or
to create a new one. You might change log-file binding when you want to retrieve different data into a VI or append data from the VI to another datalog file.

Chapter 14 File I/O
© National Instruments Corporation 14-17 LabVIEW User ManualRetrieving Front Panel Data Programmatically
You also can retrieve logged data using a subVI or using the File I/O VIs
and functions.
Retrieving Front Pane l Data Using a SubVI
When you right-click a subVI and select Enable Database Access from the
shortcut menu, a yellow box appear s around the subVI, as shown in
Figure 14-8.
Figure 14-8. Retrieving Logged Data
The yellow box that looks like a f iling cabinet includes terminals for
accessing data from the datalog file. When you enable database access for the subVI, the inputs and outputs of the subVI actually act as outputs, returning their logged data. record # indicates the record to retrieve,
invalid record # indicates whether the record number exists, timestamp is
the time the record was created, and front panel data is a cluster of the
front panel objects. You can access the data of a front panel object by wiring
the front panel data cluster to the Unbundle function.
You also can retrieve values for sp ecific inputs and outputs by wiring
directly to the corresponding term inal on the subVI, as shown in
Figure 14-9.

Chapter 14 File I/O
LabVIEW User Manual 14-18 ni.comFigure 14-9. Retrieving Logged Data th rough SubVI Terminals
If you run the VI, the subVI does not run. Instead, it returns the logged data
from its front panel to the VI front panel as a cluster.
Note If you display a subVI or an Express VI as an expandable node, you cannot enable
database access for that node.
Specifying Records
The subVI has n logged records, and you can wire any number from –n to
n – 1 to the record # terminal of the subVI. Y ou can access records relative
to the first logged record using non-negative record numbers. 0 represents the first record, 1 represents the second record, and so on, through n – 1,
which represents the last record.
You can access records relative to the last logged record using negative
record numbers. –1 repres ents the last record, –2 represents the second to
the last, and so on, through – n, which represents the first record. If you wire
a number outside the range – n to n – 1 to the record # terminal, the invalid
record # output is TRUE, and the subVI retrieves no data.
Retrieving Front Panel Data Using File I/O Functions
You also can retrieve data you logged from the front panel by using File I/O
VIs and functions, such as the Read F ile function. The da ta type of each
record in the front panel datalog fi le creates two clusters. One cluster
contains a time stamp, and the other cluster contains the front panel data. The time stamp cluster includes an 32- bit unsigned integer that represents
seconds and an 16-bit unsigned integer that represents milliseconds elapsed since the LabVIEW system time, which is 12:00 a.m., January 1, 1904, Universal time.
You access the records of front panel da talog files with the same File I/O
functions you use to access datalog files you created programmatically. Enter the datalog record type as the type input to the File Open function,
as shown in Figure 14-10.

Chapter 14 File I/O
© National Instruments Corporation 14-19 LabVIEW User ManualFigure 14-10. Retrieving Logged Data Using the File Open Function
LabVIEW Data Directory
Use the default LabVIEW Data directory to store the data files LabVIEW
generates, such as .lvm or .txt files. LabVIEW installs the LabVIEW
Data directory in the default file directory for your operating system to
help you organize and locate the data files LabVIEW generates. By default, the Write LabVIEW Measurement File Express VI stores the
.lvm files it
generates in this directory, and the Read LabVIEW Measurement File
Express VI reads from this directory. The Default Data Directory constant,
shown at left, and the Default Data Directory property also return the
LabVIEW Data directory by default.
Select Tools»Options and select Paths from the top pull-down menu to
specify a different default data directory. The default data directory differs
from the default directory, which is the directory you specify for new VIs, custom controls, VI templates, or other LabVIEW documents you create.

Chapter 14 File I/O
LabVIEW User Manual 14-20 ni.comLabVIEW Measurement Data File
The LabVIEW measurement data file ( .lvm ) includes data the Write
LabVIEW Measurement File Express VI generates. The LabVIEW data file is a tab-delimited text file you can open with a spreadsheet application or a text-editing application. In a ddition to the data an Express VI
generates, the
.lvm file includes information about the data, such as the
date and time the data was generated.Refer to the Getting Started with LabVIEW manual for more information
about saving and retrieving data using Express VIs.You can use a LabVIEW measuremen t data file with NI DIAdem.

© National Instruments Corpor ation 15-1 LabVIEW User Manual15
Documenting and Printing VIs
You can use LabVIEW to document and print VIs.The Docu menting VIs section of this chapter descri bes how to rec ord
information about the block diagram and/or the front panel at any stage of development in printed documentation about VIs.The Printing VIs section of this chapter describes options for printing VIs.
Some options are more appropriate fo r printing information about VIs, and
others are more appropriate for reporting the data and results the VIs generate. Several factors affect which printing method you use, including if you want to print manually or programmatically, how many options you need for the report format, if you need the functionality in the stand-alone
applications you build, and on which platforms you run the VIs.
For more information…Refer to the LabVIEW Help for more information about documenting and
printing VIs and generating reports.
Documenting VIs
You can use LabVIEW to track developm ent, document a finished VI, and
create instructions for us ers of VIs. You can view documentation within
LabVIEW, print it, and save it to HTML, RTF, or text files.
To create effective documentation for VI s, add comments to the VI revision
history and create VI an d object descriptions.
Setting up the VI Revision History
Use the History window to display the development history of a VI,
including revision numbers. As you make changes to the VI, record and track them in the History window. Select Tools»VI Revision History to
display the History window. You also can print the revision history or save
it to an HTML, RTF, or text file. Refer to the Printing Documentation

Chapter 15 Documentin g and Printing VIs
LabVIEW User Manual 15-2 ni.comsection of this chapter for more information about printing the revision
history or saving it to a file.
Revision Numbers
The revision number is an easy way to track changes to a VI. The revision
number starts at zero and increases incrementally every time you save
the VI. To display the current revision number in the title bar of the VI and the title bar of the History window, select Tools»Options , select
Revision History from the top pull-down menu, and place a checkmark in
the Show revision number in titlebar checkbox.
The number LabVIEW displays in the History window is the next revision
number, which is the current revision number plus one. When you add a comment to the history, the header of the comment includes the next
revision number. The revision number does not increase when you save a VI if you change only the history.
Revision numbers are independent of comments in the History window.
Gaps in revision number s between comments indicat e that you saved the VI
without a comment.
Because the history is strictly a de velopment tool, LabVIEW automatically
removes the history when you remove the block diagram of a VI. Refer to the Distributing VIs section of Chapter 7, Creating VIs and SubVIs , for
more information about removing the block diagram. The History window
is not available in the run-time version of a VI. The General page of the
VI Properties dialog box displays the revision number, even for VIs
without block diagrams. Click the Reset button in the History window to
erase the revision history and rese t the revision number to zero.
Creating VI and Object Descriptions
Create descriptions for VIs and thei r objects, such as controls and
indicators, to describe the purpose of the VI or object and to give users instructions for using the VI or object. You can view the descriptions in LabVIEW, print them, or save them to HTML, RTF, or text files.
Create, edit, and view VI descriptions by selecting File»VI Properties and
selecting Documentation from the Category pull-down menu. Create,
edit, and view object descriptions by right-clicking the object and selecting Description and Tip from the shortcut menu. Tip strips are brief
descriptions that appear when you move the cursor over an object while a
VI runs. If you do not enter a tip in the Description and Tip dialog box,
no tip strip appears. The VI or object description appears in the Context

Chapter 15 Documenting and Printing VIs
© National Instruments Corpor ation 15-3 LabVIEW User ManualHelp window when you move the cursor over the VI icon or object,
respectively.
Printing Documentation
Select File»Print to print VI documentation or save it to HTML, RTF, or
text files. You can select a built-in format or create a custom format for
documentation. The documentation you create can include the following
items:
 Icon and connector pane
 Front panel and block diagram
 Controls, indicators, and data type terminals VI and object descriptions
 VI hierarchy
 List of subVIs Revision history
Note The documentation you create for certain types of VIs cannot include all the
previous items. For example, a polymorphic VI does not have a front panel or a block diagram, so you cannot incl ude those items in the docu mentation you create for a
polymorphic VI.
Saving Documentation to HT ML, RTF, or Text Files
You can save VI documentation to HTML, RTF, or text files. You can
import HTML and RTF files into most word processing applications, and you can use HTML and RTF files to cr eate compiled help files. You also
can use the HTML files LabVIEW gene rates to display VI documentation
on the Web. Refer to the Creating Your Own Help Files section of this
chapter for more information about using HTML and RTF files to create
help files. Refer to the Printing VIs Programmatically section of this
chapter for more information about printing and saving documentation to HTML, RTF, and text files programmatically.
When you save documentation to an RT F file, specify if you want to create
a file suitable for online help files or for word processing. In the help file format, LabVIEW saves the graphics to external bitmap files. In the word
processing file format, LabVIEW embe ds the graphics in the document.
For HTML files, LabVIEW saves all graphics externally in the JPEG, PNG, or GIF formats.

Chapter 15 Documentin g and Printing VIs
LabVIEW User Manual 15-4 ni.comSelecting Graphic Forma ts for HTML Files
When you save documentation to an HT ML file, you can select the format
of the graphics files and the color depth.
The JPEG format compresses graphics well but can lose some graphic
detail. This format works best for photos. For line art, front panels, and block diagrams, JPEG compression can result in fuzzy graphics and uneven colors. JPEG graphics are always 24 -bit graphics. If you select a lower
color depth such as black-and-white, graphics save with the depth you requested, but the result is still a 24-bit graphic.
The PNG format also compresses grap hics well, although not always as
well as the JPEG format. However, PNG compression does not lose any
detail. Also, it supports 1-bit, 4-bit, 8-bit, and 24-bit graphics. For lower bit
depth, the resulting graphic compresses much better than JPEG. The PNG format replaces the Graphics Intercha nge Format (GIF). Although the PNG
format has advantages over both JPEG and GIF, it is not as well supported by Web browsers.
The GIF format also compresses graphi cs well and is supported by most
Web browsers. Because of licensing issues, LabVIEW does not save graphics as compressed GIF files but might in the future. Use a graphics
format converter to co nvert the uncompressed GIF files that LabVIEW
saves to compressed GIF files. For higher quality compressed GIF files, select the PNG format when you save the documentation and use a graphics format converter to convert the PNG fi les that LabVIEW saves to GIF files.
Starting with the PNG form at produces higher qual ity graphics because the
PNG format is an exact reproduction of the original gra phic. Modify the
HTML file that LabVIEW generated to refer to the GIF files with the
.gif
extension.
Naming Conventions for Graphic Files
When you generate HTML or RTF documentation with external graphics, LabVIEW saves the control and indicator data type terminals to graphic files with consistent names. If a VI has multiple terminals of the same type, LabVIEW creates only one graphic file for that type. For example, if a VI
has three 32-bit signed integer inputs, LabVIEW creates a single
ci32.x
file, where x is the extension corresponding to th e graphic format.
Creating Your Own Help Files
You can use the HTML or RTF files LabVIEW generates to create your
own compiled help files. (Windows) You can compile th e individual HTML
files LabVIEW generates into an HTML Help file.

Chapter 15 Documenting and Printing VIs
© National Instruments Corpor ation 15-5 LabVIEW User ManualYou can compile the RTF files LabVIEW generates into a (Windows)
WinHelp, (Mac OS) QuickHelp, or (UNIX) HyperHelp file.
Create links from VIs to HTML files or compiled help files by selecting
File»VI Properties and selecting Documentation from the Category
pull-down menu.
Printing VIs
You can use the following primary methods to print VIs:
 Select File»Print Window to print the contents of the active window.
 Select File»Print to print more comprehensive information about a VI,
including information about the front panel, block diagram, subVIs, controls, VI history, and so on. Refer to the Printing Documentation
section of this chapter for more information about using this method to print VIs.
 Use the VI Server to programmatically print any VI window or VI
documentation at any time. Refer to Chapter 17, Programmatically
Controlling VIs , for more information about using this method to
print VIs.
Printing the Active Window
Select File»Print Window to print the contents of the active front panel or
block diagram window with the minimum number of prompts. LabVIEW prints the workspace of the active windo w, including any objects not in the
visible portion of the window. LabVIEW does not print the title bar, menu bar, toolbar, or scrollbars.
Select File»VI Properties and select Print Options from the Category
pull-down menu to configure how LabVIEW prints a VI when you select File»Print Window or when you print programmatically. Refer to the
Printing VIs Programmatically section of this chapter for more information
about printing programmatically.

Chapter 15 Documentin g and Printing VIs
LabVIEW User Manual 15-6 ni.comPrinting VIs Programmatically
Use any of the following methods to print VIs programmatically rather than
interactively with the dialog boxes that app ear when you select File»Print
Window and File»Print :
 Set a VI to automatically print its front panel every time it finishes
running.
 Create a subVI to print the VI. Use the Report Generation VIs to print reports or to save HTML
reports that contain VI documentation or data the VI returns.
 Use the VI Server to programmatically print a VI window or to print
VI documentation or save it to HTML, RTF, or text files at any time. Refer to Chapter 17, Programmatically Controlling VIs , for more
information about using this method to print VIs.
Note If you print VI documentation from a built application, you can print only the front
panels.
Printing the Front Panel of a VI after the VI Runs
Select Operate»Print at Completion to print the front panel of a VI when
it finishes running. You also can select File»VI Properties , select Print
Options from the Category pull-down menu, and place a checkmark in the
Automatically Print Panel Every Time VI Completes Execution
checkbox.
Selecting these options is similar to selecting File»Print Window when the
front panel is the active window.
If you use the VI as a subVI, LabVIE W prints when that subVI finishes
running and before the subVI returns to the caller.
Using a SubVI to Print Da ta from a Higher Level VI
In some cases, you might not want a VI to print every time it finishes
running. You might want printing to occur only if the user clicks a button or if some condition occurs, such as a test failure. You also might want
more control over the format for the printout, or you might want to print only a subset of the controls. In these cases, you can use a subVI that is set
to print at completion.

Chapter 15 Documenting and Printing VIs
© National Instruments Corpor ation 15-7 LabVIEW User ManualCreate a subVI and format the front panel the way you want LabVIEW to
print it. Instead of selecting Operate»Print at Completion in the higher
level VI, select it in the subVI. When you want to print, call the subVI and wire the data you want to print to the subVI.
Generating and Printing Reports
Use the Report Generation VIs to print reports or to save HTML reports
that contain VI documentation or data the VI returns. Use the Easy Print VI
Panel or Documentation VI to generate a basic report that contains VI documentation. Use the Easy Text Report VI to generate a basic report that contains data the VI returns. Use the other Report Generation VIs to generate more complex reports.
Note You can generate reports only in the LabVIEW Full and Professional Development
Systems.
Use the Report Generation VIs to perform the following tasks:
 Append text, graphics, tables, or VI documentation to a report.
 Set text font, size, style, and color.
 Set the report orientation—portrait or landscape.
 Set the report headers and footers.
 Set margins and tabs.
Additional Printing Techniques
If standard LabVIEW printing methods do not meet your needs, you can
use the following additional techniques:
 Print data on a line-by-line basis. If you have a line-based printer
connected to a serial port, use the Se rial Compatibility VIs to send text
to the printer. Doing so generally requires some knowledge of the command language of the printer.
 Export data to other applications, such as Microsoft Excel, save the
data to a file, and print from the other application.

(Windows, Mac OS X, and UNIX) Use the System Exec VI.
 (Mac OS) Use the AESend Print Document VI.
 (Windows) Use ActiveX to make another application print data. Refer
to Chapter 19, Windows Connectivity , for more information about
ActiveX.

© National Instruments Corpor ation 16-1 LabVIEW User Manual16
Customizing VIs
You can configure VIs and subVIs to work accordi ng to your application
needs. For example, if you plan to use a VI as a subVI that requires user input, configure the VI so that its front panel appears each time you call it.
You can configure a VI in many ways , either within the VI itself or
programmatically by using the VI Server. Refer to Chapter 17, Programmatically Controlling VIs , for more information about using the
VI Server to configur e how a VI behaves.
For more information…
Refer to the LabVIEW Help for more information about customizing VIs.
Configuring the Appearance and Behavior of VIs
Select File»VI Properties to configure the app earance and behavior of
a VI. Use the Category pull-down menu at the top of the dialog box to
select from several different optio n categories, including the following:
General —Displays the current path where a VI is saved, its revision
number, revision history, and any changes made since the VI was last saved. You also can use this page to edit the icon or the size of the
alignment grid for the VI.
Documentation —Use this page to add a description of the VI and link
to a help file topic. Refer to the Documenting VIs section of
Chapter 15, Documenting and Printing VIs , for more information
about the documentation options.
Security —Use this page to lock or password-protect a VI.
Window Appearance —Use this page to configure various window
settings.
Window Size —Use this page to set the size of the window.
Execution —Use this page to configure how a VI runs. For example,
you can configure a VI to run imme diately when it opens or to pause
when called as a subVI. You also can configure the VI to run at

Chapter 16 Customizing VIs
LabVIEW User Manual 16-2 ni.comdifferent priorities. For example, if it is crucial that a VI runs without waiting for another operation to complete, configure the VI to run at time-critical (highest) priority. Refer to the Using LabVIEW to Create
Multithre aded VIs for Max imum Perform ance and Reliability
Application Note for more information about creating multithreaded VIs.
Editor Options —Use this page to set the si ze of the alignment grid for
the current VI and to change the st yle of control or indicator LabVIEW
creates when you right-click a terminal and select Create»Control or
Create»Indicator from the shortcut menu. Refer to the Aligning and
Distributing Objects section of Chapter 4, Building the Front Panel ,
for more information about the alignment grid.
Customizing Menus
You can create custom menus for every VI you build, and you can
configure VIs to show or hide menu bars. Show and hide menu bars by
selecting File»VI Properties , selecting Windows Appearance from the
Category pull-down menu, clicking the Customize button, and placing or
removing a checkmark from the Show Menu Bar checkbox.
Configuring menus includes creating the menu and providing the block diagram code that executes when the user selects the various menu items.
Note Custom menus appear only while the VI runs.
Creating Menus
You can build custom menus or modify the default LabVIEW menus statically when you edit the VI or programmatically wh en you run the VI.
When you select Edit»Run-Time Menu and create a menu in the Menu
Editor dialog box, LabVIEW cr eates a run-time menu (
.rtm ) file so you
can have a custom menu bar on a VI rather than the default menu bar. After you create and save the
.rtm file, you must maintain the same relative path
between the VI and the .rtm file.
Use the Menu Editor dialog box to associate a custom .rtm file with a VI.
When the VI runs, it lo ads the menu from the .rtm file. You also can use
the Menu Editor dialog box to build custom menus either with application
items, which are menu items LabVIEW provides in the default menu, or with user items, which are menu items you add. LabVIEW defines the behavior of application items, but you control the behavior of user items with the block diagram. Refer to the Menu Selection Handling section of

Chapter 16 Customizing VIs
© National Instruments Corpor ation 16-3 LabVIEW User Manualthis chapter for more information about handling user menu item
selections.
Use the Menu Editor dialog box to customize menus when editing a VI.
Use the Menu functions to customize menus programmatically at run time. The functions allow you to insert, delete, and modify the attributes of user items. You can only add or delete application items because LabVIEW
defines the behavior and st ate of application items.
Menu Selection Handling
When you create a custom menu, yo u assign each menu item a unique,
case-insensitive string identi fier called a tag. When the user selects a menu
item, you retrieve its tag programmatically using the Get Menu Selection function. LabVIEW provides a handler on the block diagram for each menu
item based on the tag value of each menu item. The handler is a While Loop
and Case structure combination that allows you to determine which, if any, menu is selected and to ex ecute the appropriate code.
After you build a custom menu, build a Case structure on the block diagram
that executes, or handles, each item in the custom menu. This process is
called menu selection handling. LabVIEW handles all application items implicitly.
In Figure 16-1, the Get Menu Selection function reads the menu item the
user selects and passes the menu item into the Case structure, where the
menu item executes.
Figure 16-1. Block Diagram Using Menu Handling

Chapter 16 Customizing VIs
LabVIEW User Manual 16-4 ni.comIf you know that a certain menu item takes a long time to process, wire a
Boolean control to the block menu input of the Get Menu Selection
function and set the Boolean control to TRUE to disable the menu bar so the user cannot select anything else on the menu while LabVIEW processes
the menu item. Wire a TRUE value to the Enable Menu Tracking function
to enable the menu bar after La bVIEW processes the menu item.
You also can use the Event structur e to handle menu events. Refer to
Chapter 9, Event-Driven Programming , for more information about the
Event structure.

© National Instruments Corpor ation 17-1 LabVIEW User Manual17
Programmatically
Controlling VIs
You can access the VI Server th rough block diagrams, ActiveX
technology, and the TCP protocol to communicate with VIs and other instances of LabVIEW so you can programmatically control VIs and
LabVIEW. You can perform VI Server operations on a local computer
or remotely across a network.
For more information…
Refer to the LabVIEW Help for more information about program matically
controlling VIs.
Capabilities of the VI Server
Use the VI Server to perform the following programmatic operations:
 Call a VI remotely.
 Configure an instance of LabVIEW to be a server that exports VIs you
can call from other instances of LabVIEW on the Web. For example, if you have a data acquisition application that acquires and logs data at a remote site, you can sample that data occasionally from your local
computer. By changing your LabVIEW preferences, you can make some VIs accessible on the Web so that tr ansferring the latest data is as
easy as a subVI call. The VI Server handles the networking details. The
VI Server also works across platforms, so the client and the server can
run on different platforms.
 Edit the properties of a VI a nd LabVIEW. For example, you can
dynamically determine the location of a VI window or scroll a front panel so that a part of it is visible. You also can programmatically save any changes to disk.
 Update the properties of multiple VIs rather than manually using the
File»VI Properties dialog box for each VI.

Chapter 17 Programmatically Controlling VIs
LabVIEW User Manual 17-2 ni.com Retrieve information ab out an instance of LabVIEW, such as the
version number and edition. You also can retrieve environment
information, such as the platform on which LabVIEW is running.
 Dynamically load VIs into memory when another VI needs to call
them, rather than loading all subVIs when you open a VI.
 Create a plug-in architecture for the application to add functionality to
the application after you distribute it to customers. For example, you
might have a set of data filtering VIs, all of which take the same parameters. By designing the application to dynamically load these VIs from a plug-in directory, you can ship the application with a partial set of these VIs and make more filtering options available to users by placing the new filtering VIs in the plug-in directory.
Building VI Server Applications
The programming model for VI Server applications is based on refnums. Refnums also are used in file I/O, network conn ections, and other objects
in LabVIEW. Refer to the References to Objects or Applications section of
Chapter 4, Building the Front Panel , for more information about refnums.
Typically, you open a refnum to an instance of LabVIEW or to a VI. You
then use the refnum as a parameter to other VIs. The VIs get (read) or set
(write) properties, execute methods, or dynamically load a referenced VI. Finally, you close the refnum, which releases the referenced VI from
memory.
Use the following Application Control functions and nodes to build VI
Server applications:
Open Application Reference —Opens a reference to the local or
remote application you are accessing through the server or to access a
remote instance of LabVIEW.
Open VI Reference —Opens a reference to a VI on the local or remote
computer, or to dynamically load a VI from disk.
Property Node —Gets and sets VI, object, or application properties.
Refer to the Property Nodes section of this chapter for more
information about properties.
Invoke Node —Invokes methods on a VI, object, or application. Refer
to the Invoke Nodes section of this chapter for more information about
methods.

Chapter 17 Programmati cally Controlling VIs
© National Instruments Corpor ation 17-3 LabVIEW User ManualCall By Reference Node —Calls a dynamica lly loaded VI.
Close Reference —Closes any open references to the VI, object, or
application you accessed using the VI Server.
Application and VI References
You access VI Server functionality thro ugh references to two main classes
of objects—the Applicat ion object and the VI object. After you create a
reference to one of these objects, you can pass the reference to a VI or
function that performs an operation on the object.
An Application refnum refers to a local or remote instance of LabVIEW.
You can use Application properties and methods to change LabVIEW
preferences and return syst em information. A VI refnum refers to a VI in
an instance of LabVIEW.
With a refnum to an instance of La bVIEW, you can retrieve information
about the LabVIEW environment, such as the platform on which LabVIEW
is running, the version number, or a list of all VIs currently in memory. You also can set information, such as the current user name or the list of VIs
exported to other instances of LabVIEW.
When you create a refnum to a VI, LabVIEW loads the VI into memory.
The VI stays in memory until you close the refnum. If you have multiple refnums to a VI open at the same time, the VI stays in memory until you close all refnums to the VI. With a re fnum to a VI, you can update all the
properties of the VI available in the File»VI Properties dialog box as well
as dynamic properties, such as the position of the front panel window. You also can programmatically print the VI documentation, save the VI to another location, and export and import its strings to translate into another language.
Manipulating Application and VI Settings
Use the VI Server to get and set application and VI settings by using the Property and Invoke Nodes. You can ge t and set many application and VI
settings only through the Property and Invoke Nodes.
Refer to
examples\viserver for examples of usin g the Application and
VI Class properties and methods.

Chapter 17 Programmatically Controlling VIs
LabVIEW User Manual 17-4 ni.comProperty Nodes
Use the Property Node to get and set various properties on an application
or VI. Select properties from the node by using the Operating tool to click the property terminal or by right-c licking the white area of the node and
selecting Properties from the shortcut menu.
You can read or write multiple prop erties using a single node, however
some properties are not writable. Use the Positioning tool to resize the
Property Node to add new terminals. A small direction arrow to the right of the property indicates a property you read. A small direction arrow to the left of the property indicates a property you write. Right-click the property and select Change to Read or Change to Write from the shortcut menu to
change the operation of the property.
The node executes from top to bottom. The Property Node does not execute
if an error occurs before it executes, so always check for the possibility of errors. If an error occurs in a pr operty, LabVIEW ignores the remaining
properties and returns an error. The error out cluster contains information
about which property caused the error.
If the Property Node opens and returns a reference to an application or VI,
use the Close Reference function to clos e the application or VI reference.
LabVIEW closes control references when that reference is no longer
needed. You do not have to explicitly close control references.
Implicitly Linked Property Nodes
When you create a Property Node from a front panel object by right-clicking the obj ect and selecting Create»Property Node from the
shortcut menu, LabVIEW creates a Property Node on the block diagram
that is implicitly linked to the front panel object . Because these Property
Nodes are implicitly linked to the object from which it was created, they have no refnum input, and you do not need to wire the Property Node to
the terminal of the front panel object or the control reference. Refer to the
Controlling Front Panel Objects section of this chapter for more
information about control references.
Invoke Nodes
Use the Invoke Node to perform actions , or methods, on an application or
VI. Unlike the Property Node, a single Invoke Node executes only a single method on an application or VI. Se lect a method by using the Operating
tool to click the method terminal or by right-clicking the white area of the node and selecting Methods from the shortcut menu.

Chapter 17 Programmati cally Controlling VIs
© National Instruments Corpor ation 17-5 LabVIEW User ManualThe name of the method is always the first terminal in the list of parameters
in the Invoke Node. If the method returns a value, the method terminal displays the return value. Otherwise, the method terminal has no value.
The Invoke Node lists the parameters from top to bottom with the name of
the method at the top and the optional parameters, which are dimmed, at the
bottom.
Manipulating Application Cl ass Properties and Methods
You can get or set properties on a lo cal or remote instance of LabVIEW,
perform methods on LabVIEW, or bo th. Figure 17-1 shows how to display
all VIs in memory on a local computer in a string array on the front panel.
Figure 17-1. Displaying All VIs in Memory on a Local Computer
If you do not wire a refnum to the reference input, the Property Node or
Invoke Node uses a reference to the current instance of LabVIEW. If you
want to manipulate the properties or methods of another instance of LabVIEW, you must wire an application refnum to the reference input.
To find the VIs in memory on a remote computer, wire a string control to
the machine name input of the Open Application Reference function, as
shown in Figure 17-2, and enter the IP address or domain name. You also must select the Exported VIs in Memory property because the All VIs in
Memory property used in Figure 17-1 applies only to local instances of
LabVIEW.
Figure 17-2. Displaying All VIs in Memo ry on a Remote Computer

Chapter 17 Programmatically Controlling VIs
LabVIEW User Manual 17-6 ni.comManipulating VI Class Properties and Methods
You can get or set properties of a VI, perform methods on a VI, or both.
In Figure 17-3, LabVIEW reinitializes the front panel objects of a VI to their default values using the Invoke Node. The front panel opens and displays the default values using the Property Node.
If you do not wire a refnum to the reference input, the Property Node or
Invoke Node uses a reference to the VI containing the Property Node or
Invoke Node. If you want to manipulate the properties or methods of another VI, you must wire a VI refnum to the reference input.
Figure 17-3. Using VI Class Proper ty and Invoke Nodes
The Property Node operates similarly to the Invoke Node. After you wire a
VI refnum to the Property Node, you can access all the VI Class properties.
Manipulating Application and VI Class Properties and Methods
In some VIs, you must access both Appl ication and VI Cla ss properties or
methods. You must open and close the Application and VI Class refnums separately, as shown in Figure 17-4.
Figure 17-4 shows how to determine the VIs in memory on a local
computer and to display the path to each of the VIs on the front panel.
To find all the VIs in memory, you must access an Application Class
property. To determine the paths to each of these VIs, you must access a VI Class property. The number of VIs in memory determines the number
of times the For Loop executes. Place the Open VI Reference and Close
Reference functions inside the For Loop because you need a VI refnum for
each VI in memory. Do not close the Ap plication refnum un til the For Loop
finishes retrieving all the VI paths.

Chapter 17 Programmati cally Controlling VIs
© National Instruments Corpor ation 17-7 LabVIEW User ManualFigure 17-4. Using Application and VI Class Properties and Methods
Dynamically Loading and Calling VIs
You can dynamically load VIs instead of using statically linked subVI
calls. A statically linked subVI is one you place directly on the block diagram of a caller VI. It loads at the same time the caller VI loads.
Unlike statically linked subVIs, dynamically loaded subVIs do not load
until the caller VI makes the call to the subVI. If you have a large caller VI, you can save load time and memory by dynamically loading the subVI
because the subVI does not load until the caller VI needs it, and you can
release it from memory after the operation completes.
Call By Reference Nodes and Strictly Typed VI Refnums
Use the Call By Reference Node to dynamically call VIs.
The Call By Reference Node requires a strictly typed VI refnum. The
strictly typed VI refnum identifies the connector pane of the VI you are
calling. It does not create a permanent a ssociation to the VI or contain other
VI information, such as the name an d location. You can wire the Call By
Reference Node inputs and outputs just like you wire any other VI.
Figure 17-5 shows how to use the Call By Reference Node to dynamically
call the Frequency Response VI. The Call By Reference Node requires the
use of the Open VI Reference and the Close Reference functions, similar to
the functions you use for the Property Node and Invoke Node.

Chapter 17 Programmatically Controlling VIs
LabVIEW User Manual 17-8 ni.comFigure 17-5. Using the Call By Reference Node
The VI you specify for strictly type d refnums provides only the connector
pane information. That is, no perman ent association is made between the
refnum and the VI. In particular, avoid confusing selecting the VI connector pane with getting a refnum to the selected VI. You specify a particular VI using the vi path input on the Open VI Reference function.
Editing and Running VIs on Remote Computers
An important aspect of both Application and VI refnums is their network
transparency. This means you can open refnums to objects on remote
computers in the same way you open refnums to those objects on your computer.
After you open a refnum to a remote ob ject, you can treat it in exactly the
same way as a local object, with a fe w restrictions. For operations on a
remote object, the VI Server sends the information ab out the operation
across the network and sends the results back. The application looks almost
identical regardless of whether the operation is remote or local.
Controlling Front Panel Objects
Control references correspond to us er interface object references in
text-based programming languages. Co ntrol references do not correspond
to pointers in text-based programming languages.
Use the control refnum co ntrols located on the Refnum and Classic
Refnum palettes to pass front panel object references to other VIs. You also
can right-click a front panel object and select Create»Reference from the
shortcut menu to create a control reference. After you pass a control

Chapter 17 Programmati cally Controlling VIs
© National Instruments Corpor ation 17-9 LabVIEW User Manualreference to a subVI, use Property Nodes and Invoke Nodes to read and
write properties and invoke methods of the referenced front panel object.
Refer to the Case and Sequence Structures section of Chapter 8, Loops and
Structures , for information about using events to control block diagram
behavior programmatically through front panel objects.
Strictly Typed and Weakly Typed Control Refnums
Strictly typed control re fnums accept only control refnums of exactly the
same data type. For example, if the ty pe of a strictly typed control refnum
is 32-bit integer slide, you can wire only a 32-bit integer slide to the control refnum terminal. You canno t wire an 8-bit integer slide, a double-precision
scalar slide, or a cluster of 32-bit integer slides to the control refnum
terminal.
Control references you create from a control are strictly typed by default.
A red star in the lower le ft corner of the control reference on the front panel
indicates the control reference is stri ctly typed. On the block diagram,
(strict) appears on the Property Node or Invoke Node wired to the
control reference terminal to indicate th at the control reference is strictly
typed.
Note Because the latch mechanical actions are in compatible with strictly typed control
references, Boolean controls with latch me chanical action produce weakly typed control
references.
Weakly typed control references are more flexible in the type of data they
accept. For example, if the type of a we akly typed control reference is slide,
you can wire a 32-bit integer slide, sing le-precision slide, or a cluster of
32-bit integer slides to the control reference terminal. If the type of a weakly typed control reference is cont rol, you can wire a control reference
of any type of control to the control reference terminal.
Note When you wire a Property Node to a weak ly typed control refe rence terminal, the
Value property produces variant data, which might require conversion before you can use the data. The History Data property for charts is available only if the chart reference is
strictly typed. Refer to the Handling Variant Data section of Chapter 5, Building the Block
Diagram , for more information about variant data.

© National Instruments Corpor ation 18-1 LabVIEW User Manual18
Networking in LabVIEW
VIs can communicate, or network, w ith other processes, including those
that run on other applications or on remote computers. Use the networking features in LabVIEW to perform the following tasks:
 Share live data with other VIs running on a network using National
Instruments DataSocket technology.
 Publish front panel images and VI documentation on the Web.
 Email data from VIs.
 Build VIs that communicate with other applications and VIs through
low-level protocols, such as TCP, UDP, Apple events, and PPC Toolbox.
For more information…
Refer to the LabVIEW Help for more information about networking in LabVIEW.
Choosing among File I/O, VI Server,
ActiveX, and Networking
Networking might not be the best solution for your application. If you want
to create a file that contains data other VIs and applica tions can read, use
the File I/O VIs and functions. Refer to Chapter 14, File I/O , for more
information about using the File I/O VIs and functions.
If you want to control other VIs, us e the VI Server. Refer to Chapter 17,
Programmatically Controlling VIs , for more information about controlling
VIs and other LabVIEW applications on local and remote computers.
(Windows) If you want to access the f eatures of many Microsoft
applications, such as embedding a wave form graph in an Excel spreadsheet,
use the ActiveX VIs and functions. Refer to Chapter 19, Windows
Connectivity , for more information about accessing ActiveX-enabled
applications and per mitting other ActiveX applications access to
LabVIEW.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-2 ni.comLabVIEW as a Network Client and Server
You can use LabVIEW as a client to subscribe to data and use features
in other applications or as a server to make LabVIEW features available
to other applications. Refer to Chapter 17, Programmatically
Controlling VIs , for more information about using the VI Server to
control VIs on local and remote computers. You control VIs by accessing properties and invoking methods using the Property Node and Invoke Node, respectively.
Before you can access the properties and invoke methods of another
application, you must establish the ne twork protocol you use to access the
properties and methods. Protocols you can use include HTTP and TCP/IP. The protocol you select depends on the application. For example, the HTTP protocol is ideal for publishing on the Web, but you cannot use the HTTP protocol to build a VI that listens for da ta that another VI creates. To do that,
use the TCP protocol.
Refer to the Low-Level Communica tions Applications section of this
chapter for more information about communications protocols LabVIEW supports.
(Windows) Refer to Chapter 19, Windows Connectivity , for more
information about using ActiveX technology with LabVIEW as an ActiveX server or client.
Using DataSocket Technology
Use National Instruments DataSocket technology to share live data
with other VIs on the Web or on your local computer. DataSocket pulls
together established communication protocols for measurement and automation in much the same way a Web browser pulls together different Internet technologies.
DataSocket technology provides access to several input and output
mechanisms from the front panel through the DataSocket Connection
dialog box. Right-click a front panel object and select Data Operations»
DataSocket Connection from the shortcut menu to display the
DataSocket Connection dialog box. You publish (write) or subscribe
(read) to data by specifying a URL, in much the same way you specify
URLs in a Web browser.

Chapter 18 Networking in LabVIEW
© National Instruments Corpor ation 18-3 LabVIEW User ManualFor example, if you want to share the data in a thermometer indicator on the
front panel with other computers on the Web, publish the thermometer data
by specifying a URL in the DataSocket Connection dialog box. Users on
other computers subscribe to the data by placing a ther mometer on their
front panel and selecting the URL in the DataSocket Connection dialog
box. Refer to the Using DataSocket on the Front Panel section of this
chapter for more information about using DataSocket technology on the
front panel.Refer to the Integra ting the Internet into Your Measurement System white
paper for more information about DataSocket technology. This white paper is available as a PDF from the Installation CD, in the
manuals directory,
or from the National Instruments Web site at ni.com .
Specifying a URL
URLs use communication protocols, such as dstp , ftp, and file , to
transfer data. The protocol you use in a URL depends on the type of data
you want to publish and how you configure your network.You can use the following protocols when you publish or subscribe to data using DataSocket:DataSocket Transport Protocol (
dstp )—The native protocol for
DataSocket connections. When y ou use this protocol, the VI
communicates with the DataSocket Server. You must provide a named
tag for the data, which is appended to the URL. The DataSocket connection uses the named tag to addr ess a particular data item on a
DataSocket Server. To use this protocol, you must run a DataSocket Server.

(Windows) OLE for Process Control ( opc)—Designed specifically
for sharing real-time production data, such as data generated by industrial automation operations. To use this protocol, you must run an OPC server.

(Windows) logos —An internal National Instruments technology for
transmitting data between the network and your local computer.
File Transfer Protocol ( ftp)—You can use this protocol to specify a
file from which to read data.
Note To read a text file from an FTP site using DataSocket, add [text] to the end of the
DataSocket URL.
file —You can use this protocol to provide a link to a local or network
file that contains data.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-4 ni.comTable 18-1 shows examples of each protocol URL.
Use the dstp , opc, and logos URLs to share live data because these
protocols can update remote and local controls and indicators. Use the ftp
and file URLs to read data from file s because these protocols cannot
update remote and local controls and indicators.
Refer to the examples\comm\datasktx.llb for examples of using
DataSocket connections.
Data Formats Supported by DataSocket
Use DataSocket to publish and subscribe to the following data:
Raw text —Use raw text to deliver a string to a string indicator.
Tabbed text —Use tabbed text, as in a spreadsheet, to publish data in
arrays. LabVIEW interprets tabbed text as an array of data.
.wav data —Use .wav data to publish a sound to a VI or function.
Variant data —Use variant data to subscribe to data from another
application, such as a National Instruments Measurement Studio
ActiveX control.Table 18-1. Example DataSocket URLs
URL Example
dstp dstp://servername.com/numeric , where numeric is
the named tag for the data
opc opc:\National Instruments.OPCTest\item1
opc:\\machine\National
Instruments.OPCModbus\Modbus Demo Box.4:0
opc:\\machine\National
Instruments.OPCModbus\Modbus Demo Box.4:0?updaterate=100&deadband=0.7
logos logos://computer_name/process/data_item_name
ftp ftp://ftp.ni.com/datasocket/ping.wav
file file:ping.wav
file:c:\mydata\ping.wavfile:\\machine\mydata\ping.wav

Chapter 18 Networking in LabVIEW
© National Instruments Corpor ation 18-5 LabVIEW User ManualUsing DataSocket on the Front Panel
Use front panel DataSocket connections to publish or subscribe to live data
in a front panel object. Wh en you share the data of a front panel object with
other users, you publish data. When users retrieve the published data and view it on their front panel, users subscribe to the data.
DataSocket connections differ from Web Server and ActiveX connections
because you can use DataSocket connec tions directly from the front panel
without any block diagram programming. Each front panel control or indicator can publish or subscribe to data through its own DataSocket connection. Front panel DataSocket connections publish only the data, not a graphic of the front panel control, so the VIs that subscribe through
a DataSocket connection can perform th eir own operations on the data.
You can set the value of a front panel control directly on the front panel and
then publish the data, or you can build a block diagram, wire the output of a VI or function to an indicator, and publish the data from that indicator. Typical scenarios for using DataSock et connections with controls and
indicators include the following:
 Publish a value from a front panel control to manipulate a control and
publish the data for other users to subscribe to through a control or indicator. For example, if you pl ace a knob on your front panel that
raises or lowers temperature, a user on another computer can subscribe
to the data and use it in a control wired to a subVI or function, or view the data in an indicator.
 Publish a value that appears in a fr ont panel indicator so another user
can subscribe to the data and view the data in an control or indicator on
the front panel, or use the results as data in a control wired to an input in a subVI or function. For exampl e, a VI that calculates the mean
temperature and displays the temper ature in a thermometer on the front
panel can publish the temperature data.
 Subscribe to a value that appears in a control or indicator on the front
panel of another VI to view data in a front panel indicator on your VI. If you subscribe to the data with a control, you can use the data in your
VI by wiring the control to an input of a subVI or function.
 Publish from and subscribe to a front panel control so users can
manipulate a control on the front pane l of your VI from the front panels
of their VIs. When you run the VI, the front panel control on your VI retrieves the current value that another VI or application published through the DataSocket connection. When a user changes the control
value on the front panel, the Data Socket connection publishes the new
value to the front panel control of your VI. If you then manipulate the

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-6 ni.comvalue of your front panel control, your VI publishes the value to the
front panels of other users.
The front panel objects that subscribe to data do not have to be the same
kind of objects that publish the data. However, the front panel objects must be the same data type or, if they ar e numeric data, they must coerce. For
example, you can use a digital indicator in your VI to view the data a thermometer in another VI generates. The thermometer can be a floating-point number, and the digital indicator can be an integer.
Front panel DataSocket connections ar e primarily intended for sharing live
data. To read data in local files, FTP servers, or Web servers, use the
DataSocket Read function, the File I/O VIs and functions, or the
Application Control VIs and functions.
Reading and Writing Live Da ta through the Block Diagram
From the block diagram, you can pr ogrammatically read or write data
using the DataSocket functions.
Use the DataSocket Write function to wr ite live data through a DataSocket
connection programmatically. Figure 18-1 shows how to write a numeric value.
Figure 18-1. Publishing Data Usi ng DataSocket Write
The DataSocket Write function is poly morphic, so you can wire most data
types to the data input. Refer to the Polymorphic VIs and Functions section
of Chapter 5, Building the Block Diagram , for more information about
polymorphic VIs and functions.
Use the DataSocket Read function to read live data from a DataSocket
connection programmatically. Figure 18-2 shows how to read data and convert it to a double-precision floating-point number.

Chapter 18 Networking in LabVIEW
© National Instruments Corpor ation 18-7 LabVIEW User ManualFigure 18-2. Reading a Single Value Using DataSocket Read
Convert live data to a specific data type by wiring a control or constant to
the type input of DataSocket Read. If you do not specify a type, the data
output of DataSocket Read returns variant data, which you must manipulate with the Variant to Data function.
Programmatically Opening and Closing DataSocket
Connections
Use the DataSocket Open and DataSock et Close functions to control when
a DataSocket connection opens and closes. When you open a DataSocket connection using the Data Socket Open function, the connection remains
open until one of the following conditions are met: you explicitly close the connection using the DataSocket Close function, you close the VI, or the VI stops running. The URL input of the DataSocket Open function accepts
only a DataSocket URL. The Data Socket Open function returns a
DataSocket connection refnum that you can use as the URL input for the
DataSocket Read and Data Socket Write functions.
Buffering DataSocket Data
If you use the DataSocket Transport Protocol ( dstp ), the DataSocket
Server by default publishe s only the most recent valu e to all subscribers.
When one client publishes values to th e server faster than another client
reads them, newer values overwrite ol der, unprocessed values before the
clients read them. This loss of unpro cessed data can occur at the server or
at the client. This loss of data might not be a problem if you are subscribing to DataSocket data and you want to receive only the most recent value
published to the server. However, if you want to receive every value
published to the server, you must buffer the data on the client.
Note Client-side buffering also applies to other protocols, such as opc, logos , and file .
To use dstp buffering, you also must use the DataSocket Server Manager to configure
server-side buffering. Refer to the DataSocket Help for more information about server-side
buffering.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-8 ni.comdstp buffering does not guarantee data delivery. If the data in a buffer at
the server or client exceeds the buffer size, the buffer discards older values
in place of newer values. To detect dis carded values in a data stream, wire
the published data to the Set Variant Attribute function to uniquely identify each value in the publisher and chec k for discarded sequence IDs in the
subscriber.
Set the mode input of the DataSocket Open function to BufferedRead or
BufferedReadWrite and use a Property Node to set the DataSocket
properties for the size of a FIFO buffer. Doing so ensures that LabVIEW stores the values the client receives in a buffer rather than overwriting them
every time the value changes.
Note If you use DataSocket proper ties to set the size of a FI FO buffer, you must set the
mode input of the DataSocket Open function to BufferedRead or BufferedReadWrite .
Otherwise, the item at the server is not buffered for the connection.
Figure 18-3 uses DataSocket buffering.
Figure 18-3. DataSocket Buffering
Note Buffering applies only when you use the DataSocket Read function to subscribe to
data a server publishes. Buffering is not av ailable when you use front panel DataSocket
connections to subscribe to data.
Reporting Diagnostics
Use the Buffer Utilization (Bytes) pr operty or the Buffer Utilization
(Packets) property to request diagnostic information about the buffers you specify. Use these properties to check the percentage of buffer in use on the
client to determine whether the current buffer size is sufficient. If the value

Chapter 18 Networking in LabVIEW
© National Instruments Corpor ation 18-9 LabVIEW User Manualof either of these properties appro aches the maximum va lue of the buffer,
increase the buffer size to make sure you receive all values the server publishes.
Refer to the LabVIEW Help for more information about specifying the
buffer size for a DataSocket client.
DataSocket and Variant Data
In some cases, the VI or other appli cation that programm atically reads the
data cannot convert the data back into its original data type, such as when
you subscribe to data from another application. Also, you might want to add an attribute to the data, such as a time stamp or warning, which the data
types do not permit.
In these cases, use the To Variant fu nction to programmatically convert the
data you write to a DataSocket connection to variant data. Figure 18-4 shows a block diagram that continuall y acquires a temperature reading,
converts the data to variant data, and a dds a time stamp as an attribute to the
data.
Figure 18-4. Converting Live Temperat ure Data to Variant Data
When another VI reads the live data, the VI must convert the variant data
to a data type it can manipulate. Figure 18-5 shows a block diagram that continually reads temperature data from a DataSocket connection, converts
the variant data into a temperatur e reading, retrieves the time stamp
attribute associated with each reading, and displays the temperature and the
time stamp on the front panel.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-10 ni.comFigure 18-5. Converting Live Variant Data to Temperature Data
Publishing VIs on the Web
Use the LabVIEW Web Server to cr eate HTML documents, publish front
panel images on the Web, and embed VI s in a Web page. You can control
browser access to the published front pa nels and configure which VIs are
visible on the Web.
Note Use the LabVIEW Enterprise Connectivity Toolset to control VIs on the Web and
to add more security features to VIs you publish on the Web. Refer to the National Instruments Web site at
ni.com for more information about this toolset.
Web Server Options
Select Tools»Options and select one of the Web Server items in the top
pull-down menu to set the following options:
 Set up the root directory and log file. Enable the Web Server.
 Control browser access to VI front panels.
 Configure which VI front panels are visible on the Web.
You must enable the Web Server in the Web Server: Configuration page
of the Options dialog box before you can publish VIs on the Web. You also
can enable the Web Server with the Web Publishing Tool, described in the
Creating HTML Documents section of this chapter. The VIs must be in
memory before you publish them.

Chapter 18 Networking in LabVIEW
© National Instruments Corporation 18-11 LabVIEW User ManualCreating HTML Documents
Select Tools»Web Publishing Tool to use the Web Publishing Tool to
accomplish the following tasks:
 Create an HTML document.
 Embed static or animated images of the front panel in an HTML
document. Currently only Netscap e browsers support animated
images.
 Embed a VI that clients can view and control remotely.
 Add text above and below the embedded VI front panel image.
 Place a border around an image or embedded VI.
 Preview the document.
 Save the document to disk.
 Enable the Web Server for publishing HTML documents and front
panel images on the Web.
Publishing Front Panel Images
Use a .snap URL in a Web browser or an HTML document to return a
static image of the front panel of a VI currently in memory. The query
parameters in the URL specify the VI na me and the attributes of the image.
For example, use http://web.server.address /.snap?VIName.vi ,
where VIName.vi is the name of the VI you want to view.
Use a .monitor URL to return an animated image of the front panel of a
VI currently in memory. The query parameters in the URL specify the VI name, attributes of the animation, and attributes of the im age. For example,
use
http://web.server.address /.monitor? VIName.vi , where
VIName.vi is the name of the VI you want to view.
Front Panel Image Formats
The Web Server can generate images of front panels in the JPEG and PNG
image formats.
The JPEG format compresses graphics well but can lose some graphic
detail. This format works best for pho tos. For line art, front panels, and
block diagrams, JPEG compression can result in fuzzy graphics and uneven colors. The PNG format also compresses graphics well, although not always as well as the JPEG format . However, PNG compression does not
lose any detail.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-12 ni.comViewing and Controlling Front Panels Remotely
You can view and control a VI front panel remotely, either from within
LabVIEW or from within a Web browser, by connecting to the LabVIEW built-in Web Server. When you open a front panel remotely from a client,
the Web Server sends the front panel to the client, but the block diagram
and all the subVIs remain on the server computer. You can interact with the front panel in the same way as if the VI were running on the client, except the block diagram executes on the server . Use this feature to publish entire
front panels or to control your remo te applications safely, easily, and
quickly.
Note Use the LabVIEW Web Server if you want to control entire VIs. Use the DataSocket
Server to read and write data on a single front panel control in a VI. Refer to the Using
DataSocket Technology section of this chapter for more information about using the
DataSocket Server.
Configuring the Server for Clients
The user at the server computer must first configure the server before a
client can view and control a front panel remotely using LabVIEW or a
Web browser. Configure th e Web Server by selecting Tools»Options and
selecting the Web Server pages from the top pull-down menu. Use these
pages to control browser access to the server and to specify which front
panels are visible remotely. You also can use these pages to set a time limit
on how long a remote client can cont rol a VI when multiple clients are
waiting to control the VI.
The Web Server allows multiple client s to connect simultaneously to the
same front panel, but only one client at a time can control the front panel. The user at the server computer can re gain control of any VI at any time.
When the controller changes a value on the front panel, all client front
panels reflect that change. However, client front panels do not reflect all changes. In general, client front panels do not reflect changes made to the display on front panel objects, but rather to the actual values in the front panel objects. For example, if the controller changes the mapping mode or marker spacing of a scale of a chart or if the controller shows and hides a
scrollbar for a chart, on ly the controller front pa nel reflects these changes.
Remote Panel License
You must configure a license to support the number of clients that
potentially could connect to your server.

Chapter 18 Networking in LabVIEW
© National Instruments Corporation 18-13 LabVIEW User ManualNote (Windows 9. x) The LabVIEW Full Development Sy stem and the Application Builder
include a remote panel license that allows on e client to view and control a front panel
remotely. The LabVIEW Professional Develo pment System includes a remote panel
license that allows five clients to view and control a front panel remotely. You cannot upgrade the remote panel license to support more clients on Windows 9 x.
(Windows 2000/NT/XP , Mac OS, and UNIX) The LabVIEW Full Devel opment System and the
Application Builder include a remote panel li cense that allows one client to view and
control a front panel remotely. The LabVIEW Professional Development System includes a remote panel license that allows five clients to view and control a front panel remotely. You can upgrade the remote panel license to support more clients.
Viewing and Controlling Front Pa nels in LabVIEW or from
a Web Browser
A client can view and control a front panel remotely from LabVIEW or
from a Web browser.
Note Before you can view and control a front panel remotely, you must enable the Web
Server on the server computer where the VI you want to view and control is located.
Viewing and Controlling Fr ont Panels in LabVIEW
To view a remote front panel using LabVIEW as a client, open a new VI
and select Operate»Connect to Remote Panel to display the Connect to
Remote Panel dialog box. Use this dialog box to specify the server Internet
address and the VI you want to view. By default, the remote VI front panel
is initially in observer mode. You can request control by placing a checkmark in the Request Control checkbox in the Connect to Remote
Panel dialog box when you request a VI. When the VI appears on your
computer, you also can right-click anywhere on the front panel and select Request Control from the shortcut menu. Y ou also can access this menu
by clicking the status bar at the bottom of the front panel window. If no other client is currently in control, a message appears indicating that you
have control of the front panel. If another client is currently controlling the VI, the server queues your request until the other client relinquishes control
or until the control time limit times out. Only the user at the server computer can monitor the clie nt queue list by selecting Tools»Remote
Panel Connection Manager .
If you want to save the data generated by a VI running on a remote
computer, use DataSocket or TCP inst ead of remote front panels. Refer
to the Using DataSocket Technology section of this chapter for more
information about using DataSocket. Refer to the TCP and UDP section
of this chapter for more information about using TCP.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-14 ni.comAll VIs you want clients to view and control must be in memory. If the
requested VI is in memory, the server sends the front panel of the VI to the requesting client. If the VI is not in memory, the Connection Status section
of the Open Remote Panel dialog box displays an error message.
Viewing and Controlling Fr ont Panels from a Web
Browser
If you want clients who do not have LabVIEW installed to be able to view
and control a front panel remotely using a Web browser, they must install the LabVIEW Run-Time Engine. The LabVIEW Run-Time Engine includes a LabVIEW browser plug-in pack age that installs in the browser
plug-in directory. The LabVIEW CD contains an installer for the LabVIEW Run-Time Engine.
Clients install the LabVIEW Run-Time Engine and the user at the server
computer creates an HTML file that includes an
<OBJECT> and <EMBED>
tag that references the VI you want clients to view and control. This tag contains a URL reference to a VI a nd information that directs the Web
browser to pass the VI to the LabVIEW browser plug-in. Clients navigate to the Web Server by entering the We b address of the Web Server in the
address or URL field at the top of the Web browser window. The plug-in displays the front panel in the Web browser window and communicates with the Web Server so the client can interact with the remote front panel.
Clients request control by selecting Request Control of VI at the bottom
of the remote front panel window in their Web browser or by right-clicking
anywhere on the front panel and selecting Request Control of VI from the
shortcut menu.
If no other client is currently in control and if no other browser window on
the same connection is currently in control, a message appears indicating
that you have control of the front pa nel. If another client is currently
controlling the VI, the server queues your request until the other client relinquishes control or until the control time limit times out. Only the user at the server computer can monitor the client queue list by selecting
Tools»Remote Panel Connection Manager .
Note National Instruments recommends that you use Netscape 4.7 or later or Internet
Explorer 5.5 Service Pack 2 or later when viewing and controlling front panels in a Web browser.

Chapter 18 Networking in LabVIEW
© National Instruments Corporation 18-15 LabVIEW User ManualFunctionality Not Supported in Viewing and Controlling Remote
Front Panels
Because of the constraints of a Web browser, user interface applications
that attempt to manipulate the dimensions and location of a front panel do not work properly when that front panel is displayed as a part of a Web page. Although the Web Server and the LabVIEW browser plug-in attempt to preserve the fidel ity of complex user in terface applications—in
particular, those that present dialog boxes and subVI windows—some applications might not work properly in the context of a Web browser. National Instruments recommends that you do not export these types of applications for use in a Web browser.
Avoid exporting VIs that have While Loops but no wait function. These VIs
prevent background tasks fr om performing in a reasonable amount of time,
making front panels unresponsive when viewed or controlled remotely.
Additionally, some VIs might not work exactly the same way from a remote
computer as they do when run local ly. ActiveX controls embedded on a
front panel do not display on a remote client because they draw and operate
almost completely independent of LabVIEW. If a VI presents the standard file dialog box, the controller receives an error because you cannot browse a file system remotely. Also, the browse button of a path control is disabled in remote panels.
Clients viewing a front panel remotely might see different behavior
depending on whether the front panel th ey are connecting to is from a built
application. Specifically, if the front panel is from a built application, any programmatic changes to the front panel made before the client connects to the front panel are not refl ected on the client comp uter. For example, if a
Property Node changes a caption on a control before a client connects to
that front panel, the client will see the original caption of the control, not the changed caption.
Only a controller can remotely view the front panel of a VI dynamically
opened and run using the VI Server or the front panel of a subVI configured
to display the front panel when called. Clients not controlling the VI cannot view the front panel.
Block diagrams that achieve certain user interface effects by polling
properties of a front panel contro l might experience decreases in
performance when you control the VI from a remote computer. You can
improve the performance of these VIs by using the Wait for Front Panel
Activity function.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-16 ni.comEmailing Data from VIs
Use the SMTP E-mail VIs to send elect ronic mail, including attached data
and files, using the Simple Mail Tran sfer Protocol (SMTP). LabVIEW does
not support authentication for SMTP. You cannot use the SMTP E-mail VIs to receive information. The SM TP E-mail VIs us e the Multipurpose
Internet Mail Extensions (MIME) format to encode the message. In this
format, you can send multiple documents, including binary data files, within an email. You also can desc ribe properties of the individual
attachments, such as which character se t a text document uses. Refer to the
LabVIEW Help for information about emailing data from a VI.
Note The SMTP E-mail VIs are available only in the Full and Professional Development
Systems.
In addition to th e recipient(s) email addre ss, you must know the Web
address of the SMTP server. You sp ecify a mail server by wiring a mail
server to every SMTP E-mail VI you use. The mail server must be the host
name or IP address of an external se rver computer that can service requests
from the computer running the SMTP E-mail VIs. If you do not know which mail server to use, contact your network administrator for the name of a valid server. After you specify a valid mail server, the SMTP E-mail
VIs open a connection to the server and send the server commands that
describe the recipients and the contents of the email. The server sends the
message to the individual recipients or forwards it to other SMTP servers. Refer to the
examples\comm\smtpex.llb for examples of using the
SMTP E-mail VIs.
Note The SMTP E-mail VIs do not support mul ti-byte characters, such as Japanese.
Selecting a Character Set
The character set input parameter of the SMTP E-mail VIs specifies the
character set to use in the text of th e email or attachment. A character set
describes the mapping between char acters and their character codes.
A character is a basic unit of written languages—a letter, a number, a
punctuation mark, or, in some languages, an entire word. Modifications of letters, such as capitali zation or accent marks, make that letter a separate
character. For example,
O, o, Ö, and Ô are separate characters.

Chapter 18 Networking in LabVIEW
© National Instruments Corporation 18-17 LabVIEW User ManualA character code is a number that represents a character. Because
computers interpret only numbers, they must associate a character with a
number to operate on the character.
A character set is the relationship be tween characters an d the numbers that
represent them in the computer. For ex ample, in the ASCII character set,
the character codes for A, B, and C, are 65, 66, and 67, respectively.
US-ASCII Character Set
A commonly used character set for email is the US-ASCII, or ASCII.
Many email applications use this char acter set as the default and do not
work with other sets. The ASCII char acter set describes the letters and
most punctuation marks used in the English language, for a total of 128 characters. Most other character sets are extensions of ASCII.
Using the ASCII character set might not be sufficient because many
languages require characters not found in ASCII. For example, you cannot write the German word
Müller using ASCII because the character ü is not
defined in the ASCII character set.
ISO Latin-1 Character Set
Because many languages require charact ers not found in ASCII, countries
that use these languages created new ch aracter sets. Most of these character
sets contain the first 128 character codes as ASCII and define the next
128 character codes to describe characters needed in that language. Some of these character sets use different character codes to describe the same
characters. This can cause problems wh en one character set displays text
written in another character set. To solve this problem, use a standard
character set. One widely used standa rd character set is ISO Latin-1, also
known as ISO-8859-1. This character se t describes characters used in most
western European languages and most email applications that handle those languages include the set.
Mac OS Character Set
Apple Computer, Inc. developed its own extended character set before ISO Latin-1 was defined. The Mac OS char acter set is based on ASCII but uses
a different set of upper 128 character codes than ISO Latin-1. Because of
this, email that contains accented characters written in the Mac OS
character set appears inco rrectly in email applicat ions that expect ISO
Latin-1 text. To solve this problem, Mac OS email applications convert text to ISO Latin-1 before mailing it. Wh en another Mac OS email application

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-18 ni.comreceives text designated as using the IS O Latin-1 character set, it converts
the text to the Mac OS character set.
Transliteration
Transliteration is the mapping of char acters to another character set. Use
transliteration if you are sending an em ail and you need to change the text
of the email to the corr esponding character s in another character set. You
can use the SMTP E-mail VIs to specify character sets that map text to
another character set before sending th e text. For example, if you create a
message using standard ASCII character s and specify that the character set
is MacRoman, the SMTP E-mail VIs tran sliterate the text and send it as
character set iso-8859-1 (ISO Latin-1). Use the translit input parameter
of the SMTP E-mail VIs to specify whic h transliterations the VIs can use.
A transliteration is defined by a virtual character set, a target character set,
and a transliteration, or mapping, file. The transliteration file specifies that one character maps to another character.
The transliteration file is a binary file of 256 bytes with 256 entries. Each
entry in the file corresponds to a charact er in the virtual character set, and
contains the new character code from the target char acter set. For example,
if you want to map the
a character, whose code is 61, to the A character,
whose code is 41, the entry with an index of 61 in the transliteration file
should contain the value 41. If an entry contains a value that equals its
index, the transliteration file does no t modify the character in the virtual
character set. For example, if the entry with an index of 61 in the
transliteration file contains a value of 61, the transliteration file does not
modify the character.
When you specify a transliteration file as the target character set in the
translit input, the mappings are applied in the order specified. For example,
if the transliteration entry is [MacRoman iso-8859-1 macroman.trl ,
MacRomanUp MacRoman asciiup.trl ], the character set MacRoman
changed to iso-8859-1 using macroman.trl and then MacRomanUp
changed to MacRoman using asciiup.trl . Refer to the vi.lib\
Utility\SMTP directory for examples of .trl files.

Chapter 18 Networking in LabVIEW
© National Instruments Corporation 18-19 LabVIEW User ManualLow-Level Communications Applications
LabVIEW supports several low-level protocols you can use to communicate between computers.Each protocol is different, especially in the way it refers to the network
location of a remote application. Each protocol generally is incompatible with other protocols. For example, if you want to communicate between Mac OS and Windows, you must use a protocol that works on both platforms, such as TCP.
TCP and UDP
Transmission Control Protocol (TCP) and User Datagram Protocol (UDP)
are available on all platforms LabV IEW supports. TCP is a reliable,
connection-based protocol. It provides error detection and ensures that data arrive in order and without duplication. For these reasons, TCP is usually the best choice for network applications.Although UDP can give higher performance than TCP and does not require a connection, it does not guarantee delivery. Typically, use UDP in applications in which guaranteed delivery is not critical. For example, an application might transmit data to a destination frequently enough that a few lost s egments of data are not problematic. Re fer to the Using LabVIEW
with TCP /IP and UDP Application Note for more information about using
TCP and UDP in LabVIEW applications.Use the UDP Multicast Open VI instead of the UDP Open function to open
connections capable of reading, writing, or reading and writing UDP data to or from a multicase IP address. A multicast IP address defines a
multicast group. Multicast IP addresses are in the
224.0.0.0 to
239.255.255.255 range. When a client wants to join a multicast group,
it subscribes to the multicast IP address of the group. After the client subscribes to a multicast group, the client receives da ta sent to the multicast
IP address. Refer to the Using LabVIEW with TCP/IP a nd UDP
Application Note for more information about using UDP multicasting.

Chapter 18 Networking in LabVIEW
LabVIEW User Manual 18-20 ni.comApple Events and P PC Toolbox (Mac OS)
The more common Mac-only form of communication is Apple events. Use Apple events to send messages to request actions or return information
from other Mac OS applications.Program-to-Program Communication (PPC) Toolbox is a lower level form of sending and receiving data between Mac OS applications. PPC Toolbox
gives higher performance than Apple ev ents because the overhead required
to transmit information is lower. However, because PPC Toolbox does not
define the types of information you can transfer, many applications do not support it. PPC Toolbox is the best method to send large amounts of informa tion be tween app lications that sup port PPC Toolbox. Refer to the
Using Apple Even ts and the PPC To olbox to Communicate w ith LabVIEW
Applications on t he Maci ntosh Application Note for more information
about using Apple events and PPC Toolbox in LabVIEW applications.
Pipe VIs (UNIX)
Use the Pipe VIs to open, close, read , and write to UNIX named pipes. Use
named pipes to communicate between LabVIEW and unrelated processes.
Executing System-Level Comm ands (Windows and UNIX)
Use the System Exec VI to execute or launch other Windows applications
or UNIX command-line app lications from within VIs. With the System
Exec VI, you execute a system-level command line that can include any parameters supported by the application you want to launch.

© National Instruments Corpor ation 19-1 LabVIEW User Manual19
Windows Connectivity
LabVIEW provides access to other Wi ndows applications using .NET or
ActiveX technologies. You can use La bVIEW as a .NET client to access
the objects, properties, and method s associated with .NET servers.
LabVIEW is not a .NET server. Other applications cannot directly communicate with LabVIEW through .N ET. With a .NET-enabled VI, you
can connect to Windows services an d APIs. The .NET framework includes
COM+ component services, ASP Web development framework, and
support for Web service protocols, such as, SOAP, WSDL, and UDDI. The
.NET framework is the programming basis of the .NET environment you use to build, deploy, and run Web-b ased applications, smart client
applications, and XML Web services.
With ActiveX Automation, a Windows application, such as LabVIEW,
provides a public set of objects, commands, and functions that other
Windows applications can access. You can use LabVIEW as an ActiveX client to access the objects, properties, methods, and events associated with
other ActiveX-enabled applications. La bVIEW also can act as an ActiveX
server, so other applications can acce ss LabVIEW objects, properties, and
methods.
.NET refers to Microsoft’s .NET technology. You must install the .NET
framework. Refer to the MSDN Web site for more information about .NET and installing the framework. ActiveX refers to Microsoft’s ActiveX
technology and OLE technology. Re fer to the Microsoft Developer’s
Network documentation, Inside OLE , by Kraig Brockschmidt, second
edition, and Essential COM , by Don Box, for more information about
ActiveX.
For more information…
Refer to the LabVIEW Help and the National Instruments Web site at ni.com for
more information about usi ng .NET and ActiveX technology.

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-2 ni.com.NET Environment
The following list provides a background of the various elements that make
up the .NET environment. The purpose of this information is to help you understand .NET, but learning this information is not essential for you to use the .NET components in LabVIEW.
Common Language Runtime (CLR) —a set of libraries responsible
for run-time services, such as language integration, security enforcement, memory, garbage coll ection, process management, and
thread management. The CLR forms the foundation of .NET and uses
the intermediate language (IL) that all programming languages
generate to facilitate communication between .NET and other programs.
To help .NET communicate with va rious programs, the CLR provides
a data type system that spans pr ogramming languages and operating
system boundaries. Developers us e CLR to view the system as a
collection of data types and objects rather than as a collection of
memory and threads. The CLR requ ires compilers and linkers to
generate information in the CLR IL metadata format. In a Win32 system, all programming language co mpilers generate CLR IL code
rather than the assembly code.
Class Libraries —a set of classes that provides standard functionality,
such as input and output, string ma nipulation, security management,
network communications, thread management, text management, user interface design features, and so on. These classes contain the same functions the Win32/COM system uses. In the .NET framework, you can use classes created in one .NET language in another .NET language.
Assemblies —a unit of deployment similar to a DLL, OCX, or
executable for a component in COM. Assemblies are DLLs and executables you build using the .NET CLR. Assemblies can consist of
a single file or multiple files. An assembly includes a manifest that
contains information about the assembly name, version information, local information, publisher's security information, list of files that make up the assembly, list of dependent assemblies, resources, and exported data types. Single-file asse mblies contain all the data in a
single file, including the manifest and any resources it needs. Multi-file
assemblies might have external resources, such as bitmaps, icons, sound files, and so on, or have one file for the core code and another for helper libraries.

Chapter 19 Windows Connectivity
© National Instruments Corpor ation 19-3 LabVIEW User ManualAssemblies can be public or priv ate. .NET requires that private
assemblies be in the same director y as the application directory and
that public assemblies be in a system wide global cache called the
Global Assembly Cache (GAC). Th e developer of the application
typically writes private assemblies for use by that application. The
developer of the assembly also decides the version control. The
assembly name is the filename, minus any file extension, of the file that contains the manifest.
Global Assembly Cache (GAC) —a listing of the public assemblies
available on the system. The GAC is similar to the registry COM uses.
.NET Functions and Nodes
Use the following LabVIEW functions and nodes to access the objects,
properties, and methods asso ciated with .NET servers.
 Use the Constructor Node located on the .NET palette to select a
constructor of a .NET class from an assembly and create an instance of
that class on execution. When you place this node on the block diagram, LabVIEW displays the Select .NET Constructor
dialog box.
 Use the Property Node located on the .NET palette to get (read) and
set (write) the properties a ssociated with a .NET class.
 Use the Invoke Node located on the .NET palette to invoke methods
associated with a .NET class.
 Use the Close Reference function located on the .NET palette to close
all references to .NET objects when you no longer need the connection.
 Use the To More Generic Class function located on the .NET palette
to upcast a .NET reference to its base class.
 Use the To More Specific Cl ass function located on the .NET palette
to downcast a .NET reference to its derived class.

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-4 ni.comLabVIEW as a .NET Client
When LabVIEW accesses the objects associated with .NET assemblies,
it acts as a .NET client. Using LabV IEW as a .NET client involves the
following three main steps.
1. Create a .NET object using a constr uctor and establish a reference to
the object.
2. Wire the .NET object reference to a Property Node or Invoke Node and
select a property or method.
3. Close the .NET object reference to close the connection to the object.
To access a .NET object, use the Constr uctor Node on the block diagram to
create the required .NET object. Use the Constructor Node to select a class
of object from an assembly. When you place a Constructor Node on the
block diagram, LabVIEW displays the Select .NET Constructor dialog
box, which lists all public assemblies in the GAC. If you want to select a private assembly, click the Browse button in the dialog box and navigate
the file system for a private assembly. .NET assemblies are
.dll and .exe
file types. After you select a private assembly, the assembly appears in the
Assembly pull-down menu in the Select .NET Constructor dialog box the
next time you launch this dialog box.
When you select an assembly and clas s, the constructors for that class
appear in the Constructors section of the Select .NET Constructor dialog
box. Select the constructor and click the OK button to close this dialog box.
LabVIEW displays the name of the cl ass you selected on the Constructor
Node.
The Constructor Node is similar to the Automation Open function for
ActiveX, except that a Constructo r Node can specify initialization
parameters for creating the object. You can wire the .NET server reference
from the Constructor Node to a Propert y Node or Invoke Node and select a
property or method from the shortcut menu. Use the Close Reference function to close the refe rence to the .NET object.
Refer to the LabVIEW Help for more information about creating .NET
objects.

Chapter 19 Windows Connectivity
© National Instruments Corpor ation 19-5 LabVIEW User ManualData Type Mapping
LabVIEW converts the data types of the .NET property, method, and
constructor parameters into LabVIEW data types so LabVIEW can read and interpret the data. LabVIEW displays data types it cannot convert as .NET refnums. The following table lists the .NET data types and the converted LabVIEW data type.
Deploying .NET Applications
After you create a VI that includes .NET components, you can build that VI into an executable, LLB, or DLL.
Deploying an Executable
When you build applicati ons that use .NET objects, you must copy the
private assemblies the VIs use into the directory of the stand-alone
application and make sure that the ta rget computer has the .NET framework
installed.Table 19-1. .NET and LabVIEW Data Types
.NET Types LabVIEW Types
System.Int32, System.U Int32, System.Int16,
System.UInt16, , ,
System.String
System.Boolean
System.Byte, System.Char, System.UByte , ,
System.Single, System.Double,
System.Decimal, ,
System.Array Displayed as an array of the corresponding type
Enumeration (sparse)
DateTime
Any other .NET object

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-6 ni.comDeploying VIs
When you deploy the VIs, you must co py the private assemblies the VIs use
to the directory of the top-level VI. Make sure all assemblies the VIs use are in the same directory structure of the top-level VI and make sure that
the target computer has th e .NET framework installed.
Deploying DLLs
When you deploy a LabVIEW-built DLL, you must copy the private
assemblies the VIs use to the director y of the application that uses the
LabVIEW-built DLL and make sure that the target computer has the .NET
framework installed.
Configuring a .NET Client Application (Advanced)
.NET provides administrative capability to an application by using configuration files. A configuratio n file contains XML content and
typically has a
.config extension. To configure a LabVIEW .NET client
application, you can provide a configura tion file for a top-level VI or for a
stand-alone application. Name the configuration file the name of the
application with a .config extension, for example, My App.vi.config
or MyApp.exe.config .
ActiveX Objects, Properties, Methods, and Events
ActiveX-enabled applications include ob jects that have exposed properties
and methods that other applications can access. Objects can be visible to
the users, such as buttons, windows, pictures, documents, and dialog boxes,
or invisible to the user, such as application objects. You access an
application by accessing an object associ ated with that application and
setting a property or invoking a method of that object.
Refer to the Manipulating Application and VI Settings section of
Chapter 17, Programmatically Controlling VIs , for more information
about objects, properties, and meth ods in the LabVIEW environment.
Events are the actions ta ken on an object, such as clicking a mouse,
pressing a key, or running out of me mory. Whenever these actions occur to
the object, the object sends an event to alert the Active X container along
with the event-specific data.
Refer to the ActiveX Events section of this chapter for information about
using the Register Event Callback node to handle ActiveX events.

Chapter 19 Windows Connectivity
© National Instruments Corpor ation 19-7 LabVIEW User ManualActiveX VIs, Functions, Controls, and Indicators
Use the following VIs, functions, co ntrols, and indicators to access the
objects, properties, methods, and events associated with other
ActiveX-enabled applications:
 Use the automation refnum control to create a reference to an ActiveX
object. Right-click this control on the front panel to select an object from the type librar y you want to access.
 Use the Automation Open function to open an ActiveX object.  Use the ActiveX container to access and display an ActiveX object on
the front panel. Right-click the container, select Insert ActiveX
Object from the shortcut menu, and select the object you want to
access.
 Use the Property Node to get (read) and set (write) the properties
associated with an ActiveX object.
 Use the Invoke Node to invoke the methods associated with an
ActiveX object.
 Use the Register Event Callback nod e to handle events that occur on
an ActiveX object.
 Use the variant control and indicator to pass data to or from ActiveX
controls. Refer to the Handling Variant Data section of Chapter 5,
Building the Block Diagram , for more information about variant data.
LabVIEW as an ActiveX Client
When LabVIEW accesses the objects associated with another
ActiveX-enabled application, it is acting as an ActiveX client. You
can use LabVIEW as an ActiveX client in the following ways:
 Open an application, such as Microsoft Excel, create a document,
and add data to that document.
 Embed a document, such as a Micr osoft Word document or an Excel
spreadsheet, on the front panel in a container.
 Place a button or other object from another application, such as a Help
button that calls the other application help file, on the front panel.
 Link to an ActiveX control you built with another application.
LabVIEW accesses an ActiveX object wi th the automation refnum control
or the ActiveX container, both of wh ich are front panel objects. Use the
automation refnum control to select an ActiveX object. Use the ActiveX container to select a displayable Ac tiveX object, such as a button or

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-8 ni.comdocument and place it on the front panel. Both objects appear as automation
refnum controls on the block diagram.
Accessing an ActiveX- Enabled Application
To access an ActiveX-enabled appli cation, use the automation refnum
control on the block diagram to create a reference to an application. Wire
the control to the Automation Open function, which opens the calling application. Use the Property Node to select and a ccess the properties
associated with the object. Use the In voke Node to select and access the
methods associated with the object. Cl ose the reference to the object using
the Close Reference function. Closin g the reference removes the object
from memory.
For example, you can build a VI that opens Microsoft Excel so it appears
on the user’s screen, creates a workboo k, creates a spreadsheet, creates a
table in LabVIEW, and writes that table to the Excel spreadsheet.
Refer to the Write Table To XL VI in the
examples\comm\
ExcelExamples.llb for an example of using LabVIEW as an Excel
client.
Note Applications that include ActiveX custom interfaces appear with a icon. Click
the icon to select an object for th e custom interface. Refer to the Support for Custom
ActiveX Automation Interfaces section of this chapter for more information about custom
interfaces.
Inserting an ActiveX Obje ct on the Front Panel
To insert an ActiveX object on the front panel, right-click the ActiveX
container, select Insert ActiveX Object from the shortcut menu, and select
the ActiveX control or document you want to insert. You can set the properties for an ActiveX object using the ActiveX Property Browser or property pages, or you can set the pr operties programmatically using the
Property Node. Refer to the Setting ActiveX Properties section of this
chapter for more information a bout setting ActiveX properties.
Use the Invoke Node to invoke the methods associated with the object.
For example, you can display a Web page on the front panel by using an
ActiveX container to access the Micros oft Web Browser co ntrol, selecting
the Navigate class of methods, selecting the URL method, and specifying the URL.

Chapter 19 Windows Connectivity
© National Instruments Corpor ation 19-9 LabVIEW User ManualIf you use the ActiveX container, you do not have to have to wire the
automation refnum control on the block diagram to the Automation Open function or close the reference to th e object using the Close Reference
function. You can wire directly to the Invoke Node or Property Node because the ActiveX container embeds the calling applicat ion in LabVIEW.
However, if the ActiveX container includes properties or methods that return other automation refnum references, you must close these additional references.
Design Mode for ActiveX Objects
Right-click an ActiveX container and select Advanced»Design Mode
from the shortcut menu to display the container in design mode while you edit the VI. In design m ode, events are not generated and event procedures
do not run. The default mode is run mode, where you interact with the object as a user would.
Setting ActiveX Properties
After you open an ActiveX server or insert an ActiveX control or document, you can set the properties associated with that control or
document using the ActiveX Property Browser, property pages, and the
Property Node.
ActiveX Property Browser
Use the ActiveX Property Browser to view and set all the properties associated with an Acti veX control or document in an ActiveX container.
To access the ActiveX Property Brow ser, right-click the control or
document in the container on the front panel and select Property Browser
from the shortcut menu. You also can select Tools»Advanced»ActiveX
Property Browser . The ActiveX Property Browser is an easy way to set
the properties of an ActiveX object interactively, but you cannot use the browser to set properties pr ogrammatically, and you can use the
ActiveX Property Browser only with ActiveX objects in a container. The ActiveX Property Browser is not available in run mode or while a VI runs.
ActiveX Property Pages
Many ActiveX objects include property pages, which organize the properties associated with the object on separate tabs. To access ActiveX
property pages, right-click the object in the container on the front panel and
select the name of the obj ect from the shortcut menu.

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-10 ni.comLike the ActiveX Property Browser, ActiveX property pages are an easy
way to set the properties of an ActiveX object interactively, but you cannot use them to set properties program matically, and you can use property
pages only with ActiveX objects in a container. Property pages are not available for all ActiveX objects. Proper ty pages also are not available in
Run mode or when the VI is running.
Property Nodes
Use the Property Node to set ActiveX properties programmatically. For
example, if you use an ActiveX object to warn a user when a temperature
exceeds a limit, use the Property Node to set the Value property of the
object to specify the limit.
The following example changes the Value property of the CWButton
ActiveX control, which is part of the National Instruments Measurement
Studio User Interface ActiveX Librar y, when the temperature reaches
85 degrees Fahrenheit or higher.
In this case, the CWButton control acts as an LED, changes colors, and
displays Warning when the temperature reaches the limit, wh ich is the on
state of the CWButton control.
Note In this example, you could use the ActiveX Property Browser or property pages to
set the OffText, OffColor, OnText, and OnColor properties for the CWButton control because you do not need to set those pr operties programmati cally. Refer to the ActiveX
Property Browser and ActiveX Property Pages sections in this chapter for more
information about the ActiveX Property Browser and property pages, respectively.

Chapter 19 Windows Connectivity
© National Instruments Corporation 19-11 LabVIEW User ManualLabVIEW as an ActiveX Server
The LabVIEW application, VIs, and control properties and methods are
available through ActiveX calls from other applications. Other
ActiveX-enabled applications, such as Microsoft Excel, can request
properties, methods, and individual VIs from LabVIEW, and LabVIEW
acts as an ActiveX server.
For example, you can embed a VI graph in an Excel spreadsheet and, from
the spreadsheet, enter data in the VI inputs and run the VI. When you run
the VI, the data plot to the graph.
Refer to the examples\comm\freqresp.xls for an example of using
LabVIEW properties and method s in an Excel spreadsheet.
Support for Custom Activ eX Automation Interfaces
If you are writing an Ac tiveX client that accesses properties and methods
from an ActiveX server using LabV IEW, you can access custom interfaces
exposed by the server. You do not need to use IDispatch to do so. However, the developer of the ActiveX server mu st make sure the parameters of the
properties and methods in these custom inte rfaces have Automation
(IDispatch) data types. The developer of the server must do so to expose multiple interfaces from one object, ra ther than through multiple objects.
You still can use the interfaces in the LabVIEW environment. Refer to your
server development programming environment documentation for more information about accessing custom interfaces.
Using Constants to Set Parameters in ActiveX VIs
Some parameters in ActiveX nodes take a discrete list of valid values. Select the descriptive name in the ri ng constant to set these parameter
values. To access the ring constant when building an ActiveX VI,
right-click the parameter of the node that accepts data values and select
Create Constant from the shortcut menu. The selections available in the
ring constant depend on the refnum passed to the node. Figures 19-1 and 19-2 show examples of using ring and numeric constants to set parameter values.

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-12 ni.comFigure 19-1. Setting a Data Value with a Ring Constant
Figure 19-2. Setting a Data Value with a Numeric Constant
Parameters that accept data values ha ve a small arrow to the left of the
parameter name. To view the corresponding numeric data value, right-click the ring constant and select Visible Items»Digital Display from the
shortcut menu.
The VIs in Figures 19-1 and 19- 2 both access the Microsoft Excel
application and execute a method. The Index parameter of the
ActivateMicrosoftApp method has the following options:
MicrosoftWord , MicrosoftPowerPoint , MicrosoftMail ,
MicrosoftAccess , MicrosoftFoxPro , MicrosoftProject , and
MicrosoftSchedulePlus .
To identify the numeric value of the Index parameter that corresponds to
the MicrosoftAccess option in Figure 19-1, select the MicrosoftAccess
option from the pull-down menu in the ring constant. The numeric value of the currently selected option appears in a box next to the ring constant.
Instead of using a ring constant, you can enter the numeric value of an
option into a numeric constant, as shown in Figure 19-2.
ActiveX Events
To use ActiveX events in an application, you must register for the event and handle the event when it occurs. ActiveX event registration is similar to dynamic event registratio n as explained in the Dynamic Event Registration
section of Chapter 9, Event-Driven Programming . However, the
architecture of an ActiveX event VI is different than the architecture of an

Chapter 19 Windows Connectivity
© National Instruments Corporation 19-13 LabVIEW User Manualevent-handling VI as described in Chapter 9, Event-Driven Programming .
The following components make up a typical ActiveX event VI:
 ActiveX object for which you want to generate an event.
 Register Event Callback node to speci fy and register for the type of
event you want to generate.
 Callback VI that contains the code you write to handle the event you
specify.
You can generate and handle events on ActiveX objects in a container or on
ActiveX objects you specify by using an Automation Refnum. For example, you can call a Windows tree control from an ActiveX container
and specify that you want to generate a Double Click event for the items displayed in the tree control.
The Register Event Callback node is a growable node capable of handling
multiple events, similar to the Register For Events node.
When you wire an ActiveX object refe rence to the Register Event Callback
node and specify the event you want to generate for that object, you are registering the ActiveX object for that event. After you register for the
event, you create a callback VI that contains the code you write to handle the event.
Handling ActiveX Events
You must create a callback VI to hand le events from ActiveX controls
when the controls generate the regi stered events. The callback VI runs
when the event occurs. To creat e a callback VI, right-click the VI Ref input
of the Register Event Ca llback node and select Create Callback VI from
the shortcut menu. LabVIEW creates a reentrant VI that contains the
following elements:
Event common data contains the following elements:
–Source is a numeric control that speci fies the source of the event,
such as LabVIEW or ActiveX. A value of 1 indicates an ActiveX
event.
–Type specifies which event occurred. This is an enumerated type
for user interface events and a 32 -bit unsigned integer type for
ActiveX and other event sources. For ActiveX events, the event type represents the method code, or ID, for the event registered.
–Time is the time stamp in millisec onds that specifies when the
event was generated.

Chapter 19 Windows Connectivity
LabVIEW User Manual 19-14 ni.comCtlRef is a reference to the ActiveX or Automation Refnum on which
the event occurred.
Event Data is a cluster of the parameters specific to the event the
callback VI handles. LabVIEW determines the appropriate Event
Data when you select an event from the Register Event Callback node.
Refer to the Notify and Filter Events section of Chapter 9,
Event-Driven Programming , for more information about notify and
filter events.
Event Data Out is a cluster of the modifiable parameters specific to
the event the callback VI handles. This element is available only for
filter events.
 (Optional) User Parameter is data LabVIEW passes to the user
through the callback VI when the Ac tiveX object generates the event.
Note You can use an existing VI as a callback VI as long as th e connector pane of the VI
you intend to use matches the connector pane of the event data. National Instruments recommends that the callback VI be reentrant because if it is not, LabVIEW cannot call it
simultaneously if ActiveX events occur multiple times.

© National Instruments Corpor ation 20-1 LabVIEW User Manual20
Calling Code from Text-Based Programming Languages
You can call most standa rd shared libraries in LabVIEW using the Call
Library Function Node. You also can call C code in LabVIEW using the Code Interface Node (CIN).Refer to the Call Library Function Nodes and C ode Inter face Nodes
section of Chapter 6, LabVI EW Style Guid e, in the LabVIEW Development
Guidelines manual for more information about platform-specific
considerations when calling e xternal code. Refer to the Using External
Code in LabVIEW manual for more information about calling code from
text-based programming languages.
For more information…Refer to the LabVIEW Help for more information a bout calling code from
text-based programming languages.
Call Library Function Node
Use the Call Library Function Node to call most standard shared libraries
or DLLs. With this func tion, you can create an interface in LabVIEW to
call existing libraries or new librar ies specifically written for use with
LabVIEW. National Instruments recommends using the Call Library Function Node to create an in terface to external code.
Code Interface Node
Use the CIN as an alternative method for calling source code written in C. The Call Library Function Node generally is easier to use than the CIN.

© National Instruments Corpor ation 21-1 LabVIEW User Manual21
Formulas and Equations
When you want to use a complicated equation in LabVIEW, you do not
have to wire together various arithmetic functions on the block diagram. You can develop equations in a fami liar, mathematical environment and
then integrate the equatio ns into an application.
Use the Formula Node and Expressi on Node to perform mathematical
operations in the LabVIEW environment. For more additional functionality, you can link to the mathematics application MATLAB.
For more information…
Refer to the LabVIEW Help for more information about using equations and the
syntax to use, available functions and opera tors, and descript ions of possible
errors.
Methods for Using Equations in LabVIEW
You can use the Formula Node, Expression Node, and MATLAB script
node to perform mathematical operations on the block diagram.
Note You must have MATLAB installed on your computer to use the script node because
the script node invokes the MATLAB script se rver to execute MATLAB scripts. Because
LabVIEW uses ActiveX technology to implement the script node, it is available only on
Windows. The script node is similar to the Formula Node, but it allows you to import an existing MATLAB script in ASCII form and run the script in LabVIEW. As with a Formula Node, you can pass data to and from the node.
Formula Nodes
The Formula Node is a convenient text-based node you can use to perform mathematical operations on the block diagram. You do not have to access
any external code or applications, and you do not have to wire low-level arithmetic functions to create equations. In addition to text-based equation expressions, the Formula Node can accept text-based versions of if
statements, while loops, for loops, and do loops, which are familiar to

Chapter 21 Formul as and Equations
LabVIEW User Manual 21-2 ni.comC programmers. These program ming elements are simi lar to what you find
in C programming but are not identical.
Formula Nodes are useful for equations that have many variables or are
otherwise complicated and for using existing text-based code. You can
copy and paste the existing text-based code into a Formula Node rather than recreating it graphically.
Formula Nodes use type checking to make sure that array indexes are
numeric data and that operands to the bit operations are integer data.
Formula Nodes also check to make sure array indexes are in range.
For arrays, an out-of-range value defaults to zero, and an out-of-range assignment defaults to
nop to indicate no operation occurs.
Formula Nodes also perform automatic type conversion.
Using the Formula Node
The Formula Node is a resizable box similar to the For Loop, While Loop,
Case structure, Stacked Sequence stru cture, and Flat Sequence structure.
However, instead of containing a subdi agram, the Formula Node contains
one or more C-like statements delimited by semicolons, as in the following example. As with C, add commen ts by enclosing them inside a
slash/asterisk pair (
/*comment*/ ).

Refer to the Equations VI in the examples\general\structs.llb for
an example of using a Formula Node.

Chapter 21 Formulas and Equations
© National Instruments Corpor ation 21-3 LabVIEW User ManualVariables in the Formula Node
When you work with variables, remember the following points:
 There is no limit to the number of variables or equations in a Formula
Node.
 No two inputs and no two outputs can have the same name, but an
output can have the same name as an input.
 Declare an input variab le by right-clicking the Formula Node border
and selecting Add Input from the shortcut menu. You cannot declare
input variables inside the Formula Node.
 Declare an output variable by righ t-clicking the Formula Node border
and selecting Add Output from the shortcut menu. The output
variable name must match either an input variable name or the name of a variable you declare inside the Formula Node.
 You can change whether a variable is an input or an output by
right-clicking it and selecting Change to Input or Change to Output
from the shortcut menu.
 You can declare and use a variable inside the Formula Node without
relating it to an input or output wire.
 You must wire all input terminals.
 Variables can be floating-point numeric scalars, whose precision
depends on the configuration of your computer. You also can use integers and arrays of numerics for variables.
 Variables cannot have units.
Expression Nodes
Use Expression Nodes to calculate expressions, or equations, that contain
a single variable. Expression Nodes are useful when an equation has only
one variable, but is otherwise complicated.
Expression Nodes use the value you pass to the input terminal as the value
of the variable. The output terminal returns the value of the calculation.
For example, consider this simple equation:
xx 33 x5+()× +×

Chapter 21 Formul as and Equations
LabVIEW User Manual 21-4 ni.comThe block diagram in the following figure uses Numeric functions to
represent this equation.

Use an Expression Node, as shown in the following figure, to create a much
simpler block diagram.
Polymorphism in Expression Nodes
The input terminal of an Expression Node is the same data type as the control or constant you wire to it. The output terminal is the same data type as the input terminal. The data type of the input can be any non-complex scalar number, array of non-complex scalar numbers, or cluster of
non-complex scalar numbers. With arrays and clusters, the expression node applies the equation to each elemen t of an input array or cluster.
MATLAB Script Nodes
Use the MATLAB script node to create, load, and edit MATLAB scripts on
the block diagram.
You must have MATLAB installed to use the script node. If you already
have a script written in MATLAB, you can import it into the script node.
You assign script node terminals as inputs or outputs for the variables in the
script to pass values between MATLAB and LabVIEW. You can determine the function of a terminal by the way the equation is written. For example, if the script contains th e assignment statement, X=i+ 3, you can assign i
as an input terminal to control how the script node calculates X, and you can
assign X to an output terminal to retrieve the final result of the script
calculation.

Chapter 21 Formulas and Equations
© National Instruments Corpor ation 21-5 LabVIEW User ManualIf you do not already have a script written, you can place a script node on
the block diagram and create a scri pt using MATLAB syntax. LabVIEW
communicates with the scri pt server engine, which is a program that runs
the script. LabVIEW communicates and controls the script server engine
using an industry-established protocol. A script server engine is installed with MATLAB.
Because of the nature of the MATLAB script language, the script node
cannot determine the data type of term inals you created. You must assign a
LabVIEW data type to each scri pt node terminal.Table 21-1 shows
LabVIEW data types and the corresponding data types in MATLAB.
Use the Conversion functions or the String/Array/Path Conversion
functions to convert a LabVIEW data type to a data type that MATLAB supports.
Programming Suggestions for MATLAB Scripts
The following programming techniques make it easier to debug a script:
 Write the script and run it in MATLAB for testing and debugging
purposes before you import it into LabVIEW.
 Verify the data types. When you create a new input or output, make
sure the data type of the terminal is correct. You can use the Error In
and Error Out functions to keep track of this.Table 21-1. LabVIEW and MATLAB Data Types
LabVIEW Data Type MATLAB Data Type
Real
String
String
Real Vector
Real Matrix
Complex
Complex Vector
Complex Matrix

Chapter 21 Formul as and Equations
LabVIEW User Manual 21-6 ni.com Create controls and indicators for th e inputs and outputs to monitor the
values the script node passes between LabVIEW and MATLAB. This
allows you to pinpoint where a sc ript node calculates a value
incorrectly, if necessary.
 Take advantage of the error-checking parameters for debugging
information. Create an indicator for the error out terminal on a script
node so you can view error information at run time. Formula Nodes also show errors at compile time.

© National Instruments Corporation A-1 LabVIEW User ManualA
Organization of LabVIEW
This appendix describes the structure of the LabVIEW file system and the suggested locations for saving files.
Organization of the LabVIEW Directory Structure
This section describes the structure of the LabVIEW file system for
Windows, Mac OS, and UNIX. LabVIEW installs driver software for
GPIB, DAQ, VISA, IVI, Motion Control, and IMAQ hardware depending on platform availability. Refer to Chapter 3, Configuring Measurement
Hardwar e, of the LabVIEW Measureme nts Ma nual for information about
configuring your hardware.The LabVIEW directory contains the following groupings after you complete the installation.
Libraries
user.lib —Directory in which you can save controls and VIs you
create. LabVIEW displays controls on User Controls palettes and VIs
on User Libraries palettes. This directory does not change if you
upgrade or uninstall LabVIEW. Refer to the Adding VIs and Controls
to the User and Instrument Drivers Subpalettes section of Chapter 3,
LabVIEW Environment , for more information about saving files in the
user.lib directory.
vi.lib —Contains libraries of built-in VIs, which LabVIEW displays
in related groups on the Functions palette. Do not save files in the
vi.lib directory because LabVIEW overwrites these files when you
upgrade or reinstall.
instr.lib —Contains instrument drivers used to control PXI, VXI,
GPIB, serial, and computer-based instruments. When you install
National Instruments instrument drivers and place them in this
directory, LabVIEW adds them to the Instrument Drivers palette.

Appendix A Organization of LabVIEW
LabVIEW User Manual A-2 ni.comStructure and Support
menus —Contains files LabVIEW uses to configure the structure of the
Controls and Functions palettes.
resource —Contains additional support files for the LabVIEW
application. Do not save files in to this directory because LabVIEW
overwrites these files when you upgrade or reinstall.
project —Contains files that become items on the LabVIEW Tools
menu.
templates —Contains templates for common VIs.
www—Location of HTML files you can access through the Web Server.
Learning and Instruction
examples —Contains example VIs. Select Help»Find Examples to
browse or search the examples.
Documentation
manuals —Contains documentation in PDF format. This folder does
not contain the help files. Access the PDFs by selecting Help»Search
the LabVIEW Bookshelf .
help —Contains the help files. Access the LabVIEW Help by selecting
Help»VI, Function, & How-To Help .
Mac OS
In addition to the above directories, Mac users have a shared libraries folder
that contains support files for the LabVIEW application.
Suggested Location for Saving Files
LabVIEW installs the vi.lib and the resource directories for LabVIEW
system purposes only. Do not save your files in these directories.
You can save your files in the following directories:
user.lib —Any controls or VIs you want to display on the User
Controls or User Libraries palettes. Refer to the Adding VIs and
Controls to the User and Instrument Drivers Subpalettes section of
Chapter 3, LabVIEW Environment , for more information about saving
files in the user.lib directory.

Appendix A Organization of LabVIEW
© National Instruments Corporation A-3 LabVIEW User ManualNote Save subVIs in the user.lib directory only if they are portable, without
modification, across projects. Paths to VIs in user.lib are relative to the labview
directory. Paths to subVIs you save elsewhere are relative to the parent VI. Therefore,
copying a VI from user.lib to modify it for a special case does not change the path to its
subVIs located in user.lib .
instr.lib —Any instrument driver VI you want to display on the
Instrument Drivers palette.
project —VIs you use to extend La bVIEW capabilities. VIs you
store in this directory appear on the Tools menu.
www—Location of HTML files you can access through the Web Server.
help —Any VIs, PDFs, and .hlp files that you want to make available
on the Help menu.
LabVIEW Data — Any data files LabVIEW generates, such as .lvm
or .txt files.
You also can create a directory anyw here on your hard drive to store
LabVIEW files that you create. Refer to the Saving VIs section of
Chapter 7, Creating VIs and SubVIs , for more information about creating
directories.

© National Instruments Corporation B-1 LabVIEW User ManualB
Polymorphic Functions
Functions are polymorphic to varying degrees—none, some, or all of their
inputs can be polymorphic. Some function inputs accept numerics or Boolean values. Some accept numeric s or strings. Some accept not only
scalar numerics but also arrays of nume rics, clusters of numerics, arrays of
clusters of numerics, and so on. So me accept only one-dimensional arrays
although the array elements can be of any type. Some functions accept all
types of data, including complex numerics. Re fer to the Polymor phic U nits
in LabVIEW Application Note for more information about creati ng and
using polymorphic units.
For more information…
Refer to the LabVIEW Help for more information a bout polymorphic functions.
Numeric Conversion
You can convert any numeric representation to any other numeric representation. When you wire two or more numeric inputs of different representations to a function, the function usually returns output in the larger or wider format. The functions coerce the smaller representations to
the widest representation before ex ecution and LabVIEW places a coercion
dot on the terminal where the conversion takes place.Some functions, such as Divide, Sine, and Cosine, always produce floating-point output. If you wire intege rs to their inputs, these functions
convert the integers to double-preci sion, floating-point numbers before
performing the calculation.For floating-point, scalar quantities, it is usually best to use double-precision, floating-point number s. Single-precision, floating-point
numbers save little or no run time and overflow much more easily. The analysis libraries, for example, use double-precision, floating-point
numbers. You should only use extended-precision, floating-point numbers when necessary. The performance an d precision of extended-precision
arithmetic varies among th e platforms. Refer to the Undefined or

Appendix B Polymorphic Functions
LabVIEW User Manual B-2 ni.comUnexpected Data section of Chapter 6, Running and Debugging VIs ,
for more information about floating-point overflow.
For integers, it is usually best to use a 32-bit signed integer.
If you wire an output to a destin ation that has a different numeric
representation, LabVIEW converts th e data according to the following
rules:
Signed or unsigned integer to floating-point number —Conversion
is exact, except for 32-bit integers to single-precision, floating-point numbers. In this case, LabVIEW reduces the precision from 32 bits to 24 bits.
Floating-point number to signed or unsigned integer —LabVIEW
moves out-of-range values to the integer’s minimum or maximum value. Most integer objects, such as the iteration terminal of a For
Loop, round floating-point numbers. LabVIEW rounds a fractional
part of 0.5 to the nearest even in teger. For example, LabVIEW rounds
6.5 to 6 rather than 7.
Integer to integer —LabVIEW does not move out-of-range values to
the integer’s minimum or maximum value. If the source is smaller than the destination, LabVIEW extends the sign of a signed source and places zeros in the extra bits of an unsigned source. If the source is
larger than the destination, LabVIE W copies only the least significant
bits of the value.
Polymorphism for Numeric Functions
The arithmetic functions take numeric input data. With some exceptions noted in the function descriptions, the output has the same numeric representation as the input or, if th e inputs have different representations,
the output is the wider of the inputs.
The arithmetic functions work on numbe rs, arrays of numbers, clusters of
numbers, arrays of clusters of numbers, complex numbers, and so on. A formal and recursive definition of the allowable input type is as follows:
Numeric type = numeric scalar OR array [ numeric type ] OR cluster
[numeric types ]
The numeric scalars can be floating-point numbers, integers, or complex
floating-point numbers. LabVIEW does not allow you to use arrays of arrays.

Appendix B Polymorphic Functions
© National Instruments Corporation B-3 LabVIEW User ManualArrays can have any number of dimensions of any size. Clusters can have
any number of elements. The output type of functions is of the same numeric representation as the input type. For functions with one input, the functions operate on each elem ent of the array or cluster.
For functions with two inputs, you can use the following input
combinations:
Similar —Both inputs have the same structure, and the output has the
same structure as the inputs.
One scalar —One input is a numeric scalar, the other is an array or
cluster, and the output is an array or cluster.
Array of —One input is a numeric array, the other is the numeric type
itself, and the out put is an array.
For similar inputs, LabVIEW performs the function on the respective
elements of the structures. For ex ample, LabVIEW can add two arrays
element by element. Both arrays must have the same dimensionality. You
can add arrays with differing numbers of elements; the output of such an addition has the same number of elemen ts as the smallest input. Clusters
must have the same number of elemen ts, and the respective elements must
be of the same type.
You cannot use the Multiply function to do matrix multiplication. If you use
the Multiply function with two matrices, LabVIEW takes the first number in the first row of the first matrix, multiplies it by the first number in the first row of the second matrix, and so on.
For operations involving a scalar and an array or cluster, LabVIEW
performs the function on the scalar and the respective elements of the
structure. For example, LabVIEW can su btract a number from all elements
of an array, regardless of the dimensionality of the array.
For operations that involve a numeri c type and an array of that type,
LabVIEW performs the function on each array element. For example,
a graph is an array of points, and a point is a cluster of two numeric types, xand y. To offset a graph by 5 units in the x direction and 8 units in the
ydirection, you can add a point, (5, 8), to the graph.

Appendix B Polymorphic Functions
LabVIEW User Manual B-4 ni.comFigure B-1 shows the possible polymorphic combinations of the Add
function.
Figure B-1. Polymorphic Combinations of the Add Function
Polymorphism for Boolean Functions
The logical functions take either Boolean or numeric input data. If the input
is numeric, LabVIEW performs a bit-wise operation. If the input is an integer, the output has the same representation. If the input is a floating-point number, LabVIEW rounds it to a long integer, and the output is a long integer.
The logical functions work on arrays of numbers or Boolean values,
clusters of numbers or Boolean values , arrays of clusters of numbers or
Boolean values, and so on.
A formal and recursive definition of the allowable input type is as follows:
Logical type = Boolean scalar OR numeric scalar OR
array [ logical type ] OR cluster [ logical types ]
except that complex numbers and ar rays of arrays are not allowed.
Logical functions with two inputs can have the same input combinations as
the arithmetic functions. However, the logical functions have the further restriction that the base operations ca n only be between two Boolean values
or two numbers. For example, you cannot have an AND between a Boolean value and a number. Figure B-2 show s some combinations of Boolean
values for the AND function.
Similar
Scalar
Array
ClusterCluster
ClusterArray
ArrayScalar
Scalar
Scalar
Array
Scalar
ClusterArray
ClusterOne Scalar
Array of
ClusterArray of ClustersArray of Clusters

Appendix B Polymorphic Functions
© National Instruments Corporation B-5 LabVIEW User ManualFigure B-2. Boolean Combinations for the AND Function
Polymorphism for Array Functions
Most of the array functions accept n-dimensional arrays of any type.
However, the wiring diagrams in the function descriptions show numeric arrays as the default data type.
Polymorphism for String Functions
String Length, To Upper Case, To Lower Case, Reverse String, and Rotate String accept strings, clusters and arrays of strings, and arrays of clusters.
To Upper Case and To Lower Case also accept numbers, clusters of numbers, and arrays of numbers, in terpreting them as ASCII codes for
characters. Width and precision inputs must be scalar.
Polymorphism for String Conversion Functions
The Path To String and String To Path functions are poly morphic. That is,
they work on scalar values , arrays of scalars, cluste rs of scalars, arrays of
clusters of scalars, and so on. The output has the same composition as the
input but with the new type.
Polymorphism for Additional String to Number Functions
To Decimal, To Hex, To Octal, To Engineering, To Fractional, and
To Exponential accept clusters and arrays of numbers and produce clusters
and arrays of strings. From Decimal, From Hex, From Octal, and From
Similar
Boolean
Scalar
Boolean
Array
ClusterCluster
ClusterBoolean Array
Boolean ArrayBoolean Scalar
Boolean Scalar
Boolean Scalar
Boolean Array
Boolean Scalar
Boolean ClusterBoolean
Array
Boolean
ClusterOne Scalar
Array of
ClusterArray of ClustersArray of Clusters

Appendix B Polymorphic Functions
LabVIEW User Manual B-6 ni.comExponential/Fract/Sci accep t clusters and arrays of strings and produce
clusters and arrays of numbers. Width and precision inputs must be scalar.
Polymorphism for Cluster Functions
The Bundle and Unbundle functions do not show the data type for their
individual input or output terminals until you wire objects to these terminals. When you wire them, these terminals look similar to the data types of the corresponding front panel control or indicator terminals.
Polymorphism for Comparison Functions
The functions Equal?, Not Equal?, and Select take inputs of any type, as long as the inputs are the same type.
The functions Greater or Equal?, Less or Equal?, Less?, Greater?, Max &
Min, and In Range? take inputs of any type except complex, path, or refnum, as long as the inputs are the same type. You can compare numbers,
strings, Booleans, arrays of strings, clus ters of numbers, clusters of strings,
and so on. However, you cannot compare a number to a string or a string to a Boolean, and so on.
The functions that compare values to zero accept numeric scalars, clusters,
and arrays of numbers. These functions output Boolean values in the same
data structure as the input.
The Not A Number/Path/Refnum functio n accepts the same input types as
functions that compare values to zero. This function also accepts paths and
refnums. Not A Number/Path/Refnum outputs Boolean values in the same data structure as the input.
The functions Decimal Digit?, Hex Digit?, Octal Digit?, Printable?, and
White Space? accept a scalar string or nu mber input, clusters of strings or
non-complex numbers, arrays of strings or non-complex numbers, and so on. The output consists of Boolean values in the same data structure as the input.
The function Empty St ring/Path? accepts a path, a s calar string, clusters of
strings, arrays of strings, and so on. The output consists of Boolean values in the same data stru cture as the input.

Appendix B Polymorphic Functions
© National Instruments Corporation B-7 LabVIEW User ManualYou can use the Equal?, Not Equal?, Not A Number/Path/Refnum?, Empty
String/Path?, and Select functions with paths and refnums, but no other Comparison functions accept pa ths or refnums as inputs.
Comparison functions that accept arra ys and clusters normally return
Boolean arrays and clusters of the same structure. If you want the function
to return a single Boolean value, right-click the function and select
Comparison Mode»Compare Aggregates from the shortcut menu. Refer
to the Comparing Arrays and Clusters section of Appendix C, Comparison
Functions , for more information about how the function compares
aggregates.
Polymorphism for Log Functions
The Logarithmic functions take numeric input data. If the input is an integer, the output is a double-precision, floating-point number. Otherwise, the output has the same numeri c representation as the input.
These functions work on numbers, arrays of numbers, clusters of numbers,
arrays of clusters of numbers, complex numbers, and so on. A formal and recursive definition of the allowable input type is as follows:
Numeric type = numeric scalar OR array [ numeric type ] OR
cluster [ numeric types ]
except that arrays of arrays are not allowed.
Arrays can be any size and can have any number of dimensions. Clusters
can have any number of elements. The output type is of the same numeric representation as the input, and the functions operate on each element of the
cluster or array. Refer to the Polymorphism for Numeric Functions section
of this appendix for more information about two-input polymorphic functions. Allowable input type combinations for the two-input Logarithmic functions include the following:
Similar —Both inputs have the same structure, and the output has the
same structure as the inputs.
One scalar —One input is a numeric scalar, the other is a numeric
array or cluster, and the output is an array or cluster.

© National Instruments Corporation C-1 LabVIEW User ManualC
Comparison Functions
Use the Comparison functions to co mpare Boolean values, strings,
numerics, arrays, and clusters. Most Comparison functions test one input or compare two inputs and return a Boolean value.
For more information…
Refer to the LabVIEW Help for more information a bout Comparison functions.
Comparing Boolean Values
The Comparison functions treat the Bo olean value TRUE as greater than
the Boolean value FALSE.
Comparing Strings
LabVIEW compares strings based on the numerical equivalent of the
ASCII characters. For example, a (with a decimal value of 97) is greater
than A (65), which is greater than the numeral 0(48), which is greater than
the space character (32). LabVIEW comp ares characters one by one from
the beginning of the string until an inequality occurs, at which time the comparison ends. For example, LabVIEW evaluates the strings
abcd and
abef until it finds c, which is less than the value of e. The presence of a
character is greater than the absence of one. Thus, the string abcd is greater
than abc because the first string is longer.
The functions that test the category of a string character, such as the
Decimal Digit? and Printable? functions, evaluate only the first character of the string.

Appendix C Comparison Functions
LabVIEW User Manual C-2 ni.comComparing Numerics
The Comparison functions conver t numeric values to the same
representation before comparing them. Comparisons with one or two inputs having the value Not a Number (
NaN) return a value that indicates
inequality. Refer to the Undefined or Unexpected Data section of
Chapter 6, Running and Debugging VIs , for more information about the
NaN value.
Comparing Arrays and Clusters
Some Comparison functions have tw o modes for comparing arrays or
clusters of data. In Compare Aggregat es mode, if you compare two arrays
or clusters, the function returns a single Boolean value. In Compare
Elements mode, the function compar es the elements individually and
returns an array or clus ter of Boolean values.
In Compare Aggregates mode, the stri ng comparison and array comparison
operations follow exactly the same process—the Comparison function treats the string as an array of ASCII characters.
Right-click a Comparison function and select Comparison Mode»
Compare Elements or Comparison Mode»Compare Aggregates from
the shortcut menu to change the mode of the function. Some Comparison functions operate only in Compare Aggregates mode, so the shortcut menu items do not appear.
Arrays
When comparing multidimensional arra ys, each array wired to the function
must have the same number of dimensions. The Comparison functions that operate only in Compare Aggregates mode compare arrays the same way
they compare strings—one element at a time starting with the first element
until they encounter an inequality.
Compare Elements Mode
In Compare Elements mode, Comparison functions return an array of
Boolean values of the same dimensions as the input arrays. Each dimension
of the output array is the size of the sm aller of the two input arrays in that
dimension. Along each d imension such as a row, column, or page, the
functions compare corres ponding element values in each input array to
produce the corresponding Boolean value in the output array.

Appendix C Comparison Functions
© National Instruments Corporation C-3 LabVIEW User ManualCompare Aggregates Mode
In Compare Aggregates mode, comp arison functions return a single
Boolean result after comparing the el ements in an array. Comparison
functions consider elements later in th e array secondary to elements earlier
in the array. Therefore, the functi on performs the following steps to
determine the result of the comparison:
 The function compares corresponding elements in each input array,
starting at the beginning of the array.
 If the corresponding elements are not equal, the function stops—it
returns the result of this comparison.
 If the corresponding elements ar e equal, the Comparison function
processes the next pair of values, unti l it finds an inequality or reaches
the end of one of the input arrays.
 If all values in the input arrays are equal but one array has extra
elements at the end, the longer ar ray is considered greater than the
shorter one. For exampl e, a Comparison functi on considers the array
[1,2,3,2] to be greater than the array [1,2,3] .
Clusters
Clusters you compare must include the same number of elements, each
element in the clusters must be of co mpatible types, and the elements must
be in the same cluster order. For ex ample, you can compare a cluster of a
DBL and a string to a cluster of an I32 and a string.
Compare Elements Mode
In Compare Elemen ts mode, Comparison functions return a cluster of
Boolean elements, one for each correspon ding element in the input clusters.
Compare Aggregates Mode
In Compare Aggregates mode, Comparison functions return a single
Boolean value. The function comp ares corresponding elements until it
finds an inequality, which determines the result. The function considers the two clusters equal only if all elements are equal.
Use Compare Aggregates mode on cl usters if you are comparing two
records containing sorted data, wher e elements later in the cluster are
considered secondary to elements earlier in the cluster. For example, if you compare a cluster containing two strings, last name followed by first name, the function would compare the first name fields only if the last name fields
matched.

© National Instruments Corporation D-1 LabVIEW User ManualD
Technical Support and
Professional Services
Visit the following sections of the National Instruments Web site at
ni.com for technical support an d professional services:
Support —Online technical support resources include the following:
–Self-Help Resources —For immediate answ ers and solutions,
visit our extensive library of tec hnical support resources available
in English, Japanese, and Spanish at ni.com/support . These
resources are available for most pr oducts at no cost to registered
users and include software drivers and updates, a KnowledgeBase, product manuals, step-by-step troubleshooting wizards, conformity documentation, example code, tutorials and application notes, instrument drivers, discussion forums, a measurement glossary, and so on.
–Assisted Support Options —Contact NI engineers and other
measurement and automation professionals by visiting
ni.com/support . Our online system helps you define your
question and connects you to the experts by phone, discussion forum, or email.
Training —Visit
ni.com/custed for self-paced tutorials, videos, and
interactive CDs. You also can regi ster for instructor-led, hands-on
courses at locations around the world.
System Integration —If you have time constraints, limited in-house
technical resources, or other project challenges, NI Alliance Program
members can help. To learn more, ca ll your local NI office or visit
ni.com/alliance .
If you searched ni.com and could not find the answers you need, contact
your local office or NI corporate h eadquarters. Phone numbers for our
worldwide offices are listed at the front of this manual. You also can visit
the Worldwide Offices section of ni.com/niglobal to access the branch
office Web sites, which provide up-to-date contact information, support phone numbers, email addre sses, and current events.

© National Instruments Corporation G-1 LabVIEW User ManualGlossary
Symbol Prefix Value
m milli 10–3
k kilo 103
Mm e g a 1 06
Numbers/Symbols
∆ Delta; difference. ∆x denotes the value by which x changes from one index
to the next.
π Pi.
∞ Infinity.
1D One-dimensional.
2D Two-dimensional.3D Three-dimensional.
A
A Amperes.
absolute coordinates Picture coordinates relative to the origin (0, 0) of the picture indicator.
absolute path File or directory path that describes the location relative to the top level of
the file system.
AC Alternating current.
active window Window that is currently set to accept user input, usually the frontmost
window. The title bar of an active window is highlighted. Make a window active by clicking it or by selecting it from the Windows menu.

Glossary
LabVIEW User Manual G-2 ni.comapplication software Application created us ing the LabVIEW Development System and
executed in the LabVIEW Run-Time System environment.
array Ordered, indexed list of da ta elements of the same type.
artificial data
dependencyCondition in a dataflow programming language in which the arrival of data,
rather than its value, tr iggers execution of a node.
ASCII American Standard Code for Information Interchange.auto-indexing Capability of loop structures to disassemble an d assemble arrays at their
borders. As an array enters a loop with auto-indexing enabled, the loop automatically disassembles it extractin g scalars from ID arrays, ID arrays
extracted from 2D arrays, and so on. Lo ops assemble data into arrays as
data exit the loop in the reverse order.
autoscaling Ability of scales to adjust to the range of plo tted values. On graph scales,
autoscaling determines maximum and minimum scale values.
B
block diagram Pictorial description or representation of a program or algorithm. The block
diagram, consists of executable icons called nodes and wires that carry data
between the nodes. The block diagram is the source code for the VI. The
block diagram resides in the block diagram window of the VI.
Boolean controls
and indicatorsFront panel objects to manipulate and display Boolean (TRUE or FALSE)
data.
breakpoint Pause in execution used for debugging.
Breakpoint tool Tool to set a breakpoint on a VI, node, or wire.broken Run button Button th at replaces the Run button when a VI cannot run because of
errors.
broken VI VI that can not or run because of errors; sign ified by a broken arrow in the
broken Run button.
buffer Temporary storage for acquired or generated data.
byte stream file File that stores data as a sequence of ASCII characters or bytes.

Glossary
© National Instruments Corporation G-3 LabVIEW User ManualC
case One subdiagram of a Case structure.
Case structure Conditional branching control structure, that executes one of its
subdiagrams based on the input to the Case structure. It is the combination of the IF, THEN, ELSE, and CASE stat ements in control flow languages.
channel 1. Physical—a terminal or pin at which you can measure or generate an
analog or digital signal. A single physical channel can include more than one terminal, as in the case of a differen tial analog input channel or a digital
port of eight lines. A counter also can be a physical channel, although the counter name is not the name of the terminal where the counter measures
or generates the digital signal.2. Virtual—a collection of property settings that can include a name, a
physical channel, input terminal connections, the type of measurement or generation, and scaling information. You can define NI-DAQmx virtual channels outside a task (global) or inside a task (local). Configuring virtual channels is optional in Traditional NI-DAQ and earlier versions, but is integral to every measurement you take in NI-DAQmx. In Traditional
NI-DAQ, you configure virtual channels in MAX. In NI-DAQmx, you can configure virtual channels either in MAX or in your program, and you can configure channels as part of a task or separately.
3. Switch—a switch channel represen ts any connection po int on a switch.
It may be made up of one or more signal wires (commonly one, two, or four), depending on the switch topology. A virtual channel cannot be created with a switch channel. Switch channels may be used only in the
NI-DAQmx Switch functions and VIs.
channel name Unique name given to a channel configuration in the DAQ Channel
Wizard.
chart 2D display of one or more plots in which the display retains a history of
previous data, up to a maximum that you define. The chart receives the data
and updates the display point by point or array by array, retaining a certain number of past points in a buffer for display purposes. See also scope chart ,
strip chart , and sweep chart .
checkbox Small square box in a dialog box you can select or clear. Checkboxes
generally are associated with multiple options that you can set. You can
select more than one checkbox.
CIN See Code Interface Node (CIN) .

Glossary
LabVIEW User Manual G-4 ni.comclass A category containing properties, methods, and events. Classes are
arranged in a hierarchy with each cl ass inheriting the properties and
methods associated with the class in the preceding level.
cloning To make a copy of a control or another object by clicking it while pressing
the <Ctrl> key and dragging the copy to its new location.
(Mac OS) Press the <Option> key. (Sun) Press the <Meta> key. (Linux) Press
the <Alt> key.
(UNIX) You also can clone an object by clicking the object with the middle
mouse button and then dragging the copy to its new location.
cluster A set of ordered, unindexed data elements of any data type, including
numeric, Boolean, string, array, or cl uster. The elements must be all
controls or all indicators.
Code Interface
Node (CIN)CIN. Special block diagram node through which you can link text-based
code to a VI.
coercion Automatic conversion LabVIE W performs to change the numeric
representation of a data element.
coercion dot Appears on a block diagram node to alert you that you have wired data of
two different numeric data types togeth er. Also appears when you wire any
data type to a variant data type.
Color Copying tool Copies colors for pasting with the Coloring tool.Coloring tool Tool to set foreground and background colors.
compile Process that converts high-lev el code to machine-executable code.
LabVIEW compiles VIs automatically before they run for the first time
after you create or edit alteration.
conditional terminal Terminal of a While Loop that contains a Boolean value that determines if
the VI performs another iteration.
configuration utility Refers to Measurement & Automation Explorer on Windows and to the
NI-DAQ Configuration Utility on Mac OS.
connector Part of the VI or function node that contains input and output terminals.
Data pass to and from the node through a connector.

Glossary
© National Instruments Corporation G-5 LabVIEW User Manualconnector pane Region in the upper right corner of a front panel or block diagram window
that displays the VI terminal pattern. It defines the inputs and outputs you can wire to a VI.
constant See universal constant and user-defined constant .
Context Help window Window that displays basic information about LabVIEW objects when you
move the cursor over each object. Ob jects with context help information
include VIs, functions, constants, stru ctures, palettes, pr operties, methods,
events, and dialog box components.
control Front panel object for entering data to a VI interactively or to a subVI
programmatically, such as a knob, push button, or dial.
control flow Programming system in which the sequential order of instructions
determines execution order. Most text-based programming languages are control flow languages.
Controls palette Palette that contains front panel controls, in dicators, and decorative objects.
conversion Changing the type of a data element.count terminal Terminal of a For Loop whose value determines the number of times the
For Loop executes its subdiagram.
current VI VI whose front panel, block diagram, or Icon Editor is the active window.
curve in 3D Special parametric plot ( x(t), y(t), z(t)), where the parameter t runs over a
given interval.
D
D Delta; Difference. ∆x denotes the value by which x changes from one index
to the next.
DAQ See data acquisition (DAQ) .
DAQ Channel Wizard Utility that guides you through naming and configuring DAQ analog and
digital channels. Available in the (Windows) Data Neighborhood of
Measurement & Automation Explorer or (Mac OS) DAQ Channel Wizard.

Glossary
LabVIEW User Manual G-6 ni.comdata acquisition (DAQ) 1. Acquiring and measuring analog or digital electrical signals from
sensors, transducers, and test probes or fixtures.2. Generating analog or digital electrical signals.
data dependency Condition in a dataflow prog ramming language in which a node cannot
execute until it receives data from another node. See also artificial data
dependency .
data flow Programming system that consists of executable nodes that execute only
when they receive all requ ired input data and prod uce output automatically
when they execute. LabVIEW is a dataflow system.
datalog file File that stores data as a sequen ce of records of a single, arbitrary data type
that you specify when you create the file. Although all the records in a datalog file must be a single type, that type can be complex. For example, you can specify that each record is a clus ter that contains a string, a number,
and an array.
datalogging Generally, to acquire data and simultaneously store it in a disk file.
LabVIEW File I/O VIs and functions can log data.
data type Format for inform ation. In LabVIEW, acceptable data types for most VIs
and functions are numeric, array, string, Boolean, path, refnum, enumeration, waveform, and cluster.
default Preset value. Many VI inputs use a default value if you do not specify a
value.
device An instrument or cont roller you can access as a si ngle entity that controls
or monitors real-world I/O points. A device often is connected to a host computer through some type of communication network.
directory Structure for organizing files into convenient groups. A directory is like an
address that shows the location of file s. A directory can contain files or
subdirectories of files.
discrete Having discontinuous values of the independent variable, usually time.
dithering Addition of Gaussian noise to an analog input signal. By applying dithering
and then averaging the input data, you can effectively increase the resolution by another one-half bit.
DLL Dynamic Link Library.

Glossary
© National Instruments Corporation G-7 LabVIEW User Manualdrag To use the cursor on the screen to select, move, copy, or delete objects.
drive Letter in the range a–z followed by a colon ( :), to indicate a logical
disk drive.
driver Software unique to the device or t ype of device, and includes the set of
commands the device accepts.
E
empty array Array that has zero elements bu t has a defined data type. For example,
an array that has a numeric control in its data display window but has no defined values for any element is an empty numeric array.
error in Error structure that enters a VI.
error message Indication of a software or hard ware malfunction or of an unacceptable data
entry attempt.
error out The error struct ure that leaves a VI.
error structure Consists of a Boolean status indicator, a num eric code indicator, and a
string source indicator.
event Condition or state of an analog or digital signal.
Event Data Node Node attached to the left and right sides of an Event structure indicating the
available data for the event you configured that case to handle. If you configure a single case to handle multiple events, only the data that is common to all handled event types is available.
execution highlighting Debugging technique that anim ates VI execution to ill ustrate the data flow
in the VI.
external trigger V oltage pulse from an extern al source that triggers an event, such as
A/D conversion.
F
FIFO First-in-first-out memory buffer. The first data stored is the first data sent
to the acceptor.
file refnum See refnum .

Glossary
LabVIEW User Manual G-8 ni.comfilter events Allow control over how the user interface behaves.
filtering Type of signal conditi oning that allows you to filter unwanted signals from
the signal you are trying to measure.
Flat Sequence structure Program co ntrol structure that executes its subdiagrams in numeric order.
Use this structure to for ce nodes that are not data dependent to execute in
the order you want. The Flat Sequence st ructure displays a ll the frames at
once and executes the frames from left to right until the last frame executes.
flattened data Data of any type that has been converted to a string, usually for writing the
data to a file.
For Loop Iterative loop struct ure that executes its subdiagram a set number of times.
Equivalent to text-based code: For i = 0 to n – 1, do…
Formula Node Node that executes equations yo u enter as text. Especially useful for
lengthy equations too cumbersome to build in block diagram form.
frame Subdiagram of a Flat or Stacked Sequence structure.
free label Label on the front panel or block diagram that does not belong to any
other object.
front panel Interactive user interface of a VI. Front panel appearance imitates physical
instruments, such as osci lloscopes and multimeters.
function Built-in execution el ement, comparable to an operator, function, or
statement in a text-based programming language.
Functions palette Palette that contains VIs, functions, block diagram structures, and
constants.
G
General Purpose Interface BusGPIB—synonymous with HP-IB. The standard bus used for controlling
electronic instruments with a computer . Also called IEEE 488 bus because
it is defined by ANSI/IEEE Standards 488-1978, 488.1-1987, and 488.2-1992.
global variable Accesses and passes data among several VIs on a block diagram.
glyph Small picture or icon.

Glossary
© National Instruments Corporation G-9 LabVIEW User ManualGPIB See General Purpose Interface Bus .
graph 2D display of one or more plots. A graph receives and plots data as a block.
graph control Front panel object that displays data in a Cartesian plane.
group Collection of input or output channels or ports that you define. Groups can
contain analog input, analog output, digital input, digital output, or counter/timer channels. A group can contain only one type of channel. Use a task ID number to refer to a group after you create it. You can define up
to 16 groups at one time.
To erase a group, pass an empty channel array and the group number to the
group configuration VI. You do not need to erase a group to change its membership. If you reconfigure a gr oup whose task is active, LabVIEW
clears the task and returns a warning. LabVIEW does not restart the task
after you reconfigure the group.
H
handle Pointer to a pointer to a block of memory that manages reference arrays and
strings. An array of strings is a handle to a block of memory that contains handles to strings.
hex Hexadecimal. Base-16 number system.
Hierarchy window Window that graphically displa ys the hierarchy of VIs and subVIs.
I
I/O Input/Output. The transfer of data to or from a computer system involving
communications channels, operator input devices, and/or data acquisition and control interfaces.
icon Graphical representation of a node on a block diagram.
IEEE Institute for Electrical and Electronic Engineers.
indicator Front panel object that displays output, such as a graph or LED.
Inf Digital display value for a floating-point representation of infinity.

Glossary
LabVIEW User Manual G-10 ni.cominplace The condition in which two or more terminals, such as error I/O terminals
or shift registers, use the same memory space.
instrument driver VI that controls a programmable instrument.
integer Any of the natural numbers, their negatives, or zero.
intensity map/plot Method of displaying three dimensions of data on a 2D plot with the use of
color.
IP Internet protocol.
iteration terminal Terminal of a For Loop or While Loop that contains the current number of
completed iterations.
L
label Text object used to name or describe objects or regions on the front panel
or block diagram.
Labeling tool Tool to create labels and enter text into text windows.
LabVIEW Laboratory Virtual Instrument Engineering Workbench. LabVIEW is a
graphical programming language that uses icons instead of lines of text to
create programs.
LabVIEW system time The date and time that La bVIEW uses as a reference for absolute time.
LabVIEW system time is defined as 12:00 a.m., January 1, 1904, Universal time.
LED Light-emitting diode.legend Object a graph or chart owns to displays the names and plot styles of plots
on that graph or chart.
library See VI library .
listbox Box within a dialog box that list s all available choices for a command.
For example, a list of filenames on a disk.
LLB VI Library.
local variable Variable that enab les you to read or write to one of the controls or indicators
on the front panel of a VI.

Glossary
© National Instruments Corpor ation G-11 LabVIEW User ManualM
matrix A rectangular array of numbers or ma thematical elements that represent the
coefficients in a system of linear equations.
Measurement &
Automation ExplorerThe standard National Instruments hardware configuration and diagnostic
environment for Windows.
memory buffer See buffer .
menu bar Horizontal bar that lists the names of the main menus of an application.
The menu bar appears below the title ba r of a window. Each application has
a menu bar that is distinct for that application, although some menus and commands are common to many applications.
method A procedure that is executed when an object receives a message. A method
is always associated with a class.
multithreaded
applicationApplication that runs several different threads of execution independently.
On a multiple processor computer, the different threads might be running on different processors simultaneously.
N
NaN Digital display value for a floating-point representation of not a number.
Typically the result of an undefined operation, such as log(–1).
NI-DAQ Driver software incl uded with all NI measurement devices. NI-DAQ is an
extensive library of VIs and functions you can call from an application development environment (ADE), such as LabVIEW, to program all the
features of an NI measurement device , such as configuring, acquiring, and
generating data from, and sending data to the device.
NI-DAQmx The new NI-DAQ driver with ne w VIs, functions, and development tools
for controlling measurem ent devices. The advantages of NI-DAQmx over
earlier versions of NI-DAQ includ e the DAQ Assistant for configuring
measurement tasks, channels, and scal es; increased performance; expanded
functionality; and a simpler applic ation programming interface (API).
node Program execution element. Nodes ar e analogous to statements, operators,
functions, and subroutines in text-based programming languages. On a block diagram, nodes include functions, structures, and subVIs.

Glossary
LabVIEW User Manual G-12 ni.comnotify events Tell LabVIEW that a user action ha s already occurred, such as when a user
changes the value of a control.
numeric controls
and indicatorsFront panel objects to manipulate and display numeric data.
O
object Generic term for any item on the front panel or block diagram, including
controls, indicators, nodes, wi res, and imported pictures.
Object Shortcut
Menu toolTool to access a shortcut menu for an object.
OLE Object Linking and Embedding.
one-dimensional Having one dimension, as in the case of an array that has only one row
of elements.
Operating tool Tool to enter data into controls operate them.
P
palette Display of icons that represent possible options.
panel window VI window that contains the front panel, the toolbar, and the icon and
connector panes.
picture Series of graphics instructions th at a picture indicator uses to create a
picture.
picture indicator General-purpose indicator for displaying pictures th at can contain lines,
circles, text, and other types of graphic shapes.
pixel Smallest unit of a digitized picture.
pixmap Standard format for st oring pictures in which a color value represents each
pixel. A bitmap is a black and white version of a pixmap.
plot Graphical representation of an arra y of data shown either on a graph or
ac h a r t .

Glossary
© National Instruments Corpor ation G-13 LabVIEW User Manualpoint Cluster that contains two 16-bit integers that represent horizontal and
vertical coordinates.
polymorphism Ability of a node to automatically adjust to data of di fferent representation,
type, or structure.
Positioning tool Tool to move and resize objects.
PPC Program-to-progr am communication.
probe Debugging feature for checking intermediate values in a VI.
Probe tool Tool to create probes on wires.
Property Node Sets or finds the properties of a VI or application.pull-down menus Menus accessed from a menu bar. Pull–down menu items are usually
general in nature.
PXI PCI eXtensions for Instrument ation. A modular, computer-based
instrumentation platform.
R
race condition Occurs when two or more pieces of code that execute in parallel change the
value of the same shared resource, typically a global or local variable.
range Region between the limits within wh ich a quantity is measured, received,
or transmitted. Expressed by stating the lower and upper range values.
rectangle Cluster that contains four 16-bit integers. The first two values describe the
vertical and horizontal coordinates of th e top left corner. The last two values
describe the vertical and horizontal coordinates of the bottom right corner.
refnum Reference number. An identifier that LabVIEW associates with a file you
open. Use the refnum to indicate that you want a function or VI to perform
an operation on the open file.
relative coordinates Picture coordinates relative to the current location of the pen.representation Subtype of the numeric data ty pe, of which there are 8-bit, 16-bit, and
32-bit signed and unsigned integers, as well as single-, double-, and extended-precision floating-point numbers.

Glossary
LabVIEW User Manual G-14 ni.comresizing circles or
handlesCircles or handles that appear on the borders of an obj ect to indicate the
points where you can resize the object.
ring control Special num eric control that associates 32 -bit integers, starting at 0 and
increasing sequentially, with a series of text labels or graphics.
S
sample Single analog or digital input or output data point.
scalar Number that a point on a scale can represent. A single value as opposed to
an array. Scalar Booleans and clusters are explicitly sin gular instances of
their respective data types.
scale Part of graph, chart, and some numeric controls an d indicators that contains
a series of marks or points at known intervals to denote units of measure.
scope chart Numeric indicator modeled on the operation of an oscilloscope.
Scrolling tool Tool to move through windows.SCXI Signal Conditioning eXtensions for Instrumentation. The National
Instruments product line for conditional low-level signals within an external chassis near sensors, so only high-level signals in a noisy
environment are sent to DAQ devices.
sequence local Terminal to pass data between the frames of a Stacked Sequence structure.
sequence structure See Flat Sequence structure or Stacked Sequence structure .
shared library A file containi ng executable program modules th at any number of different
programs can use to perform some func tion. Shared libraries are useful
when you want to share the functionality of the VIs you build with other developers.
shift register Optional mechanism in loop struct ures to pass the value of a variable from
one iteration of a loop to a subsequent iteration. Shift registers are similar to static variables in text -based programming languages.
shortcut menu Menu accessed by right-clicking an object. Me nu items pertain to that
object specifically.
slider Moveable part of s lide controls and indicators.

Glossary
© National Instruments Corpor ation G-15 LabVIEW User ManualStacked Sequence
structureProgram control structure that execute s its subdiagrams in numeric order.
Use this structure to for ce nodes that are not data dependent to execute in
the order you want. The Stacked Sequence structure displays each frame so you see only one frame at a time and executes the frames in order until the last frame executes.
string Representation of a value as text.
string controls and
indicatorsFront panel objects to manipulate and display text.
strip chart Numeric plotting indicator modeled after a paper strip chart recorder,
which scrolls as it plots data.
structure Program control el ement, such as a Flat Sequence structure, Stacked
Sequence structure, Case struct ure, For Loop, or While Loop.
subdiagram Block diagram within the border of a structure.
subVI VI used on the block diagram of another VI. Comparable to a subroutine.
sweep chart Numeric indicator mo deled on the operation of an oscilloscope. It is similar
to a scope chart, except that a line sw eeps across the display to separate old
data from new data.
syntax Set of rules to which statements mu st conform in a particular programming
language.
T
TCP/IP Transmission Control Protocol/Internet Protocol. A standard format for
transmitting data in packets from one computer to another. The two parts of TCP/IP are TCP, which deal s with the construction of data packets, and IP,
which routes them from computer to computer.
terminal Object or region on a node through which data pass.tip strip Small yellow text banners that identify the terminal name and make it easier
to identify terminals for wiring.
tool Special cursor to pe rform specific operations.
toolbar Bar that contains command buttons to run and debug VIs.

Glossary
LabVIEW User Manual G-16 ni.comTools palette Palette that contains tools you can use to edit and debug front panel and
block diagram objects.
top-level VI VI at the top of the VI hierarchy. This term distinguishes the VI from
its subVIs.
tunnel Data entry or exit terminal on a structure.two-dimensional Having two dimensions, as in the case of an array that has several rows and
columns.
type definition Master copy of a custom object that several VIs can use.
U
UDP User Datagram Protocol.universal constant Uneditable block diagram object that emits a particular ASCII character or
standard numeric cons tant, for example, π.
URL Uniform resource locator. A logical ad dress that identifies a resource on a
server, usually on the Web. For example,
http://www.ni.com/ is the
URL for the National Instruments Web site.
user-defined constant Block diagram object that emits a value you set.
V
vector 1D array.VI See virtual instrument (VI).
VI class A reference to a virtual instrume nt that allows access to VI properties and
methods.
VI library Special file that contains a collection of related VIs for a specific use.
VI Server Mechanism fo r controlling VIs and LabVIEW applications
programmatically, locally and remotely.
virtual instrument (VI) Program in LabVIEW th at models the appearance and function of a
physical instrument.

Glossary
© National Instruments Corpor ation G-17 LabVIEW User ManualVirtual Instrument Software ArchitectureVISA. Single interface library for co ntrolling GPIB, VXI, RS-232, and
other types of instruments.
VISA See Virtual Instrument Software Architecture.
VXI VME eXtensions for Instrumentation (bus).
W
waveform Multiple voltag e readings taken at a specific sampling rate.
waveform chart Indicator that plot s data points at a certain rate.
While Loop Loop structure that repeats a s ection of code until a condition is met.
wire Data path between nodes.wire bend Point where two wire segments join.wire branch Section of wire that contains all the wire segments from junction to
junction, terminal to junction, or terminal to terminal if there are no junctions between.
wire junction Point where three or more wire segments join.wire segment Single horizontal or vertical piece of wire.
wire stubs Truncated wires that appear next to unwired terminals when you move the
Wiring tool over a VI or function node.
Wiring tool Tool to define data paths between terminals.

© National Instruments Corporation I-1 LabVIEW User ManualIndex
Numerics
2D controls and indicators, 4-9
3D controls and indicators, 4-9
3D graphs, 12-17
A
abridged menus, 3-3acquiring
digital data subset, 4-22
ActiveX, 19-1
accessing ActiveX-enabled
applications, 19-8
building subpalettes, 3-7callback VI, 19-13
clients, 19-7
constants for setting parameters, 19-11containers, 19-7
controls, 19-7
custom interfaces, 19-11design mode, 19-9
events, 19-6, 19-12
for running script nodes, 21-1functions, 19-7handling events, 19-13
indicators, 19-7
inserting objects on front panel, 19-8invoking methods. See the LabVIEW Help .
networking and, 18-1
objects, 19-6properties, 19-6
Property Browser, 19-9
Property Node, 19-10property pages, 19-9
remote front panels, 18-15
selecting custom interfaces, 19-8servers, 19-11setting parameters using constants, 19-11
setting properties, 19-9
setting properties programmatically, 19-10
VI Server, 17-1viewing properties, 19-9
VIs, 19-7
ActiveX Container
design mode, 19-9
adding
controls to libraries, 3-6directories to VI search path. See the
LabVIEW Help .
graphic to VI icon. See the LabVIEW Help .
instances to polymorphic VIs. See the
LabVIEW Help .
space to front panel, 4-9
terminals to functions, 5-10
VIs to libraries, 3-6
add-on toolsets, 1-1
on palettes, 3-8
advanced functions, 5-10aligning objects, 4-6
See also the LabVIEW Help .
animated front panel images, 18-11annotations, 4-26
editing. See the LabVIEW Help .
anti-aliased line plots, 12-2
Apple events, 18-20Application Builder. See stand-alone
applications.
application control functions, 5-10
application font, 4-27application notes, 1-3
Application object
manipulating settings, 17-3VI Server, 17-3

Index
LabVIEW User Manual I-2 ni.comapplications
building stand-alone, 7-15
distributing VIs, 7-14
building VI Server, 17-2
arithmetic. See equations.
arrays
auto-indexing loops, 8-4building with loops, 8-5
comparing, C-2
constants, 10-11controls and indicators, 4-14
data type (table), 5-3
converting clusters to and from. See the
LabVIEW Help .
creating, 10-11
default data, 6-11
deleting elements. See the LabVIEW
Help .
dimensions, 10-8
examples
1D arrays, 10-92D arrays, 10-10
functions, 5-8
global variables, 11-5indexes, 10-8
display, 10-12
inserting elements. See the LabVIEW
Help .
moving. See the LabVIEW Help .
polymorphism, B-5
replacing elements. See the LabVIEW
Help .
resizing. See the LabVIEW Help .
restrictions, 10-11
size of, 6-11
artificial data dependency, 5-27ASCII
using character set, 18-17
assigning
passwords to block diagrams, 7-14attributes
variant data, 5-23
auto-constant labels
displaying. See the LabVIEW Help .
auto-indexing
default data, 6-11
For Loops, 8-4While Loops, 8-5
automatic wire routing, 5-14
automatic wiring, 5-12automation
custom interfaces, 19-11
refnum control, 19-7
B
back panel. See block diagram.
background color of front panel objects. See
the LabVIEW Help .
binary
creating files, 14-9
file I/O, 14-3floating-point arithmetic, 6-10
bitmap files, 13-6
blink speed. See the LabVIEW Help .
block diagram, 2-2
adding space without resizing, 5-29
aligning objects, 4-6
See also the LabVIEW Help .
coercion dots, 5-15
commenting out sections, 6-9
constants, 5-5controlling source code, 7-2
copying objects. See the LabVIEW Help .
creating controls and indicators. See the
LabVIEW Help .
data flow, 5-25
data types (table), 5-2
DataSocket, 18-6deleting objects. See the LabVIEW Help .
designing, 5-28

Index
© National Instruments Corporation I-3 LabVIEW User Manualdistributing objects, 4-6
See also the LabVIEW Help .
finding terminals. See the LabVIEW Help .
fonts, 4-27functions, 5-7
inserting objects. See the LabVIEW Help .
labels, 4-26
creating. See the LabVIEW Help .
editing. See the LabVIEW Help .
resizing. See the LabVIEW Help .
nodes, 5-6
objects, 5-1
options, 3-8password protecting, 7-14
planning, 7-1
printing, 15-5removing objects. See the LabVIEW Help .
reordering objects. See the LabVIEW
Help .
replacing objects. See the LabVIEW Help .
spacing objects evenly, 4-6
See also the LabVIEW Help .
structures, 8-1
using. See the LabVIEW Help .
terminals
adding to functions, 5-10control and indicator (table), 5-2
displaying, 5-2
front panel objects and, 5-1removing from functions, 5-10
variant data, 5-22
VI Server, 17-1
wiring automatically, 5-12wiring manually, 5-11, 5-13
BMP files, 13-6
Boolean controls and indicators, 4-12
comparing values, C-1
data type (table), 5-3
using. See the LabVIEW Help .
Boolean functions, 5-7
polymorphism, B-4Breakpoint tool
debugging VIs, 6-8
highlighting breakpoints. See the
LabVIEW Help .
broken VIs
common causes, 6-3
correcting, 6-2
displaying errors, 6-2
broken wires, 5-14
buffered data
DataSocket, 18-7local variables, 11-5
building
block diagram, 5-1front panel, 4-1
instrument driver applications. See the
LabVIEW Help .
polymorphic VIs, 5-17shared libraries
distributing VIs, 7-14
stand-alone applications
distributing VIs, 7-14
subVIs, 7-4
VI Server applications, 17-2VIs, 7-1
buttons
controlling with keyboard shortcuts, 4-4front panel, 4-12
byte stream files, 14-3
C
C code
calling from LabVIEW, 20-1
calculating equations, 21-1
Call By Reference Node, 17-7Call Library Function Node, 20-1
callback VI
ActiveX, 19-13

Index
LabVIEW User Manual I-4 ni.comcallers
chain of, 6-9
displaying, 6-9
calling code from text-based programming
languages, 20-1
calling VIs dynamically, 17-7
canceling existing errors. See the LabVIEW
Help .
captions, 4-27
creating. See the LabVIEW Help .
subVI tip strips. See the LabVIEW Help .
Case structures
data types, 8-11
error handling, 6-14
selector terminals
values, 8-11
specifying a default case, 8-11
using. See the LabVIEW Help .
chain of callers
displaying, 6-9
changing palette views. See the LabVIEW
Help .
character formatting, 4-27
character set
ASCII, 18-17ISO Latin-1, 18-17
Mac OS, 18-17
using in email, 18-16
charts, 12-1
adding plots. See the LabVIEW Help .
anti-aliased line plots, 12-2
clearing. See the LabVIEW Help .
creating. See the LabVIEW Help .
customizing appearance, 12-3
customizing behavior, 12-6history length, 12-7
intensity, 12-12
options, 12-14
multiple scales, 12-2
options, 12-2
overlaid plots, 12-7scale formatting, 12-5
scrolling, 12-3
stacked plots, 12-7
types, 12-1waveform, 12-11
zooming. See the LabVIEW Help .
checking available disk space. See the
LabVIEW Help .
CIN, 20-1
classic controls and indicators, 4-9
clearing
graphs and charts. See the LabVIEW Help .
indicators. See the LabVIEW Help .
clients
ActiveX, 19-7
LabVIEW for remote front panels, 18-13
multiple for remote front panels, 18-12.NET, 19-4
Web browser for remote front
panels, 18-14
cloning objects on front panel or block
diagram. See the LabVIEW Help .
clusters
comparing, C-2
controls and indicators, 4-14
data type (table), 5-3
converting arrays to and from. See the
LabVIEW Help .
error, 6-13
components, 6-13reports. See the LabVIEW Help .
functions, 5-8
moving. See the LabVIEW Help .
order of elements
modifying, 10-14
See also the LabVIEW Help .
polymorphism, B-6
resizing. See the LabVIEW Help .
wire patterns, 10-14
Code Interface Node, 20-1
coercion dots, 5-15

Index
© National Instruments Corporation I-5 LabVIEW User Manualcolor
boxes, 4-11
creating in graphics, 13-6
high-color controls and indicators, 4-9low-color controls and indicators, 4-9
mapping, 12-13
modifying in graphics, 13-6options, 3-8
picker, 4-12
ramps
rotary controls and indicators, 4-12
coloring
background objects. See the LabVIEW
Help .
defining user colors. See the LabVIEW
Help .
foreground objects. See the LabVIEW
Help .
front panel objects, 4-5
copying colors. See the LabVIEW
Help .
system colors, 4-29
See also the LabVIEW Help .
transparent objects. See the LabVIEW
Help .
combo boxes, 4-13
command line
launching VIs. See the LabVIEW Help .
commenting out sections of a block diagram
debugging VIs, 6-9
communication, 18-1
ActiveX, 19-1
Apple events, 18-20
DataSocket, 18-2executing system-level commands, 18-20
file I/O, 14-1
functions, 7-4low-level, 18-19
Mac OS, 18-20
pipes, 18-20PPC, 18-20protocols, 18-19
System Exec VI, 18-20
TCP, 18-19
UDP, 18-19UNIX, 18-20
VI Server, 17-1
VIs, 7-4
compacting memory. See the LabVIEW Help .
comparing
arrays, C-2Boolean values, C-1
clusters, C-2
numerics, C-2strings, C-1
versions of VIs, 7-2
Comparison functions, C-1
polymorphism, B-6
computer-based instruments
configuring, 1-4
conditional terminals, 8-2
configuration file VIs
format, 14-13purpose, 14-12
reading and writing .ini files, 14-12
configuring
dynamic events. See the LabVIEW Help .
front panel, 4-3
front panel controls, 4-1front panel indicators, 4-1menus, 16-2
servers for remote front panels, 18-12
LabVIEW, 18-14Web browser, 18-14
user events. See the LabVIEW Help .
VI appearance and behavior, 16-1
connecting terminals, 5-11
connector panes, 2-4
printing, 15-3required and optional inputs and
outputs, 7-8
setting up, 7-6

Index
LabVIEW User Manual I-6 ni.comconstants, 5-5
arrays, 10-11
creating. See the LabVIEW Help .
editing. See the LabVIEW Help .
setting parameters with ActiveX, 19-11
universal, 5-5
user-defined, 5-5
contacting National Instruments, D-1
containers, 4-18
ActiveX, 19-7subpanel controls, 4-19
tab controls, 4-18
Context Help window, 3-4
creating object descriptions, 15-2
creating VI descriptions, 15-2
terminal appearance, 7-8
continuously running VIs, 6-1
control flow programming model, 5-25
control references, 17-8
creating. See the LabVIEW Help .
strictly typed, 17-9
weakly typed, 17-9
controlling
front panel objects
programmatically, 17-8
front panel objects remotely. See the
LabVIEW Help .
instruments, 7-3source code, 7-2
VIs programmatically, 17-1
VIs remotely, 18-12VIs when called as subVIs, 7-4
controls, 4-1
2D, 4-93D, 4-9
ActiveX, 19-7
adding to libraries, 3-6array, 4-14
automation refnum, 19-7
Boolean, 4-12
using. See the LabVIEW Help .captions for subVI tip strips. See the
LabVIEW Help .
changing to indicators, 4-2
classic, 4-9
cluster, 4-14color box, 4-11
color ramp, 4-12
coloring, 4-5creating on block diagram. See the
LabVIEW Help .
data type terminals, 5-1
data types (table), 5-2dialog, 4-25
using. See the LabVIEW Help .
digital, 4-11displaying optional elements, 4-2
enumerated type, 4-17
advanced, 4-18using. See the LabVIEW Help .
grouping and locking, 4-6
guidelines for using on front panel, 4-29hidden. See the LabVIEW Help .
hiding
See also the LabVIEW Help .
optional elements, 4-2
high-color, 4-9
I/O name, 4-20icons, 5-1keyboard shortcuts, 4-3
listbox, 4-15
using. See the LabVIEW Help .
low-color, 4-9
naming, 7-11
numeric, 4-10
using. See the LabVIEW Help .
on block diagram, 5-1
optional, 7-8palette, 3-1
customizing, 3-6
navigating and searching, 3-2

Index
© National Instruments Corporation I-7 LabVIEW User Manualpath, 4-14
using. See the LabVIEW Help .
printing, 15-3
refnum, 4-25
using. See the LabVIEW Help .
replacing, 4-2
required, 7-8resizing, 4-6
in relation to window size, 4-7
ring, 4-17
using. See the LabVIEW Help .
rotary, 4-10
slide, 4-10string, 4-13
display types, 10-2
tables, 10-2
style, 16-2
tab, 4-18
terminals
data types, 5-1
icons, 5-1
terminals (table), 5-2time stamp, 4-11
type definitions, 4-1
user interface design, 4-29
conventions used in this manual, xxii
converting
arrays to and from clusters. See the
LabVIEW Help .
directories to libraries. See the LabVIEW
Help .
LabVIEW data types to HTML, 10-7
libraries to directories. See the LabVIEW
Help .
numerics to strings, 10-5XML to LabVIEW data, 10-7
converting Express VIs to subVIs, 5-19
See also the LabVIEW Help .
cooperation level
setting. See the LabVIEW Help .copying
graphics, 4-5
objects on front panel or block diagram.
See the LabVIEW Help .
VIs, A-3
correcting
broken wires, 5-14
VIs, 6-2
debugging techniques, 6-3
count terminals, 8-2
auto-indexing to set, 8-4
create
.NET object. See the LabVIEW Help .
creating
arrays, 10-11
binary files, 14-9
charts. See the LabVIEW Help .
control references. See the LabVIEW
Help .
datalog files, 14-9
graphs. See the LabVIEW Help .
icons, 7-8
menus, 16-2
object descriptions, 15-2palette views, 3-6
revision history, 15-1
spreadsheet files, 14-8subpalettes. See the LabVIEW Help .
subVIs, 7-10
situations to avoid. See the LabVIEW
Help .
text files, 14-8tip strips, 15-2
user events, 9-12
user-defined constants, 5-5VI descriptions, 15-2
creating subVIs from Express VIs, 5-19
See also the LabVIEW Help .
cursors
adding to graphs. See the LabVIEW Help .

Index
LabVIEW User Manual I-8 ni.comdeleting from graphs. See the LabVIEW
Help .
graph, 12-4
custom automati on interfaces, 19-11
Custom Probe Wizard, 6-7customer
education, D-1
professional services, D-1technical support, D-1
customizing
error codes. See the LabVIEW Help .
menus, 16-2
palettes, 3-6
probes. See the LabVIEW Help .
VI appearance and behavior, 16-1
work environment, 3-5
D
DAQ
Channel Viewer, 1-4
Channel Wizard, 1-4Configuration Utility, 1-4
passing channel names, 4-20
Solution Wizard, 1-4VIs and functions, 7-3
data
emailing from VIs, 18-16
data acquisition. See DAQ.
data bubbles
displaying during execution highlighting.
See the LabVIEW Help .
data dependency, 5-26
artificial, 5-27
controlling with sequence structures, 8-14
flow-through parameters, 14-11missing, 5-27
race conditions, 11-4
data flow
observing, 6-5data types
Case structures, 8-11
control and indicator (table), 5-2
converting from XML, 10-7converting to XML, 10-7
default values, 5-2
MATLAB (table), 21-5.NET, 19-5
printing, 15-3
waveform, 12-18
dataflow programming model, 5-25
managing memory, 5-27
datalog file I/O, 14-4
creating files, 14-9
datalogging
automatic, 14-15changing log-file binding, 14-16
clearing log-file binding, 14-16
deleting records, 14-16interactive, 14-15
retrieving data programmatically, 14-17
DataSocket, 18-2
block diagram, 18-6
buffered data, 18-7
closing connections
programmatically, 18-7
controlling front panel objects. See the
LabVIEW Help .
formats for data, 18-4
front panel, 18-5
opening connections
programmatically, 18-7
protocols, 18-3
URLs, 18-3
variant data, 18-9
deallocating memory. See the LabVIEW Help .
debugging
automatic error handling, 6-12broken VIs, 6-2
creating probes. See the LabVIEW Help .
default data, 6-11

Index
© National Instruments Corporation I-9 LabVIEW User Manualdisabling debugging tools, 6-10
executable VIs. See the LabVIEW Help .
hidden wires, 5-28
loops, 6-11MATLAB scripts, 21-5
options, 3-8
probes, 6-6
creating. See the LabVIEW Help .
structures. See the LabVIEW Help .
techniques, 6-3
Breakpoint tool, 6-8
commenting out sections of a block
diagram, 6-9
error handling, 6-12execution highlighting, 6-5
Probe tool, 6-6
single-stepping, 6-5suspending execution, 6-9
tools
disabling, 6-10
undefined data, 6-10
decimal point
localized. See the LabVIEW Help .
default cases, 8-11
default data
arrays, 6-11directory, 14-19
For Loops, 6-11
default probes, 6-7default values
data types, 5-2
defining
error codes. See the LabVIEW Help .
user colors. See the LabVIEW Help .
deleting
array elements. See the LabVIEW Help .
broken wires, 5-14
datalog records, 14-16
objects on front panel or block diagram.
See the LabVIEW Help .palette views. See the LabVIEW Help .
structures. See the LabVIEW Help .
design mode
ActiveX Container, 19-9
designing
block diagram, 5-28
dialog boxes, 4-29front panel, 4-28
projects, 7-1
subVIs, 7-10
developing VIs, 7-1
guidelines, 1-2
tracking development. See
documenting VIs.
diagnostic resources, D-1
dialog boxes
controls, 4-25
using. See the LabVIEW Help .
designing, 4-29
font, 4-27indicators, 4-25
labels, 4-25
native file. See the LabVIEW Help .
remote front panels, 18-15
ring controls, 4-17
dialog functions, 5-9dials
See also numerics.
adding color ramps, 4-12front panel, 4-10
digital controls and indicators, 4-11
digital data
acquiring subset, 4-22appending, 4-24
compressing, 4-24
digital waveform data type, 12-18searching for pattern, 4-24
digital graphs
anti-aliased line plots, 12-2masking data, 12-17
digital waveform data type, 12-18

Index
LabVIEW User Manual I-10 ni.comdigital waveform graph
configuring plots. See the LabVIEW Help .
display digital data in, 12-14
dimensions
arrays, 10-8
directories
converting libraries to. See the LabVIEW
Help .
converting to libraries. See the LabVIEW
Help .
directory paths. See paths.
directory paths. See probes.
directory structure of LabVIEW
Mac OS, A-2
organization, A-1
disabling
automatic wire routing temporarily, 5-14
debugging tools, 6-10sections of a block diagram
debugging VIs, 6-9
disk space
checking. See the LabVIEW Help .
options, 3-8
disk streaming, 14-7displaying
auto-constant labels. See the LabVIEW
Help .
chain of callers, 6-9errors, 6-2front panels remotely, 18-12
hidden front panel objects. See the
LabVIEW Help .
optional elements in front panel
objects, 4-2
terminals, 5-2
tip strips. See the LabVIEW Help .
warnings, 6-2
distributing
objects on the front panel, 4-6
See also the LabVIEW Help .
VIs, 7-14distributing objects, 4-6
See also the LabVIEW Help .
DLLs
building
distributing VIs, 7-14
calling from LabVIEW, 20-1
Do Loops. See While Loops.
documentation
conventions used in this manual, xxii
directory structure, A-2guide, 1-1
introduction to this manual, xxi
online library, D-1organization of this manual, xxi
PDF library, 1-1
using this manual, xxi
using with other resources, 1-1
documenting VIs
creating object and VI descriptions, 15-2
creating tip strips, 15-2
help files, 15-4
linking to help files you create. See the
LabVIEW Help .
printing, 15-3
programmatically, 15-3
revision history, 15-1
dots
coercion, 5-15
dragging and dropping. See the LabVIEW
Help .
drawing
See also graphics.
smooth updates. See the LabVIEW Help .
drivers
instrument, D-1
LabVIEW. See the LabVIEW Help .
software, D-1
drop-through clicking. See the LabVIEW Help .
dstp DataSocket protocol, 18-3

Index
© National Instruments Corpor ation I-11 LabVIEW User Manualdynamic data type, 5-20
converting from, 5-21
See also the LabVIEW Help .
converting to, 5-22
See also the LabVIEW Help .
dynamic events
example, 9-10registering, 9-8
registering. See the LabVIEW Help .
E
editing
labels. See the LabVIEW Help .
menus, 16-2palette views, 3-6
shortcut menus of polymorphic VIs. See
the LabVIEW Help .
email
character sets, 18-16
sending from VIs, 18-16
transliteration, 18-18
embedding objects using ActiveX, 19-8
empty paths, 4-14
enhanced probes. See probes.
enumerated type controls, 4-17
advanced, 4-18
data type (table), 5-3using. See the LabVIEW Help .
equations
Expression Nodes, 21-3
Formula Nodes, 21-1integrating into LabVIEW, 21-1
MATLAB
debugging scripts, 21-5script node, 21-4
methods for using, 21-1
errors
automatically handling, 6-12
broken VIs, 6-2canceling existing. See the LabVIEW
Help .
checking for, 6-12
clusters, 6-13
components, 6-13connector pane, 7-7
reports. See the LabVIEW Help .
codes, 6-13debugging techniques, 6-3
defining custom. See the LabVIEW Help .
displaying, 6-2exception control. See the LabVIEW Help .
finding, 6-2
handling, 6-12
instrument control. See the LabVIEW
Help .
methods, 6-13
using Case structures, 6-14using While Loops, 6-14
handling automatically, 6-12
I/O, 6-13list, 6-2
normal conditions as. See the LabVIEW
Help .
notification. See the LabVIEW Help .
units incompatible, 5-23
window, 6-2
Event structures
See also events.
using, 9-2
event-driven programming. See events; Event
structures.
events
See also Event structures.
ActiveX, 19-6, 19-12
available in LabVIEW. See the LabVIEW
Help .
configuring. See the LabVIEW Help .
creating user, 9-12
defined, 9-1

Index
LabVIEW User Manual I-12 ni.comdynamic
example, 9-10
registration, 9-8
dynamically registering. See the
LabVIEW Help .
filter, 9-4
front panel locking, 9-6
generating user, 9-13handling, 9-5
handling ActiveX, 19-13
notify, 9-4registering user, 9-12
static registration, 9-7
supported, 9-1unregistering dynamic, 9-10
unregistering user, 9-13
user, 9-12
example code, D-1
examples, 1-4
arrays, 10-9
1D arrays, 10-9
2D arrays, 10-10
exception control. See the LabVIEW Help .
executable VIs
debugging. See the LabVIEW Help .
executing system-level commands, 18-20execution
flow, 5-25
controlling with sequence
structures, 8-14
highlighting
debugging VIs, 6-5
displaying data bubbles. See the
LabVIEW Help .
probing automatically. See the
LabVIEW Help .
suspending
debugging VIs, 6-9
expandable nodes, 7-9Express VIs, 5-19
expandable nodes, 7-9icons, 7-9
saving configuratio ns as VIs, 5-19
See also the LabVIEW Help .
Expression Nodes, 21-3
F
Feedback Node, 8-8
initializing, 8-10replacing with shift registers, 8-10
file DataSocket protocol, 18-3
file I/O
advanced file functions, 14-6
basic operation, 14-1
binary files, 14-3
creating, 14-9
byte stream files, 14-3
configuration file VIs
format, 14-13
purpose, 14-12
reading and writing .ini files, 14-12
datalog files, 14-4
creating, 14-9
default data directory, 14-19disk streaming, 14-7
flow-through parameters, 14-11
formats, 14-2functions, 5-9high-level VIs, 14-5
LabVIEW data format, 14-20
logging front panel data, 14-14low-level VIs and functions, 14-6
.lvm file, 14-20
networking and, 18-1paths, 14-6
reading waveforms, 14-10
refnums, 14-1selecting default directory. See the
LabVIEW Help .
spreadsheet files
creating, 14-8

Index
© National Instruments Corpor ation I-13 LabVIEW User Manualtext files, 14-2
creating, 14-8
writing waveforms, 14-10
file sharing, 7-2filter events, 9-4
finding
controls, VIs, and functions on the
palettes, 3-2
errors, 6-2
objects, text, and VIs. See the LabVIEW
Help .
fixing
VIs, 6-2
debugging techniques, 6-3
Flat Sequence structures, 8-13
See also sequence structures.
replacing with Stacked Sequence, 8-16
flattened data
variant data and, 5-23
floating-point numbers
converting, B-1overflow and underflow, 6-10
flow of execution, 5-25
flow-through parameters, 14-11fonts
application, 4-27
dialog, 4-27options, 3-8settings, 4-27
system, 4-27
For Loops
auto-indexing to set count, 8-4
controlling timing, 8-10
count terminals, 8-2default data, 6-11
iteration terminals, 8-2
shift registers, 8-6using. See the LabVIEW Help .
foreground color of front panel objects. See the
LabVIEW Help .
format string parameter, 10-4formats for file I/O
binary files, 14-3
datalog files, 14-4
text files, 14-2
formatting
strings, 10-4
specifiers, 10-4
text on front panel, 4-27
formatting string. See the LabVIEW Help .
Formula Nodes, 21-1
entering C-like statements, 21-2
entering equations, 21-2
illustration, 21-2variables, 21-3
formulas. See equations.
free labels, 4-26
creating. See the LabVIEW Help .
frequently asked questions, D-1
front panel, 2-1
adding space without resizing, 4-9
aligning objects, 4-6
See also the LabVIEW Help .
captions, 4-27
creating. See the LabVIEW Help .
changing controls to and from
indicators, 4-2
clearing indicators. See the LabVIEW
Help .
coloring objects, 4-5
background and foreground. See the
LabVIEW Help .
copying colors. See the LabVIEW
Help .
controlling objects
programmatically, 17-8
controlling objects remotely. See the
LabVIEW Help .
controlling remotely, 18-12controls, 4-9
copying objects. See the LabVIEW Help .
datalogging, 14-14

Index
LabVIEW User Manual I-14 ni.comDataSocket, 18-5
defining window size. See the LabVIEW
Help .
deleting objects. See the LabVIEW Help .
designing, 4-28displaying optional object elements, 4-2
displaying with different screen
resolutions, 4-30
distributing objects, 4-6
See also the LabVIEW Help .
finding objects. See the LabVIEW Help .
fonts, 4-27grouping and locking objects, 4-6
hidden objects. See the LabVIEW Help .
hiding
objects. See the LabVIEW Help .
optional object elements, 4-2
importing graphics, 4-5indicators, 4-9
inserting objects using ActiveX, 19-8
keyboard shortcuts, 4-3labels, 4-26
creating. See the LabVIEW Help .
editing. See the LabVIEW Help .
resizing. See the LabVIEW Help .
loading in subpanel controls, 4-19
locking with events, 9-6logging data, 14-14objects
block diagram terminals and, 5-1
options, 3-8order of objects, 4-4
overlapping objects, 4-18
planning, 7-1printing, 15-5
after the VI runs, 15-6
publishing images on Web, 18-11removing objects. See the LabVIEW Help .
reordering objects. See the LabVIEW
Help .
replacing objects, 4-2resizing objects, 4-6
in relation to window size, 4-7
retrieving data
using file I/O functions, 14-18using subVIs, 14-17
scaling objects, 4-7
setting tabbing order, 4-4spacing objects evenly, 4-6
See also the LabVIEW Help .
style of controls and indicators, 16-2subVIs, 7-10
text characteristics, 4-27
transparent objects. See the LabVIEW
Help .
type definitions, 4-1
viewing remotely, 18-12
ftp DataSocket protocol, 18-3full menus, 3-3
function key settings
overriding defaults. See the LabVIEW
Help .
functions, 5-7
adding terminals, 5-10
advanced, 5-10application control, 5-10
array, 5-8
block diagram, 5-7Boolean, 5-7cluster, 5-8
dialog, 5-9
file I/O, 5-9finding. See the LabVIEW Help .
numeric, 5-7
palette
customizing, 3-6
navigating and searching, 3-2
window titles. See the LabVIEW
Help .
polymorphic, B-1
reference. See the LabVIEW Help .
removing terminals, 5-10

Index
© National Instruments Corpor ation I-15 LabVIEW User Manualresizing. See the LabVIEW Help .
string, 5-8
time, 5-9
waveform, 5-9
G
gauges
See also numerics.
adding color ramps, 4-12
front panel, 4-10
generating
user events, 9-13
generating reports, 15-7
error clusters. See the LabVIEW Help .
getting started, 1-1
GIF files, 15-4
global variables
creating, 11-2
initializing, 11-4
memory, 11-5race conditions, 11-4
read and write, 11-3
using carefully, 11-4
GPIB
configuring, 1-4
graphics
adding to VI icon. See the LabVIEW Help .
creating colors, 13-6
dragging and dropping. See the LabVIEW
Help .
drawing shapes, 13-4entering text, 13-4
formats, 13-6
for HTML files, 15-4
graphs, 13-2
importing, 4-5
modifying colors, 13-6picture controls and indicators
data type (table), 5-4
using, 13-1pixmaps, 13-4
publishing front panels on Web, 18-11
graphs, 12-1
3D, 12-17adding plots. See the LabVIEW Help .
anti-aliased line plots, 12-2
clearing. See the LabVIEW Help .
creating. See the LabVIEW Help .
cursors, 12-4
adding. See the LabVIEW Help .
deleting. See the LabVIEW Help .
customizing appearance, 12-3
customizing behavior, 12-3digital
masking data, 12-17
graphics, 13-2intensity, 12-12
options, 12-14
multiple scales, 12-2options, 12-2
polar, 13-2
scale formatting, 12-5scaling, 12-5
scrolling, 12-3
Smith plots, 13-3smooth updates, 12-6
transmission lines, 13-3
types, 12-1waveform, 12-8
data types, 12-9
XY, 12-8
data types, 12-10, 12-11
zooming. See the LabVIEW Help .
grid, 4-6
options, 3-8
grouping
data
arrays, 10-8clusters, 10-14
strings, 10-1

Index
LabVIEW User Manual I-16 ni.comfront panel objects, 4-6
VIs in libraries, 7-12
guidelines for development, 1-2
H
handling events, 9-5help
See also Context Help window.
professional services, D-1
technical support, D-1
help files, 1-2
creating your own, 15-4
HTML, 15-4
linking to VIs. See the LabVIEW Help .
RTF, 15-4
hidden front panel objects. See the LabVIEW
Help .
hiding
front panel objects. See the LabVIEW
Help .
menu bar, 4-26
optional elements in front panel
objects, 4-2
scrollbars, 4-26
Hierarchy window, 7-11
printing, 15-3searching. See the LabVIEW Help .
highlighting execution
debugging VIs, 6-5
history
See also revision history.
charts, 12-7
options, 3-8
hot menus. See the LabVIEW Help .
HTML
See also Web.
creating documents, 18-11
generating reports, 15-7
graphics formats, 15-4help files, 15-4publishing VIs on Web, 18-10
saving documentation to, 15-3
I
I/O
controls and indicators, 4-20
data type (table), 5-4
error, 6-13file. See file I/O.
name controls and indicators, 4-20
icons, 2-4
creating, 7-8
editing, 7-8
Express VIs, 7-9printing, 15-3
subVIs, 7-9
images. See graphics.
impedance of transmission lines, 13-3
importing graphics, 4-5
incrementally running VIs, 6-5indexes of arrays, 10-8
display, 10-12
indexing loops, 8-4
For Loops, 8-4
While Loops, 8-5
indicators, 4-1
2D, 4-93D, 4-9
ActiveX, 19-7
array, 4-14Boolean, 4-12
using. See the LabVIEW Help .
changing to controls, 4-2classic, 4-9
clearing. See the LabVIEW Help .
cluster, 4-14color box, 4-11
color ramp, 4-12
coloring, 4-5

Index
© National Instruments Corpor ation I-17 LabVIEW User Manualcreating on block diagram. See the
LabVIEW Help .
data type terminals, 5-1
data types (table), 5-2
dialog, 4-25digital, 4-11
displaying optional elements, 4-2
enumerated type
advanced, 4-18
grouping and locking, 4-6
guidelines for using on front panel, 4-29hidden. See the LabVIEW Help .
hiding
See also the LabVIEW Help .
optional elements, 4-2
high-color, 4-9
I/O name, 4-20icons, 5-1
low-color, 4-9
numeric, 4-10
using. See the LabVIEW Help .
on block diagram, 5-1
optional, 7-8path, 4-14
using. See the LabVIEW Help .
printing, 15-3refnum, 4-25
using. See the LabVIEW Help .
replacing, 4-2required, 7-8resizing, 4-6
in relation to window size, 4-7
rotary, 4-10slide, 4-10
string, 4-13
display types, 10-2
style, 16-2
tab, 4-18
terminals
data types, 5-1
icons, 5-1terminals (table), 5-2
time stamp, 4-11
type definitions, 4-1
user interface design, 4-29
Inf (infinity) floating-point value
undefined data, 6-10
infinite While Loops, 8-3.ini files
reading and writing, 14-12
inserting
elements in arrays. See the LabVIEW
Help .
objects in palettes. See the LabVIEW
Help .
objects on block diagram. See the
LabVIEW Help .
installers
building, 7-15
instances of polymorphic VIs
See also polymorphic VIs.
adding. See the LabVIEW Help .
removing. See the LabVIEW Help .
selecting manually, 5-16
instances of subVIs
determining, 6-9suspending execution, 6-9
instrument drivers, D-1
LabVIEW. See the LabVIEW Help .
instrument library
adding VIs and controls, 3-6
instruments
configuring, 1-4controlling, 7-3
integers
converting, B-1overflow and underflow, 6-10
intensity charts, 12-12
color mapping, 12-13options, 12-14

Index
LabVIEW User Manual I-18 ni.comintensity graphs, 12-12
color mapping, 12-13
options, 12-14
Internet. See Web.
invalid paths, 4-14
Invoke Node, 17-4
ActiveX, 19-7
ISO Latin-1
using character set, 18-17
iteration terminals
For Loops, 8-2
While Loops, 8-3
IVI
instrument drivers. See the LabVIEW
Help .
passing logical names, 4-20
J
Joint Photographic Experts Group files, 13-6JPEG files, 13-6, 15-4
Web Server, 18-11
K
keyboard shortcuts, 4-3
controlling buttons, 4-4setting tabbing order, 4-4
knobs
See also numerics.
adding color ramps, 4-12front panel, 4-10
KnowledgeBase, D-1
L
labeling
captions, 4-27
constants, 5-5creating free labels. See the LabVIEW
Help .editing. See the LabVIEW Help .
fonts, 4-27
global variables, 11-3
local variables, 11-2resizing. See the LabVIEW Help .
units of measure, 5-23
labels
dialog box, 4-25
displaying auto-constant. See the
LabVIEW Help .
transparent. See the LabVIEW Help .
LabVIEW, 1-1
customizing, 3-8
options, 3-8
labview.ini, 3-8
launching VIs from command line. See the
LabVIEW Help .
learning and instruction directory
examples, A-2
libraries
adding VIs and controls, 3-6converting directories to. See the
LabVIEW Help .
converting to directories. See the
LabVIEW Help .
directory structure, A-1instrument, A-1
managing, 7-13
marking VIs as top-level. See the
LabVIEW Help .
organization of, A-1removing VIs from. See the LabVIEW
Help .
saving VIs as, 7-12
suggested location for, A-2
shared, 7-15
distributing VIs, 7-14
user, A-1VI, A-1
licenses for serving remote front panels, 18-12
lights on front panel, 4-12

Index
© National Instruments Corpor ation I-19 LabVIEW User Manualline plots
anti-aliased, 12-2
linking VIs to HTML or compiled help files.
See the LabVIEW Help .
listbox controls, 4-15
using. See the LabVIEW Help .
listboxes, 4-15
listing. See displaying.
local variables, 11-1
creating, 11-2
finding objects or terminals. See the
LabVIEW Help .
initializing, 11-4
memory, 11-5
race conditions, 11-4read and write, 11-3
using carefully, 11-4
localized decimal point. See the LabVIEW
Help .
localizing VIs, 7-15
location for saving files, A-2
locking
Context Help window, 3-5
front panel objects, 4-6
front panels with events, 9-6VIs. See the LabVIEW Help .
Logarithmic functions
polymorphism, B-7
log-file binding, 14-14
changing, 14-16
clearing, 14-16
logging data. See datalogging.
logging in automatically. See the LabVIEW
Help .
login prompt at startup
displaying. See the LabVIEW Help .
logos DataSocket protocol, 18-3
loops
auto-indexing, 8-4building arrays, 8-5
controlling timing, 8-10default data, 6-11
For, 8-2
infinite, 8-3
shift registers, 8-6using. See the LabVIEW Help .
While, 8-2
low-level communication, 18-19.lvm file, 14-20
M
Mac OS
using character set, 18-17
manual. See documentation.
mapping
characters, 18-18
mapping colors, 12-13
marking VIs as top-level in libraries. See the
LabVIEW Help .
masking digital data, 12-17
masking digital data,see digital data
acquiring subset, 4-22
mathematics. See equations.
MATLAB
data types, 21-5debugging scripts, 21-5
script node, 21-4
Measurement & Automation Explorer, 1-4measurement units, 5-23memory
coercion dots, 5-15
compacting. See the LabVIEW Help .
deallocating. See the LabVIEW Help .
disabling debugging tools, 6-10
global variables, 11-5local variables, 11-5
managing with dataflow programming
model, 5-27
reading from and writing to with variant
data, 5-22

Index
LabVIEW User Manual I-20 ni.commenu bar
hiding, 4-26
Menu Editor, 16-2
menus, 3-3
abridged, 3-3
combo boxes, 4-13
editing, 16-2handling selections, 16-3
hot. See the LabVIEW Help .
reference. See the LabVIEW Help .
ring controls, 4-17
shortcut, 3-4
editing for polymorphic VIs. See the
LabVIEW Help .
meters
See also numerics.
adding color ramps, 4-12front panel, 4-10
methods
ActiveX, 19-6
modules
on palettes, 3-8
most recently used menu items, 3-3
moving
arrays. See the LabVIEW Help .
clusters. See the LabVIEW Help .
objects. See the LabVIEW Help .
subpalettes. See the LabVIEW Help .
wires. See the LabVIEW Help .
MRU menu items, 3-3multicolumn listboxes. See listbox controls.
multiple threads
running. See the LabVIEW Help .
N
naming
controls, 7-11VIs, 7-13
NaN (not a number) floating-point value
undefined data, 6-10National Instruments
customer education, D-1
professional services, D-1
system integration services, D-1technical support, D-1
worldwide offices, D-1
native file dialog boxes. See the LabVIEW
Help .
navigation order. See tabbing order.
needles
adding, 4-10
.NET
assemblies, 19-2
Class Libraries, 19-2Common Language Runtime, 19-2
Constructor Node, 19-3
create object. See the LabVIEW Help .
deploying applications, 19-5
environment, 19-2
functions., 19-3Global Assembly Cache, 19-3
LabVIEW as client, 19-4
mapping data types, 19-5
.NET framework, 19-2
networking. See communication.
NI-DAQ Configuration Utility, 1-4nodes, 2-4
block diagram, 5-6
Call By Reference, 17-7execution flow, 5-26Invoke, 17-4
MATLAB script node, 21-4
Property, 17-4resizing. See the LabVIEW Help .
normal condition s as errors. See the LabVIEW
Help .
not a number (NaN) floating-point value
undefined data, 6-10
Not a Path, 4-14
notification of errors. See the LabVIEW Help .
notify events, 9-4

Index
© National Instruments Corpor ation I-21 LabVIEW User Manualnumbers
overflow and underflow, 6-10
numerics
changing representation. See the
LabVIEW Help .
comparing, C-2
controls and indicators, 4-10
using. See the LabVIEW Help .
converting, B-1
data types (table), 5-2
equations, 21-1formatting, 4-11
formulas, 21-1
functions, 5-7out-of-range, 4-18
polymorphism, B-2
strings and, 10-5units of measure, 5-23
universal constants, 5-5
writing data to spreadsheet or text
files, 10-5
O
objects
ActiveX, 19-6aligning, 4-6
See also the LabVIEW Help .
block diagram, 5-1captions on front panel, 4-27
creating. See the LabVIEW Help .
changing controls to and from
indicators, 4-2
coloring on front panel, 4-5
copying colors. See the LabVIEW
Help .
controlling programmatically, 17-8
creating descriptions, 15-2creating tip strips, 15-2
displaying optional elements, 4-2distributing, 4-6
See also the LabVIEW Help .
finding. See the LabVIEW Help .
front panel and block diagram
terminals, 5-1
grouping and locking on front panel, 4-6
hidden on front panel. See the LabVIEW
Help .
hiding on front panel
See also the LabVIEW Help .
optional elements, 4-2
inserting in palettes. See the LabVIEW
Help .
inserting on block diagram. See the
LabVIEW Help .
inserting on front panel using
ActiveX, 19-8
labeling, 4-26
creating. See the LabVIEW Help .
editing. See the LabVIEW Help .
resizing. See the LabVIEW Help .
moving. See the LabVIEW Help .
overlapping on front panel, 4-18
printing descriptions, 15-3reordering. See the LabVIEW Help .
replacing on block diagram. See the
LabVIEW Help .
replacing on front panel, 4-2resizing on front panel, 4-6
in relation to window size, 4-7
scaling on front panel, 4-7
selecting. See the LabVIEW Help .
setting tabbing order on front panel, 4-4
spacing evenly, 4-6
See also the LabVIEW Help .
transparent. See the LabVIEW Help .
wiring automatically on block
diagram, 5-12
wiring manually on block diagram, 5-11
OLE for Process Control DataSocket
protocol, 18-3

Index
LabVIEW User Manual I-22 ni.comonline technical support, D-1
opc DataSocket protocol, 18-3
opening VIs in run mode. See the LabVIEW
Help .
operators. See nodes.
options
setting, 3-8
See also the LabVIEW Help .
storing, 3-8
order of cluster elements, 10-14
modifying, 10-14
See also the LabVIEW Help .
order of execution, 5-25
controlling with sequence structures, 8-14
out-of-range numbers, 4-18
overflow of numbers, 6-10
overlaid plots, 12-7overlapping front panel objects, 4-18
overriding default function key settings. See
the LabVIEW Help .
owned labels, 4-26
editing. See the LabVIEW Help .
P
palettes
changing. See the LabVIEW Help .
color picker, 4-12
Controls, 3-1
customizing, 3-6
customizing, 3-6
Functions, 3-1
customizing, 3-6
inserting objects. See the LabVIEW Help .
modules, 3-8
navigating and searching, 3-2options, 3-8
organizing, 3-6
reference. See the LabVIEW Help .
sharing. See the LabVIEW Help .
Tools, 3-3toolsets, 3-8
updating. See the LabVIEW Help .
views, 3-7
parameter lists. See connector panes.
parameters
data types (table), 5-2
password protection, 7-14pasting
graphics, 4-5
paths
adding directories to VI search path. See
the LabVIEW Help .
controls and indicators, 4-14
data type (table), 5-3using. See the LabVIEW Help .
empty, 4-14
file I/O, 14-6invalid, 4-14
options, 3-8
remote front panels, 18-15universal constants, 5-5
patterns
terminal, 7-7
PDF library, 1-1
performance
disabling debugging tools, 6-10local and global variables, 11-4
options, 3-8
phone technical support, D-1picture controls and indicators
data type (table), 5-4
using, 13-1
picture ring controls, 4-17pictures. See graphics.
pipes communication, 18-20
pixmaps, 13-4planning projects, 7-1
plots
adding to graphs and charts. See the
LabVIEW Help .
anti-aliased, 12-2

Index
© National Instruments Corpor ation I-23 LabVIEW User Manualoverlaid, 12-7
stacked, 12-7
PNG files, 13-6, 15-4
Web Server, 18-11
polar graphs, 13-2
polymorphic
Expression Nodes, 21-4functions, B-1
units, B-1
VIs, 5-16
adding instances to. See the
LabVIEW Help .
building, 5-17
editing shortcut menus. See the
LabVIEW Help .
removing instances from. See the
LabVIEW Help .
selecting an instance manually. See
the LabVIEW Help .
pop-up menus. See shortcut menus.
Portable Network Graphics files, 13-6
porting VIs, 7-15
PPC Toolbox, 18-20preferences. See options.
previous versions
saving VIs, 7-14
printing
active window, 15-5
data from a higher level VI, 15-6documentation of VIs, 15-3front panel after the VI runs, 15-6
options, 3-8
programmatically, 15-6reports, 15-7
saving documentation
to HTML, 15-3to RTF, 15-3
to text files, 15-3
techniques, 15-7using subVIs, 15-6Probe tool
debugging VIs, 6-6
Probe tool. See probes.
probes
creating. See the LabVIEW Help .
custom, 6-7
creating. See the LabVIEW Help .
debugging VIs, 6-6
default, 6-7
Generic, 6-6indicators, 6-7
supplied, 6-7
types of, 6-6
professional services, D-1
programming examples, D-1
program-to-program communication, 18-20project design, 7-1
project planning, 7-1
properties
ActiveX, 19-6
setting, 19-9
programmatically, 19-10
viewing, 19-9
Property Node, 17-4
ActiveX, 19-10finding objects or terminals. See the
LabVIEW Help .
modifying listbox items, 4-15
protocols
DataSocket, 18-3low-level communication, 18-19
publishing VIs on Web, 18-10
pull-down menus on front panel, 4-17purging datalog records, 14-16
Q
queues
variant data, 5-22

Index
LabVIEW User Manual I-24 ni.comR
race conditions, 11-4
read globals, 11-3
read locals, 11-3
reading from files, 14-1records, 14-15
deleting, 14-16
specifying while retrieving front panel
data using subVIs, 14-18
refnums
automation, 19-7
Call By Reference Node, 17-7control, 17-8
controls and indicators, 4-25
data type (table), 5-4using. See the LabVIEW Help .
file I/O, 14-1
strictly typed, 17-7
registering
events dynamically, 9-8
events dynamically. See the LabVIEW
Help .
events statically, 9-7
user events, 9-12
user events. See the LabVIEW Help .
remotely calling VIs, 17-1
removing
broken wires, 5-14instances from polymorphic VIs. See the
LabVIEW Help .
objects on front panel or block diagram.
See the LabVIEW Help .
structures. See the LabVIEW Help .
terminals from functions, 5-10VIs from libraries. See the LabVIEW
Help .
reordering objects. See the LabVIEW Help .
repeating
blocks of code
For Loops, 8-2While Loops, 8-2
Repeat-Until Loops. See While Loops.
replacing
elements in arrays. See the LabVIEW
Help .
objects on block diagram. See the
LabVIEW Help .
objects on front panel, 4-2
text in strings. See the LabVIEW Help .
reports
generating, 15-7
error clusters. See the LabVIEW
Help .
printing, 15-7
Report Generation VIs, 15-7
resizing
arrays. See the LabVIEW Help .
clusters. See the LabVIEW Help .
Express VIs, 7-9front panel objects, 4-6
in relation to window size, 4-7
functions. See the LabVIEW Help .
labels. See the LabVIEW Help .
nodes. See the LabVIEW Help .
subVIs, 7-9tables. See the LabVIEW Help .
user-defined constants, 5-6
retrieving data
programmatically, 14-17using file I/O functions, 14-18
using subVIs, 14-17
reverting to last saved versions. See the
LabVIEW Help .
revision history
creating, 15-1
numbers, 15-2printing, 15-3
revision number
displaying in title bar. See the LabVIEW
Help .

Index
© National Instruments Corpor ation I-25 LabVIEW User Manualring controls, 4-17
using. See the LabVIEW Help .
rotary controls and indicators, 4-10
routing wires, 5-14RTF
saving documentation to, 15-3
rtm file, 16-2run mode
opening VIs in. See the LabVIEW Help .
running VIs, 6-1run-time menu file, 16-2
S
saving Express VI configurations as VIs, 5-19
See also the LabVIEW Help .
saving files
suggested location for, A-2
saving VIs
for previous versions, 7-14
individual files, 7-12libraries, 7-12
reverting to last saved versions. See the
LabVIEW Help .
scaling
front panel objects, 4-7
graphs, 12-5
schema for XML, 10-8scope chart, 12-7screen resolutions, 4-30
script nodes
MATLAB, 21-4
scrollbars
hiding, 4-26
listboxes, 4-15
scrolling
charts, 12-3
graphs, 12-3
scrolling through a chart, 12-3searching
for controls, VIs, and functions on the
palettes, 3-2
PDF versions of LabVIEW
documentation, 1-1
VI hierarchy. See the LabVIEW Help .
selecting
default instance of a polymorphic VI. See
the LabVIEW Help .
objects. See the LabVIEW Help .
tools manually. See the LabVIEW Help .
wires, 5-14
selector terminals
values, 8-11
sequence local terminals, 8-14
sequence structures
See also Flat Sequence structures;
Stacked Sequence structures
accessing values with local and global
variables, 11-4
comparing Flat to Stacked, 8-13controlling execution order, 5-26
overusing, 8-15
using. See the LabVIEW Help .
servers
ActiveX, 19-11
configuring for remote front panels, 18-12
LabVIEW, 18-14Web browser, 18-14
setting
cooperation level. See the LabVIEW Help .
work environment options, 3-8
See also the LabVIEW Help .
shared libraries
building, 7-15
distributing VIs, 7-14
calling from LabVIEW, 20-1
sharing
files, 7-2
live data programmatically, 18-6

Index
LabVIEW User Manual I-26 ni.comlive data with other VIs and
applications, 18-2
palette views. See the LabVIEW Help .
VIs, 7-14
shift registers, 8-6
replacing with tunnels, 8-7
shortcut menus
in run mode, 3-4
shortened menus, 3-3
simple menus, 3-3
single-stepping
debugging VIs, 6-5
sink terminals. See indicators.
sizing. See resizing.
slide controls and indicators, 4-10
See also numerics.
sliders
adding, 4-10
smart probes. See probes.
Smith plots, 13-3smooth updates
during drawing. See the LabVIEW Help .
for graphs, 12-6
SMTP
character sets, 18-16
transliteration, 18-18using VIs, 18-16
snap-to grid, 4-6
software drivers, D-1sound, 13-7source code control, 7-2
source code. See block diagram.
source terminals. See controls.
space
adding to front panel or block
diagram, 4-9
spacing objects evenly, 4-6
See also the LabVIEW Help .
speed of execution
controlling, 8-10splitting
strings. See the LabVIEW Help .
spreadsheet files
creating, 14-8writing numeric data to, 10-5
stacked plots, 12-7
Stacked Sequence structures, 8-13
See also sequence structures.
replacing with Flat Sequence, 8-16
stacks
variant data, 5-22
stand-alone applications
building, 7-15
distributing VIs, 7-14
.NET, 19-5
statements. See nodes.
static events
registering, 9-7
static front panel images, 18-11stepping through VIs
debugging VIs, 6-5
storing
work environment options, 3-8
stretching. See resizing.
strict type checking, 5-23strictly typed refnums
control, 17-9
VI, 17-7
strings, 10-1
combo boxes, 4-13
comparing, C-1
controls and indicators, 4-13
data type (table), 5-3
display types, 10-2
editing programmatically, 10-3formatting, 10-4
specifiers, 10-4
functions, 5-8global variables, 11-5
numerics to, 10-5

Index
© National Instruments Corpor ation I-27 LabVIEW User Manualpolymorphism, B-5
replacing text. See the LabVIEW Help .
splitting. See the LabVIEW Help .
tables, 10-2universal constants, 5-5
using format strings. See the LabVIEW
Help .
strip chart, 12-7structure and support directory
menus, A-2
project, A-2resource, A-2
templates, A-2
WWW, A-2
structure of LabVIE W directories, A-1
structures, 8-1
Case, 8-11debugging. See the LabVIEW Help .
deleting. See the LabVIEW Help .
Event, 9-2Flat Sequence, 8-13
For Loops, 8-2
global variables, 11-2local variables, 11-1
on block diagram, 2-4
removing. See the LabVIEW Help .
Stacked Sequence, 8-13
using. See the LabVIEW Help .
While Loops, 8-2wiring. See the LabVIEW Help .
style of controls and indicators, 16-2
subpalettes
building ActiveX, 3-7creating. See the LabVIEW Help .
moving. See the LabVIEW Help .
organizing, 3-6
subpanel controls, 4-19
subroutines. See subVIs.subVIs
building, 7-4
control captions for tip strips. See the
LabVIEW Help .
controlling behavior, 7-4copying, A-3
creating, 7-10
situations to avoid. See the LabVIEW
Help .
creating from Express VIs, 5-19
See also the LabVIEW Help .
designing, 7-10determining current instance, 6-9
displaying chain of callers, 6-9
displaying names when placed. See the
LabVIEW Help .
expandable nodes, 7-9
front panel, 7-10
hierarchy, 7-11icons, 7-9
polymorphic VIs, 5-16
printing data from a higher level VI, 15-6remote front panels, 18-15
retrieving front panel data, 14-17
suspending execution, 6-9
supplied probes, 6-7
support
technical, D-1
suspending execution
debugging VIs, 6-9
sweep chart, 12-7
switches on front panel, 4-12symbolic colors. See system colors.
system colors, 4-29
See also the LabVIEW Help .
System Exec VI, 18-20
system font, 4-27
system integration services, D-1system-level commands, 18-20

Index
LabVIEW User Manual I-28 ni.comT
tab controls, 4-18
using. See the LabVIEW Help .
tabbing order
setting, 4-4
tabbing through front panel objects, 4-4
tables, 4-16, 10-2
using. See the LabVIEW Help .
tanks
See also numerics.
slide controls and indicators, 4-10
TCP, 18-19
VI Server, 17-1
technical support, D-1telephone technical support, D-1
templates
creating. See the LabVIEW Help .
using. See the LabVIEW Help .
terminals, 2-3
adding to functions, 5-10block diagram, 5-1
coercion dots, 5-15
conditional, 8-2constants, 5-5
Context Help window appearance, 7-8
control and indicator (table), 5-2count, 8-2
auto-indexing to set, 8-4
displaying, 5-2
displaying tip strips. See the LabVIEW
Help .
finding. See the LabVIEW Help .
front panel objects and, 5-1
iteration
For Loops, 8-2
While Loops, 8-3
optional, 7-8patterns, 7-7
printing, 15-3
recommended, 7-8removing from functions, 5-10
required, 7-8
selector, 8-11
sequence local, 8-14wiring, 5-11
text
dragging and dropping. See the LabVIEW
Help .
entry boxes, 4-13
finding. See the LabVIEW Help .
formatting, 4-27ring controls, 4-17
text files
creating, 14-8file I/O, 14-2
saving documentation to, 15-3
writing numeric data to, 10-5
thermometers
See also numerics.
slide controls and indicators, 4-10
threads
running multiple. See the LabVIEW Help .
time functions, 5-9time stamp
See also numerics.
controls and indicators, 4-11data types (table), 5-3
timing
controlling, 8-10
tip strips
control captions. See the LabVIEW Help .
creating, 15-2
displaying over terminals. See the
LabVIEW Help .
displaying. See the LabVIEW Help .
toolbar, 3-4
tools
palette, 3-3
selecting manually. See the LabVIEW
Help .

Index
© National Instruments Corpor ation I-29 LabVIEW User Manualtoolsets, 1-1
on palettes, 3-8
tracking development. See documenting VIs.
training
customer, D-1
transliteration
emailing, 18-18
Transmission Control Protocol, 18-19
transmission lines, 13-3
transparent
labels. See the LabVIEW Help .
objects. See the LabVIEW Help .
tree controls, 4-15
using. See the LabVIEW Help .
troubleshooting resources, D-1
troubleshooting. See debugging.
tunnels, 8-1
input and output, 8-12
replacing with shift registers, 8-8
type completion, 4-15
listboxes, 4-15
type controls
enumerated, 4-17
advanced, 4-18
type definitions, 4-1
U
UDP, 18-19
undefined data
arrays, 6-11checking for, 6-10
Inf (infinity), 6-10
NaN (not a number), 6-10preventing, 6-11
underflow of numbers, 6-10
undo options, 3-8unexpected data. See default data; undefined
data.
ungrouping front panel objects, 4-6
unit labels, 5-23universal constants, 5-5
unlocking
Context Help window, 3-5
front panel objects, 4-6VIs. See the LabVIEW Help .
unregistering
dynamic events, 9-10user events, 9-13
updating palettes. See the LabVIEW Help .
upgrading VIs, 7-14URLs for DataSocket, 18-3
User Datagram Protocol, 18-19
user events
See also the LabVIEW Help .
creating, 9-12
example, 9-14generating, 9-13
registering. See the LabVIEW Help .
unregistering, 9-13
user interface. See front panel.
user library
adding VIs and controls, 3-6
user probes. See probes.
user-defined colors. See the LabVIEW Help .
user-defined constants, 5-5user-defined error codes. See the LabVIEW
Help .
using format strings. See the LabVIEW Help .
V
variables
global
creating, 11-2
initializing, 11-4memory, 11-5
race conditions, 11-4
read and write, 11-3using carefully, 11-4

Index
LabVIEW User Manual I-30 ni.comlocal, 11-1
creating, 11-2
initializing, 11-4
memory, 11-5race conditions, 11-4
read and write, 11-3
using carefully, 11-4
variant data
ActiveX, 19-7
attributes, 5-23controls and indicators
data type (table), 5-4
converting to, 5-22DataSocket, 18-9
editing attributes. See the LabVIEW Help .
flattened data and, 5-23handling, 5-22
versions
comparing, 7-2reverting to last saved. See the LabVIEW
Help .
saving VIs for previous, 7-14
VI object
manipulating settings, 17-3
VI Server, 17-3
VI search path
editing. See the LabVIEW Help .
VI Server
Application object, 17-3building applications, 17-2Call By Reference Node, 17-7
calling other instances of LabVIEW on
Web, 17-1
calling VIs remotely, 17-1capabilities, 17-1
controlling front panel objects, 17-8
Invoke Node, 17-4manipulating VI settings, 17-3
networking and, 18-1
Property Node, 17-4remote applications, 17-8strictly typed VI refnums, 17-7
VI object, 17-3
viewing. See displaying.
views, 3-7
changing. See the LabVIEW Help .
creating, 3-6
deleting. See the LabVIEW Help .
editing, 3-6
sharing. See the LabVIEW Help .
virtual instruments. See VIs.
VIs, 2-1
adding to libraries, 3-6
broken, 6-2building, 7-1
calling dynamically, 17-7
calling remotely, 17-1comparing versions, 7-2
configuring appearance and
behavior, 16-1
controlling on Web, 18-10controlling programmatically, 17-1
controlling when called as subVIs, 7-4
copying, A-3correcting, 6-2
creating descriptions, 15-2
debugging techniques, 6-3developing, 7-1
distributing, 7-14
documenting, 15-1dragging and dropping. See the LabVIEW
Help .
error handling, 6-12
examples, 1-4
executable
debugging. See the LabVIEW Help .
finding. See the LabVIEW Help .
hierarchy, 7-11launching from command line. See the
LabVIEW Help .
libraries, 7-12
loading dynamically, 17-7

Index
© National Instruments Corpor ation I-31 LabVIEW User Manuallocalizing, 7-15
locking. See the LabVIEW Help .
marking as top-level in libraries. See the
LabVIEW Help .
naming, 7-13opening in run mode. See the LabVIEW
Help .
polymorphic, 5-16
porting, 7-15printing, 15-5
publishing on Web, 18-10
reference. See the LabVIEW Help .
removing from libraries. See the
LabVIEW Help .
reverting to last saved versions. See the
LabVIEW Help .
running, 6-1saving, 7-12
sharing, 7-14
strictly typed refnums, 17-7unlocking. See the LabVIEW Help .
upgrading, 7-14
VISA
passing resource names, 4-20
VXI
configuring, 1-4VIs, 1-3
W
warnings
button, 6-2displaying, 6-2
displaying by default. See the LabVIEW
Help .
waveform
charts, 12-11
controls and indicators
data type (table), 5-4
data type, 12-18
functions, 5-9graphs, 12-8
data types, 12-9
graphics, 13-3
waveforms
reading from files, 14-10
writing to files, 14-10
weakly typed control references, 17-9Web
calling other instances of LabVIEW, 17-1
controlling VIs, 18-12creating HTML documents, 18-11
professional services, D-1
publishing VIs, 18-10technical support, D-1
viewing front panels, 18-12
Web Publishing Tool, 18-11Web Server
clients for remote front panels
LabVIEW, 18-13multiple, 18-12
Web browser, 18-14
controlling VIs, 18-12enabling, 18-10
licenses for serving remote front
panels, 18-12
options, 18-10viewing front panels, 18-12
While Loops
auto-indexing, 8-5conditional terminals, 8-2controlling timing, 8-10
error handling, 6-14
infinite, 8-3iteration terminals, 8-3
shift registers, 8-6
using. See the LabVIEW Help .
window size
defining. See the LabVIEW Help .
window titles in Functions palette. See the
LabVIEW Help .

Index
LabVIEW User Manual I-32 ni.comwires, 2-4
broken, 5-14
moving. See the LabVIEW Help .
routing, 5-14selecting, 5-14
wiring
automatically, 5-12guides. See the LabVIEW Help .
manually, 5-11, 5-13
structures. See the LabVIEW Help .
techniques, 5-28
tool, 5-13
units, 5-23
wiring manually on block diagram, 5-13
work environment options
setting, 3-8
See also the LabVIEW Help .
storing, 3-8
worldwide technical support, D-1write globals, 11-3
write locals, 11-3
writing to files, 14-1X
XML
converting data types to, 10-7
converting from, 10-7
example, 10-5schema, 10-8
x-scales
multiple, 12-2
XY graphs, 12-8
data types, 12-10, 12-11
Y
y-scales
multiple, 12-2
Z
zooming on graphs and charts. See the
LabVIEW Help .

Similar Posts