You are previewing LabVIEW for Everyone: Graphical Programming Made Easy and Fun, Third Edition.
O'Reilly logo
LabVIEW for Everyone: Graphical Programming Made Easy and Fun, Third Edition

Book Description

The #1 Step-by-Step Guide to LabVIEW—Now Completely Updated for LabVIEW 8!

Master LabVIEW 8 with the industry’s friendliest, most intuitive tutorial: LabVIEW for Everyone, Third Edition. Top LabVIEW experts Jeffrey Travis and Jim Kring teach LabVIEW the easy way: through carefully explained, step-by-step examples that give you reusable code for your own projects!

This brand-new Third Edition has been fully revamped and expanded to reflect new features and techniques introduced in LabVIEW 8. You’ll find two new chapters, plus dozens of new topics, including Project Explorer, AutoTool, XML, event-driven programming, error handling, regular expressions, polymorphic VIs, timed structures, advanced reporting, and much more. Certified LabVIEW Developer (CLD) candidates will find callouts linking to key objectives on NI’s newest exam, making this book a more valuable study tool than ever.

  • Not just what to do: why to do it!

  • Use LabVIEW to build your own virtual workbench

  • Master LabVIEW’s foundations: wiring, creating, editing, and debugging VIs; using controls and indicators; working with data structures; and much more

  • Learn the “art” and best practices of effective LabVIEW development

  • NEW: Streamline development with LabVIEW Express VIs

  • NEW: Acquire data with NI-DAQmx and the LabVIEW DAQmx VIs

  • NEW: Discover design patterns for error handling, control structures, state machines, queued messaging, and more

  • NEW: Create sophisticated user interfaces with tree and tab controls, drag and drop, subpanels, and more

  • Whatever your application, whatever your role, whether you’ve used LabVIEW or not, LabVIEW for Everyone, Third Edition is the fastest, easiest way to get the results you’re after!

    Table of Contents

    1. Copyright
      1. Dedication
    2. About the Authors
    3. Preface
      1. Beyond the Lab
        1. The Expanding World of Virtual Instrumentation
        2. The Results
      2. Objectives of This Book
        1. Fundamentals
        2. Advanced Topics
      3. A Note about Paths
      4. What’s New in the Third Edition
      5. LabVIEW Installation Instructions
      6. Purchasing LabVIEW
    4. Acknowledgments
    5. 1. What in the World Is LabVIEW?
      1. Overview
      2. Key Terms
      3. What Exactly Is LabVIEW, and What Can It Do for Me?
        1. Dataflow and the Graphical Programming Language
        2. How Does LabVIEW Work?
      4. Demonstration Examples
        1. NI Example Finder
        2. Examples on the CD
        3. Activity 1-1: Temperature System Demo
          1. Tweaking Values
          2. Examine the Block Diagram
          3. Hierarchy
          4. Icon and Connector
        4. Activity 1-2: Frequency Response Example
      5. Wrap It Up!
      6. Additional Activities
        1. Activity 1-3: More Neat Examples
    6. 2. Virtual Instrumentation: Hooking Your Computer Up to the Real World
      1. Overview
      2. Key Terms
      3. Using LabVIEW in the Real World
      4. The Evolution of LabVIEW
      5. What Is Data Acquisition?
      6. What Is GPIB?
      7. Communication Using the Serial Port
      8. Real-World Applications: Why We Analyze
      9. A Little Bit About PXI and VXI
      10. Connectivity
        1. Internet Connectivity
        2. Networking
        3. ActiveX and .NET
        4. Shared Libraries, DLLs, and CINs
        5. Other Communication Mechanisms
      11. LabVIEW Add-on Toolkits
      12. LabVIEW Real-Time, FPGA, PDA, and Embedded
      13. Wrap It Up!
    7. 3. The LabVIEW Environment
      1. Overview
      2. Key Terms
      3. Front Panels
        1. Controls and Indicators
      4. Block Diagrams
        1. View Terminals as Icons
          1. Nodes
          2. Wires
          3. Dataflow Programming—Going with the Flow
      5. LabVIEW Projects
        1. Project Explorer Window
        2. Project Explorer Toolbars
        3. Adding Items to Your Project
        4. Project Folders
        5. Removing Items from a Project
        6. Building Applications, Installers, DLLs, Source Distributions, and Zip Files
        7. More Project Features
      6. SubVIs, the Icon, and the Connector
      7. Activity 3-1: Getting Started
      8. Alignment Grid
      9. Pull-Down Menus
        1. File Menu
        2. Edit Menu
        3. View Menu
        4. Project Menu
        5. Operate Menu
        6. Tools Menu
        7. Window Menu
        8. Help Menu
      10. Floating Palettes
        1. Controls and Functions Palettes
          1. Palette Item Categories
          2. Showing and Hiding Palette Categories
          3. Reordering Palette Categories
          4. Palette View Formats
          5. The Thumbtack: “Pinning” Down Palettes
          6. Resizing (and Restoring) Palettes
        2. Customizing the Palettes
          1. Favorites
          2. Editing the Palette
          3. User Libraries
        3. Tools Palette
        4. Automatic Tool Selection
      11. The Toolbar
        1. Run Mode and Edit Mode
      12. Pop-Up Menus
        1. Pop-Up Menu Features to Keep in Mind
        2. Pop-Up Features Described
          1. Visible Items
          2. Find Terminal and Find Control/Indicator
          3. Change to Control and Change to Indicator
          4. Description and Tip
          5. Create
          6. Replace
          7. Data Operations
          8. Advanced
          9. Properties
      13. Help!
        1. The Context Help Window
        2. Online Help
      14. Express VIs
      15. Displaying SubVIs as Expandable Nodes
      16. A Word About SubVIs
      17. Activity 3-2: Front Panel and Block Diagram Basics
      18. Wrap It Up!
    8. 4. LabVIEW Foundations
      1. Overview
      2. Key Terms
      3. Creating VIs: It’s Your Turn Now!
        1. Placing Items on the Front Panel
        2. Labeling Items
          1. Owned “Object” Labels
          2. Captions
          3. Creating Free Labels
        3. Changing Font, Style, Size, and Color of Text
        4. Placing Items on the Block Diagram
        5. Editing Techniques
          1. Selecting Objects
          2. Moving Objects
          3. Duplicating Objects
          4. Deleting Objects
          5. Resizing Objects
          6. Moving, Grouping, and Locking Objects
          7. Coloring Objects
          8. Matching Colors
          9. Transparency
          10. Object Alignment and Distribution
      4. Activity 4-1: Editing Practice
      5. Basic Controls and Indicators and the Fun Stuff They Do
        1. Numeric Controls and Indicators
          1. Representation
          2. Format and Precision
          3. Numeric Range Checking
          4. Rings
        2. Booleans
          1. Labeled Buttons
          2. Mechanical Action
          3. Customizing Your Boolean with Imported Pictures
        3. Strings
          1. Combo Box Control
        4. Paths
        5. Decorations
        6. Custom Controls and Indicators
        7. Summary of Basic Controls and Indicators
      6. Wiring Up
        1. Automatic Wire Routing
        2. Automatic Wiring
        3. Wiring Complicated Objects
        4. Bad Wires
        5. Wiring Tips
        6. Wire Stretching
        7. Selecting and Deleting Wires
        8. Moving Wires
        9. Wiring to Off-Screen Areas
        10. Adding Constants, Controls, and Indicators Automatically
      7. Running Your VI
        1. Activity 4-2: Building a Thermometer
      8. Useful Tips
        1. Keyboard Shortcuts
        2. Examples
        3. Changing Tools
        4. Changing the Direction of a Wire
        5. Canceling a Wiring Operation
        6. Removing the Last Tack Point
        7. Inserting an Object into Existing Wires
        8. Moving an Object Precisely
        9. Incrementing Digital Controls More Quickly
        10. Entering Items in a Ring Control
        11. Cloning an Object
        12. Moving an Object in Only One Direction
        13. Matching the Color
        14. Replacing Objects
        15. Making Space
        16. Configuring Your Preferences
      9. Wrap It Up!
      10. Additional Activities
        1. Activity 4-3: Comparison Practice
        2. Activity 4-4: Very Simple Calculator
    9. 5. Yet More Foundations
      1. Overview
      2. Key Terms
      3. Loading and Saving VIs
        1. Save Options
        2. Revert
        3. LLBs
          1. How to Use LLBs
          2. The LLB Manager
        4. Save and Load Dialogs
        5. Filter Rings
      4. Debugging Techniques
        1. Fixing a Broken VI
        2. Warnings
        3. Most Common Mistakes
        4. Single-Stepping Through a VI
        5. Execution Highlighting
        6. Setting Breakpoints
        7. Suspending Execution
        8. Using the Probe
      5. Activity 5-1: Debugging Challenge
      6. Creating SubVIs
        1. Creating a SubVI from a VI
          1. Designing the Icon
          2. Assigning the Connector
        2. Creating SubVIs from a Block Diagram Selection
        3. SubVI Help: Recommended, Required, and Optional Inputs
        4. Relink to SubVI: Changing Connector Panes of SubVIs
      7. Documenting Your Work
        1. Creating Descriptions and Tips for Individual Objects
        2. Documenting VIs in the VI Properties
      8. A Little About Printing
      9. Activity 5-2: Creating SubVIs—Practice Makes Perfect
      10. Wrap It Up!
      11. Additional Activities
        1. Activity 5-3: Find the Average
        2. Activity 5-4: Divide by Zero (Who Says You Can’t?)
    10. 6. Controlling Program Execution with Structures
      1. Overview
      2. Key Terms
      3. Two Loops
        1. The For Loop
        2. The While Loop
        3. Placing Objects Inside Structures
          1. Auto Grow
          2. Removing Structures: Don’t Just Delete Them
          3. Terminals Inside Loops and Other Behavioral Issues
        4. Activity 6-1: Counting the Loops
          1. The Coercion Dot
      4. Shift Registers
        1. Activity 6-2: Shift Register Example
        2. Why You Need Shift Registers
        3. Initializing Shift Registers
        4. The Feedback Node
        5. Converting Tunnels to Shift Registers (and Vice Versa)
      5. The Case Structure
        1. Wiring Inputs and Outputs
        2. Adding Cases
      6. Dialogs
        1. Express Dialogs: Display Message and Prompt User
        2. Standard Dialogs: One, Two, and Three Button Dialogs
        3. Activity 6-3: Square Roots
          1. Square Root VI Logic
        4. The Select Function
      7. The Sequence Structure—Flat or Stacked
        1. Stacked Sequence Structures and Sequence Locals Are Evil
      8. Timing
        1. Activity 6-4: Matching Numbers
        2. Express Timing Functions
      9. The Timed Structures
        1. The Timed Loop
        2. The Timed Sequence
        3. The Timed Structure VIs
      10. The Formula Node
        1. Activity 6-5: Formula Fun
          1. VI Logic
      11. The Expression Node
      12. The While Loop + Case Structure Combination
        1. The Main Loop
        2. Handling Multiple Work Items in a While Loop
        3. Adding Efficiency: Wait on Front Panel Activity
      13. Wrap It Up!
      14. Additional Activities
        1. Activity 6-6: Equations
        2. Activity 6-7: Calculator
        3. Activity 6-8: Combination For/While Loop Challenge
        4. Activity 6-9: Dialog Display
    11. 7. LabVIEW’s Composite Data: Arrays and Clusters
      1. Overview
      2. Key Terms
      3. What Are Arrays?
      4. Creating Array Controls and Indicators
        1. Array Scrollbars
      5. Using Auto-Indexing
        1. Using Auto-Indexing to Set the For Loop Count
      6. Two-Dimensional Arrays
        1. Creating Two-Dimensional Arrays
      7. Activity 7-1: Building Arrays with Auto-Indexing
      8. Functions for Manipulating Arrays
      9. Activity 7-2: Array Acrobatics
      10. Polymorphism
      11. Activity 7-3: Polymorphism
      12. Compound Arithmetic
        1. A Word About Boolean Arithmetic
      13. All About Clusters
        1. Creating Cluster Controls and Indicators
        2. Cluster Order
        3. Using Clusters to Pass Data to and from SubVIs
        4. Replacing a Cluster Element
        5. Unbundling Your Clusters
        6. Activity 7-4: Cluster Practice
        7. Bundling and Unbundling by Name
        8. Activity 7-5: More Fun with Clusters
      14. Interchangeable Arrays and Clusters
        1. Comparison Function Modes for Arrays and Clusters
      15. Error Clusters and Error-Handling Functions
        1. Error Cluster Datatype
        2. Propagating Errors: Error Dataflow
        3. Generating and Reacting to Errors in SubVIs
          1. Error Case Structure
          2. Merge Errors
        4. Handling Errors in SubVIs
        5. Generating Errors in SubVIs
        6. Giving Up: Displaying Error Messages to the User
        7. Extra Tips for Error Handling
          1. Use the Explain Error Dialog
          2. Go with the Dataflow: Use Error In and Error Out Terminals
          3. Define Your Own Errors: User-Defined Error Codes
          4. Don’t Get Stuck in a Loop: Test Error Status in Loops
          5. Use Shift Registers to Pass Errors Through Loops
      16. Wrap It Up!
      17. Additional Activities
        1. Activity 7-6: Reversing the Order Challenge
        2. Activity 7-7: Taking a Subset
        3. Activity 7-8: Dice! Challenge
        4. Activity 7-9: Multiplying Array Elements
    12. 8. LabVIEW’s Exciting Visual Displays: Charts and Graphs
      1. Overview
      2. Key Terms
      3. Waveform Charts
        1. Chart Update Modes
        2. Single-Plot Charts
        3. Wiring a Multiple-Plot Chart
        4. Single-Plot Versus Multi-Plot Data Types: A Trick for Remembering
        5. Show the Digital Display?
        6. The X Scrollbar
        7. Clearing the Chart
        8. Stacked and Overlaid Plots
        9. Multiple Y Scales
        10. Chart History Length
      4. Activity 8-1: Temperature Monitor
        1. Using Mechanical Action of Boolean Switches
        2. Adding Timing
      5. Graphs
        1. Single-Plot Waveform Graphs
        2. Multiple-Plot Waveform Graphs
      6. Activity 8-2: Graphing a Sine on a Waveform Graph
        1. Multiple-Plot Graphs
      7. XY Graphs
        1. Showing Optional Planes in an XY Graph
      8. Chart and Graph Components
        1. Playing with the Scales
          1. X and Y Scale Menus
          2. The Scale Legend
        2. The Plot Legend
      9. Activity 8-3: Using an XY Graph to Plot a Circle
        1. Using the Graph Palette
        2. Graph Cursors
        3. Graph Annotations
      10. Activity 8-4: Temperature Analysis
      11. Intensity Charts and Graphs—Color as a Third Dimension
        1. Activity 8-5: The Intensity Graph
        2. 3D Graphs
      12. Time Stamps, Waveforms, and Dynamic Data
        1. Time Stamp
          1. Relative Time Calculations
          2. Time Stamp and Numeric Conversion
        2. Waveforms
          1. Waveforms Versus Arrays
        3. Waveform Functions
        4. Activity 8-6: Generate and Plot a Waveform
        5. Digital Data
        6. Digital Waveform Graphs
        7. Dynamic Data
      13. Mixed Signal Graphs
        1. Multi-Plot Cursor
      14. Exporting Images of Charts and Graphs
      15. Wrap It Up!
      16. Additional Activities
        1. Activity 8-7: Temperature Limit
        2. Activity 8-8: Max/Min Temperature Limit
        3. Activity 8-9: Plotting Random Arrays
    13. 9. Exploring Strings and File I/O
      1. Overview
      2. Key Terms
      3. More About Strings
        1. Choose Your Own Display Type
        2. Single Line Strings
        3. Updating While You Type
        4. The Scrollbar
        5. Tables
        6. Listboxes
      4. Using String Functions
      5. Activity 9-1: String Construction
      6. Parsing Functions
        1. Match Pattern and Regular Expressions
      7. Activity 9-2: More String Parsing
      8. File Input/Output
        1. How They Work
        2. Express Writing and Reading of Measurement Files
        3. Writing and Reading Spreadsheet Files
          1. Spreadsheet Files: CSV Versus XLS—What’s the Difference?
        4. Activity 9-3: Writing to a Spreadsheet File
        5. Activity 9-4: Reading from the Spreadsheet File
        6. More Writing and Reading of Files
          1. Writing and Reading Text Files
          2. Writing and Reading Binary Files
        7. Activity 9-5: Reading a Text File
        8. Activity 9-6: Writing and Reading Binary Files
      9. Wrap It Up!
      10. Additional Activities
        1. Activity 9-7: Temperatures and Time Stamps
        2. Activity 9-8: Spreadsheet Exercise
    14. 10. Signal Measurement and Generation: Data Acquisition
      1. Overview
      2. Key Terms
      3. DAQ and Other Data Acquisition Acronyms
      4. How to Connect Your Computer to the Real World
      5. Signals 101
        1. Timing Is Everything
        2. Signal Classification
          1. Digital Signals
          2. Analog Level Signals
          3. Analog Time Domain Signals
          4. Analog Frequency Domain Signals
          5. One Signal—Five Measurement Perspectives
          6. Activity 10-1: Classifying Signals
          7. Transducers
          8. Sensor Arrays: Imaging and Other Cool Stuff
        3. Signal Conditioning
        4. Finding a Common Ground
          1. Grounded Signal Source
          2. Floating Signal Source
        5. Measuring Differences
          1. Differential Measurement System
          2. For True Geeks Only
          3. Referenced Single-Ended Measurement System
          4. NRSE Measurement System
        6. Sampling, Aliasing, and Mr. Nyquist
        7. In Conclusion . . .
      6. Selecting and Configuring DAQ Measurement Hardware
        1. Choosing Your Hardware
        2. Activity 10-2: Measurement System Analysis
        3. Installing DAQ Device Driver Software
        4. Measurement & Automation Explorer (MAX)
        5. NI-DAQmx
        6. Configuring NI-DAQmx Devices in MAX
          1. NI-DAQmx Simulated Devices
        7. Configuring Data Acquisition
          1. NI-DAQmx Scales
          2. NI-DAQmx Virtual Channels
          3. Voltage Input and Output Settings
          4. NI-DAQmx Tasks
      7. Wrap It Up!
      8. Solutions to Activities
    15. 11. Data Acquisition in LabVIEW
      1. Overview
      2. Key Terms
      3. Understanding Analog and Digital I/O
        1. Using the DAQ Assistant
        2. Activity 11-1: Analog Input
        3. Analog I/O Terms and Definitions
          1. Buffers
          2. Triggering
          3. Activity 11-2: Buffered Analog Input
        4. Digital I/O Terms and Definitions
          1. Activity 11-3: Reading Digital Inputs
      4. NI-DAQmx Tasks
        1. Creating NI-DAQmx Tasks in MAX
        2. Referencing MAX DAQmx Tasks in LabVIEW
        3. Generating Code from MAX DAQmx Tasks
        4. Using NI-DAQmx Tasks in LabVIEW
          1. DAQmx Create Virtual Channel: Creating Tasks
          2. DAQmx Start Task: Running Your Task
          3. Read and Write: Measure and Generate
          4. DAQmx Stop Task
          5. DAQmx Clear Task
          6. Activity 11-4: Writing to a Digital Line
          7. Activity 11-5: Writing a Continuous Analog Waveform
      5. Advanced Data Acquisition
        1. DAQmx Timing and DAQmx Trigger
          1. Activity 11-6: Triggered Data Acquisition Using Tasks
        2. Multichannel Acquisition
        3. Continuous Data Acquisition
        4. Activity 11-7: Continuous Acquisition
        5. Streaming Data to a File
        6. Activity 11-8: Streaming Data to File
        7. Counting Frequency and Events
          1. Measuring Digital Events and Timing with Counters
          2. Activity 11-9: Counting Digital Pulses
          3. Digital Pulse Generation with Counters
          4. Activity 11-10: Generating Digital Pulses
      6. Wrap It Up!
    16. 12. Instrument Control in LabVIEW
      1. Overview
      2. Key Terms
      3. Instrumentation Acronyms
      4. Connecting Your Computer to Instruments
        1. Using a GPIB Controller
        2. Getting Ready for Serial Communications
        3. Ethernet-Enabled Instruments
      5. SCPI, the Language of Instruments
      6. VISA: Your Passport to Instrument Communication
        1. VISA Resource Strings
        2. Configuring Your VISA Resources in MAX
      7. Instrument Control in LabVIEW
        1. Using the Instrument I/O Assistant
        2. Instrument Drivers
        3. Find Instrument Drivers from LabVIEW
        4. VISA Functions
        5. Advanced VISA Functions
        6. Bus/Interface Specific VISA Functions
        7. VISA GPIB Versus Traditional GPIB Functions
        8. VISA Serial Functions
        9. VISA USB Functions
        10. Create Your Own Instrument Driver: The Instrument Driver Wizard
      8. Wrap It Up!
    17. 13. Advanced LabVIEW Structures and Functions
      1. Overview
      2. Key Terms
      3. Local, Global, and Shared Variables
        1. Local Variables
          1. Controlling Parallel Loops
          2. Blurring the Control/Indicator Distinction
        2. Activity 13-1: Using Local Variables
        3. Activity 13-2: Fun with Locals
        4. Activity 13-3: More Fun with Locals
        5. Global Variables
          1. Creating Globals
          2. An Example of Globals
        6. Shared Variables
      4. Property Nodes
        1. Another Example
        2. Activity 13-4: Using Property Nodes with Charts
      5. Invoke Nodes
        1. Activity 13-5: Using Invoke Nodes to Export an Image from a Graph
      6. Event-Driven Programming: The Event Structure
        1. The Timeout Event
        2. Editing Events Handled by Event Structure Cases
        3. Using the Event Structure
        4. Event Smorgasbord
        5. Activity 13-6: Playing with Events
        6. Stopping While Loops That Contain Event Structures
        7. Activity 13-7: Using the Event Structure to Read Data Value Changes
        8. Advanced Concepts: Event Data Node and Event Filter Nodes
        9. Advanced Concepts: Notify Events Versus Filter Events
        10. Advanced Concepts: Dynamic Events and User Events
      7. Type Definitions
        1. Activity 13-8: Creating a Typedef
      8. The State Machine and Queued Message Handler
        1. The Standard State Machine
        2. Activity 13-9: Using the Standard State Machine
        3. The Queued Message Handler
      9. Messaging and Synchronization
        1. Queues
          1. Creating and Destroying Queues
          2. Enqueuing and Dequeuing Elements
          3. Obtaining Queue Status Information
          4. Activity 13-10: Building a Queued Message Handler Using Queues
          5. Queue Examples, Templates, and Hints
        2. Notifiers
          1. Creating and Destroying Notifiers
          2. Sending and Waiting on Notification
          3. Obtaining Notifier Status Information
          4. Notifier Examples and Hints
        3. Semaphores: Locking and Unlocking Shared Resources
          1. Creating and Destroying Semaphores
          2. Acquiring (Locking) and Releasing (Unlocking) Semaphores
          3. Obtaining Semaphore Status Information
          4. Semaphore Examples and Hints
        4. Rendezvous
          1. Creating and Destroying Rendezvous
          2. Waiting on a Rendezvous
          3. Resizing a Rendezvous
          4. Obtaining Rendezvous Status Information
          5. Rendezvous Examples and Hints
        5. Occurrences
          1. Creating Occurrences
          2. Waiting on and Setting Occurrences
          3. Occurrence Examples and Hints
        6. First Call?
      10. Structures for Disabling Code
        1. The Diagram Disable Structure
        2. The Conditional Disable Structure
      11. Halting VI and Application Execution
      12. Cool GUI Stuff: Look What I Can Do!
        1. System Controls and Colors
        2. Drag and Drop
        3. Tree Control
        4. Activity 13-11: Capturing Mouse Events on a Tree Control
        5. Tab Control
        6. Subpanels
        7. Splitter Bars
        8. Scrollbars
        9. Graphics and Sound
          1. Importing Graphics
          2. Picture Control
          3. Sound
      13. Wrap It Up!
    18. 14. Advanced LabVIEW Data Concepts
      1. Overview
      2. Key Terms
      3. A Word About Polymorphic VIs
      4. Advanced File I/O: Text Files, Binary Files, and Configuration Files
        1. Opening and Closing File References
        2. Advanced File Functions
          1. File Position
        3. End of File
          1. Moving, Copying, and Deleting Files and Folders
          2. Creating Folders and Listing Folder Contents
        4. Activity 14-1: Reading a Text File
        5. Activity 14-2: Writing and Reading Binary Files
      5. Configuration (INI) Files
        1. Opening and Closing Configuration Files
        2. Writing and Reading Key Values
        3. Activity 14-3: Storing Data in a Configuration File
        4. Additional Configuration File Operations
      6. Calling Code from Other Languages
        1. Using the Call Library Function Node to Call DLLs
        2. Activity 14-4: Calling a DLL in LabVIEW
      7. Fitting Square Pegs into Round Holes: Advanced Conversions and Typecasting
      8. You Can Be Anything: Variants
        1. Using Variants: Creating Generic Software Components
        2. ActiveX and the Variant Data Type
      9. Wrap It Up!
      10. Additional Activities
        1. Activity 14-5: Read Text File by Page
    19. 15. Advanced LabVIEW Features
      1. Overview
      2. Key Terms
      3. Exploring Your Options: The LabVIEW Options Dialog
      4. Configuring Your VI
        1. SubVI Node Setup Options (Are Evil)
        2. Activity 15-1: Using SubVIs
        3. VI Properties Options
          1. General
          2. Memory Usage
          3. Documentation
          4. Revision History
          5. Editor Options
          6. Security
          7. Window Appearance
          8. Window Size
          9. Print Options
          10. Execution
        4. Reentrant Execution
          1. Debugging Reentrant VI Instances (“Clones”)
          2. Activity 15-2: Reviewing Recycled Reentrancy
        5. Keyboard Navigation
          1. Activity 15-3: A Login VI
      5. The VI Server
        1. Enabling Remote Access to the VI Server
        2. Properties and Methods, “By Reference”
        3. Déjà Vu: Property Nodes and Invoke Nodes
        4. Application References
          1. Activity 15-4: Using the Application Class Properties
        5. VI References
          1. Activity 15-5: Using the VI Class Methods and Properties
          2. Dynamic SubVIs: The Call By Reference Node
          3. Activity 15-6: Calling a VI by Reference
          4. Static VI References
        6. Control References
          1. VI Server References to Controls
          2. Obtaining References to All Controls on a Front Panel
          3. Activity 15-7: Using VI Server References to Disable Controls While Busy
          4. Activity 15-8: Using the Panel.Controls[] Property to Disable Controls While Busy
          5. Control Reference Types: The VI Server Class Hierarchy
          6. The Value Property (Is Evil): The Worst Kind of Global Variables
          7. The Value (Signaling) Property: Generating Value Changed Events Programmatically
        7. Activity 15-9: Building an Emergency Abort Utility
        8. Final Thoughts on VI Server
      6. Radices and Units
        1. Radices
        2. Units
          1. Simple Unit Conversion: A Great Trick to Know
      7. Automatically Creating a SubVI from a Section of the Block Diagram
      8. A Few More Utilities in LabVIEW
        1. Custom Probes
          1. Remembering Probe Values
          2. Using and Creating Custom Probes
        2. The VI Hierarchy Window
        3. Searching for Objects in the Virtual Haystack
        4. Replacing Search Result Items
        5. Find VIs on Disk
        6. More Tools
      9. Wrap It Up!
    20. 16. Connectivity in LabVIEW
      1. Overview
      2. Key Terms
      3. Your VIs on the Web: The LabVIEW Web Server
        1. Configuring LabVIEW’s Built-in Web Server
        2. Publishing to HTML with LabVIEW’s Web Server
          1. Activity 16-1: Using LabVIEW’s Built-in Web Server to Publish Images and Animations
          2. Activity 16-2: Using LabVIEW’s Built-in Web Server to Publish Interactive VIs
      4. Emailing Data from LabVIEW
      5. Remote Panels
      6. Self-Describing Data: XML
        1. LabVIEW Data XML Schema
        2. XML Parser
      7. Sharing Data over the Network: Shared Variables
        1. Shared Variables in LabVIEW Projects
        2. Binding Controls and Indicators to Shared Variables
        3. Programmatically Accessing Shared Variables Using DataSocket
          1. Shared Variable URLs
          2. Reading Shared Variables Programmatically
          3. Writing Shared Variables Programmatically
          4. Maintaining Shared Variable Connections
      8. Talking to Other Programs and Objects
        1. .NET and ActiveX
          1. Communicating with .NET and ActiveX Servers
          2. Embedding .NET and ActiveX Controls on the Front Panel
          3. Activity 16-3: Embedding an ActiveX Web Browser in a VI (Windows Only)
          4. LabVIEW as an ActiveX Automation Server
        2. AppleEvents
        3. Pipes
      9. Talking to Other Computers: Network VIs
        1. TCP/IP
        2. UDP
      10. Databases
      11. Report Generation
        1. Express Report
        2. Easy Text Report
        3. Advanced Report Generation
          1. Creating and Closing Reports
          2. Saving Reports
          3. Printing Reports
          4. Report Styles
          5. Adding Report Content
          6. Report Layout Palette
          7. HTML Reports Palette
          8. Advanced Report Generation Palette
      12. Wrap It Up!
    21. 17. The Art of LabVIEW Programming
      1. Overview
      2. Key Terms
      3. Why Worry About the Graphical Interface Appearance?
      4. Arranging, Decorating, Resizing, Grouping, and Locking
      5. Vive l’art: Importing Pictures
      6. Custom Controls and Indicators
        1. Activity 17-1: Custom Controls
      7. Adding Online Help
      8. Pointers and Recommendations for a “Wow!” Graphical Interface
        1. Panel Layout
        2. Text, Fonts, and Color
        3. Graphs and Imported Pictures
        4. Miscellaneous
        5. Some Final Words on the GUI...
      9. How Do You Do That in LabVIEW?
        1. How Do You Acquire Data from Different Channels at Different Sampling Rates?
        2. How Do I Clear a Chart Programmatically?
        3. How Can I Display a Waterfall Plot?
        4. Is There a Way to Put More Than One Y Axis on a Graph for Two or More Plots?
        5. My Graphs Flicker Every Time They Are Updated. It’s Getting Really Annoying. Is There Any Way to Fix This?
        6. How Can You Create a Toolbar-Type Feature That Will Pop Up Different Sets of Controls and Indicators on the Same Window?
        7. Can I Access the Parallel Port in LabVIEW?
        8. Why Doesn’t My VISA Session Work?
        9. Can I Do Object-Oriented Programming in LabVIEW?
        10. Can I Turn My VIs into Standalone Executables So People Can Run Them Without LabVIEW?
        11. How Do I Monitor or Control My VIs over the Web?
        12. Can LabVIEW Cook Me Dinner?
      10. Memory, Performance, and All That
        1. Curing Amnesia and Slothfulness
        2. The Declaration of (Platform) Independence
      11. Programming with Style
        1. Modularize and Test Your VIs
        2. Document as You Go Along
        3. One More Time: Dataflow!
      12. Wrap It Up!
      13. Concluding Remarks
    22. A. CD Contents
    23. B. Add-on Toolkits for LabVIEW
      1. Application Deployment and Module Targeting
      2. Software Engineering and Optimization Tools
      3. Data Management and Visualization
      4. Real-Time and FPGA Deployment
      5. Embedded System Deployment
      6. Signal Processing and Analysis
      7. Automated Test
      8. Image Acquisition and Machine Vision
      9. Control Design and Simulation
      10. Industrial Control
    24. C. Open Source Tools for LabVIEW: OpenG
      1. Free Open Source Software
      2. OpenG.org: Home of the LabVIEW Open Source Community
    25. D. LabVIEW Object-Oriented Programming
      1. Introduction to Object-Oriented Programming
        1. Object-Oriented Programming Concepts
        2. Object-Oriented Analysis and Design
      2. LabVIEW Object-Oriented Programming
        1. Functional Globals
        2. Example: Functional Queue.vi
          1. Functional Global “Core”
          2. Functional Global “Public Method” VIs
          3. Programming Applications Using the Public Methods
        3. Functional Globals: Final Thoughts
        4. GOOP
        5. Semaphored Data Store
          1. Multiple Object Instances by Reference
          2. Obtaining the GOOP Wizard
          3. GOOP Final Thoughts
        6. GOOP Inheritance
      3. Built-in LabVIEW Object-Oriented Programming Features
        1. Project Libraries
        2. XControls
        3. The Future of LabVIEW Object-Oriented Programming
    26. E. Resources for LabVIEW
      1. LabVIEW Documentation and Online Help
        1. The Guys Who Wrote the Book
        2. National Instruments
        3. LabVIEW Advanced Virtual Architects (LAVA)
        4. Info-LabVIEW Mailing List
        5. OpenG.org
        6. Other Books
    27. F. LabVIEW Certification Exams
      1. Certified LabVIEW Associate Developer (CLAD) Exam
        1. Preparing for the CLAD
        2. Test Yourself: The LabVIEW Fundamentals Exam
      2. Certified LabVIEW Developer (CLD) Exam
      3. Certified LabVIEW Architect (CLA) Exam
    28. Glossary