Test Stand Reference Manual
Test Stand Reference Manual
Test Stand Reference Manual
Reference Manual
April 2007
373435B-01
TM
Support
Worldwide Technical Support and Product Information
ni.com
National Instruments Corporate Headquarters
11500 North Mopac Expressway
Worldwide Offices
Australia 1800 300 800, Austria 43 662 457990-0, Belgium 32 (0) 2 757 0020, Brazil 55 11 3262 3599,
Canada 800 433 3488, China 86 21 5050 9800, Czech Republic 420 224 235 774, Denmark 45 45 76 26 00,
Finland 385 (0) 9 725 72511, France 33 (0) 1 48 14 24 24, Germany 49 89 7413130, India 91 80 41190000,
Israel 972 3 6393737, Italy 39 02 413091, Japan 81 3 5472 2970, Korea 82 02 3451 3400,
Lebanon 961 (0) 1 33 28 28, Malaysia 1800 887710, Mexico 01 800 010 0793, Netherlands 31 (0) 348 433 466,
New Zealand 0800 553 322, Norway 47 (0) 66 90 76 60, Poland 48 22 3390150, Portugal 351 210 311 210,
Russia 7 495 783 6851, Singapore 1800 226 5886, Slovenia 386 3 425 42 00, South Africa 27 0 11 805 8197,
Spain 34 91 640 0085, Sweden 46 (0) 8 587 895 00, Switzerland 41 56 2005151, Taiwan 886 02 2377 2222,
Thailand 662 278 6777, Turkey 90 212 279 3031, United Kingdom 44 (0) 1635 523545
For further support information, refer to the Technical Support and Professional Services appendix. To comment
on National Instruments documentation, refer to the National Instruments Web site at ni.com/info and enter
the info code feedback.
20032007 National Instruments Corporation. All rights reserved.
Important Information
Warranty
The media on which you receive National Instruments 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 evidenced by receipts or other documentation. National
Instruments will, at its option, repair or replace software media that do not execute programming instructions if National Instruments receives
notice of such defects during the warranty period. National Instruments does not warrant that the operation of the software shall be
uninterrupted or error free.
A Return Material Authorization (RMA) number must be obtained from the factory and clearly marked on the outside of the package before any
equipment will be accepted for warranty work. National Instruments will pay the shipping costs of returning to the owner parts which are covered by
warranty.
National Instruments believes that the information in this document is accurate. The document has been carefully reviewed for technical accuracy. In
the event that technical or typographical errors exist, National 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 errors are suspected. In no event shall National
Instruments be liable for any damages arising out of or related to this document or the information contained 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. CUSTOMERS 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 after the cause of action accrues. National Instruments shall not be liable for any delay in
performance due to causes beyond its reasonable control. The warranty provided herein does not cover damages, defects, malfunctions, or service
failures caused by owners failure to follow the National Instruments installation, operation, or maintenance instructions; owners modification of the
product; owners abuse, misuse, or negligent acts; and power failure or surges, 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, electronic or mechanical, including photocopying,
recording, storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National
Instruments Corporation.
National Instruments respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright and other
intellectual property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may use NI software only
to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal restriction.
Trademarks
National Instruments, NI, ni.com, NI TestStand, and LabVIEW are trademarks of National Instruments Corporation. Refer to the Terms of Use
section on ni.com/legal for more information about National Instruments trademarks.
Other product and company names mentioned herein are trademarks or trade names of their respective companies.
Members of the National Instruments Alliance Partner Program are business entities independent from National Instruments and have no agency,
partnership, or joint-venture relationship with National Instruments.
Patents
For patents covering National Instruments products, refer to the appropriate location: HelpPatents in your software, the patents.txt file
on your CD, or ni.com/patents.
Contents
About This Manual
Conventions ...................................................................................................................xv
Chapter 1
TestStand Architecture
General Test Executive Concepts ..................................................................................1-1
Major Software Components of TestStand....................................................................1-2
TestStand Sequence Editor..............................................................................1-2
TestStand User Interfaces................................................................................1-3
Features Comparison: Sequence Editor and User Interfaces ............1-4
TestStand User Interface Controls...................................................................1-6
TestStand Engine.............................................................................................1-6
Module Adapters .............................................................................................1-6
TestStand Building Blocks ............................................................................................1-7
Variables and Properties..................................................................................1-7
Expressions .......................................................................................1-8
Categories of Properties ....................................................................1-9
Steps ................................................................................................................1-10
Step Types.........................................................................................1-11
Sequences ........................................................................................................1-11
Step Groups.......................................................................................1-11
Sequence Local Variables .................................................................1-12
Sequence Parameters.........................................................................1-12
Built-in Sequence Properties.............................................................1-13
Sequence Files .................................................................................................1-13
Process Models................................................................................................1-13
Station Model....................................................................................1-14
Main Sequence and Client Sequence File.........................................1-14
Entry Points.......................................................................................1-15
Automatic Result Collection ...........................................................................1-15
Callback Sequences .........................................................................................1-15
Sequence Executions .......................................................................................1-16
Chapter 2
Sequence Files and Workspaces
Sequence Files ...............................................................................................................2-1
Types of Sequence Files..................................................................................2-1
Sequence File Callbacks..................................................................................2-1
Contents
Chapter 3
Executions
Sequence Context .......................................................................................................... 3-1
Using the Sequence Context ........................................................................... 3-2
Lifetime of Local Variables, Parameters, and
Custom Step Properties.................................................................. 3-3
Sequence Editor Execution Window .............................................................. 3-3
Starting an Execution .................................................................................................... 3-4
Execution Entry Points.................................................................................... 3-4
Executing a Sequence Directly ....................................................................... 3-4
Interactively Executing Steps.......................................................................... 3-5
Terminating and Aborting Executions ............................................................ 3-5
Execution Debugging Panes ........................................................................... 3-6
Result Collection ........................................................................................................... 3-7
Custom Result Properties................................................................................ 3-8
Standard Result Properties .............................................................................. 3-10
Subsequence Results ....................................................................................... 3-11
Loop Results ................................................................................................... 3-12
Report Generation ........................................................................................... 3-13
Engine Callbacks ........................................................................................................... 3-13
Step Execution............................................................................................................... 3-13
Step Status ..................................................................................................................... 3-16
Failures............................................................................................................ 3-17
Terminations ................................................................................................... 3-17
Run-Time Errors............................................................................................................ 3-17
vi
ni.com
Contents
Chapter 4
Built-In Step Types
Overview........................................................................................................................4-1
Using Step Types.............................................................................................4-1
Built-In Step Properties.....................................................................4-3
Custom Properties That All Built-In Step Types Share ..................................4-5
Error Occurred Flag, Step Status, and Run-Time Errors.................................4-6
Step Types That You Can Use with Any Module Adapter ...........................................4-7
Pass/Fail Test...................................................................................................4-8
Numeric Limit Test .........................................................................................4-9
Multiple Numeric Limit Test...........................................................................4-11
String Value Test.............................................................................................4-13
Action ..............................................................................................................4-15
Step Types That Work With a Specific Module Adapter ..............................................4-15
Sequence Call ..................................................................................................4-15
Step Types That Do Not Use Module Adapters ............................................................4-16
Flow Control....................................................................................................4-16
If ........................................................................................................4-16
Else....................................................................................................4-17
Else If ................................................................................................4-17
For .....................................................................................................4-17
For Each ............................................................................................4-18
While .................................................................................................4-18
Do While ...........................................................................................4-18
Break .................................................................................................4-18
Continue ............................................................................................4-19
Select .................................................................................................4-19
Case...................................................................................................4-19
Goto...................................................................................................4-19
End ....................................................................................................4-19
Statement .........................................................................................................4-20
Label ................................................................................................................4-20
Message Popup................................................................................................4-20
Call Executable................................................................................................4-22
Property Loader ...............................................................................................4-23
FTP Files .........................................................................................................4-24
Synchronization Step Types ............................................................................4-24
Database Step Types........................................................................................4-24
IVI-C Step Types.............................................................................................4-24
LabVIEW Utility Step Types ..........................................................................4-24
vii
Contents
Chapter 5
Adapters
Module Adapters ........................................................................................................... 5-1
Configuring Adapters...................................................................................... 5-1
Source Code Templates .................................................................................. 5-2
LabVIEW Adapter......................................................................................................... 5-2
LabWindows/CVI Adapter............................................................................................ 5-2
C/C++ DLL Adapter ..................................................................................................... 5-3
Using and Debugging DLLs.......................................................................................... 5-3
Calling LabVIEW DLLs................................................................................. 5-5
Using ActiveX Controls ................................................................... 5-5
Debugging LabVIEW 8 or Later Shared Libraries (DLLs).............. 5-5
Debugging LabVIEW 7.1.1 Shared Libraries (DLLs) ..................... 5-6
Using MFC in a DLL ...................................................................................... 5-6
Loading Subordinate DLLs............................................................................. 5-6
Reading Parameter Information ...................................................................... 5-7
.NET Adapter ................................................................................................................ 5-7
Debugging .NET Assemblies.......................................................................... 5-8
Using the .NET Framework ............................................................................ 5-10
Accessing the TestStand API in Visual Studio .NET 2003 and
Visual Studio 2005 ....................................................................................... 5-11
Configuring the .NET Adapter........................................................................ 5-11
ActiveX/COM Adapter ................................................................................................. 5-12
Running and Debugging ActiveX Automation Servers.................................. 5-12
Configuring the ActiveX/COM Adapter......................................................... 5-12
Registering and Unregistering ActiveX/COM Servers................................... 5-13
Server Compatibility Options for Visual Basic .............................................. 5-13
HTBasic Adapter ........................................................................................................... 5-15
Specifying the HTBasic Adapter .................................................................... 5-15
Debugging an HTBasic Adapter ..................................................................... 5-15
Passing Data To and Returning Data From a Subroutine ............................... 5-16
Sequence Adapter .......................................................................................................... 5-16
Specifying the Sequence Adapter ................................................................... 5-17
Remote Sequence Execution ............................................................ 5-17
Setting up TestStand as a Server for Remote Sequence Execution ................ 5-18
Windows XP Service Pack 2 ............................................................ 5-19
Windows XP SP2 Firewall Settings ................................................. 5-21
Windows 2000 Service Pack 4 ......................................................... 5-21
viii
ni.com
Contents
Chapter 6
Database Logging and Report Generation
Database Concepts .........................................................................................................6-1
Databases and Tables ......................................................................................6-1
Database Sessions............................................................................................6-3
Microsoft ADO, OLE DB, and ODBC Database Technologies .....................6-3
Data Links .......................................................................................................6-5
Database Logging Implementation..................................................................6-6
Using Database Logging................................................................................................6-7
Logging Property in the Sequence Context.....................................................6-8
TestStand Database Result Tables .................................................................................6-9
Default TestStand Table Schema ....................................................................6-9
Creating the Default Result Tables..................................................................6-10
Adding Support for Other Database Management Systems............................6-10
Database Viewer..............................................................................................6-12
On-the-Fly Database Logging .........................................................................6-12
Using Data Links ...........................................................................................................6-13
Using the ODBC Administrator ......................................................................6-13
Example Data Link and Result Table Setup for Microsoft Access.................6-13
Database OptionsSpecifying a Data Link and Schema.................6-13
Database ViewerCreating Result Tables.......................................6-14
Implementation of the Test Report Capability ..............................................................6-15
Using Test Reports.........................................................................................................6-16
Failure Chain in Reports..................................................................................6-16
Batch Reports ..................................................................................................6-16
Property Flags that Affect Reports ..................................................................6-17
On-the-Fly Report Generation.........................................................................6-17
XML Report Schema.......................................................................................6-18
Chapter 7
User Management
Privileges .......................................................................................................................7-2
Accessing Privilege Settings for the Current User ..........................................7-2
Accessing Privilege Settings for Any User .....................................................7-3
Defining Custom Privileges in TestStand .......................................................7-3
Chapter 8
Customizing and Configuring TestStand
Customizing TestStand ..................................................................................................8-1
User Interfaces.................................................................................................8-1
Process Models................................................................................................8-1
ix
Contents
Chapter 9
Creating Custom User Interfaces
Example User Interfaces................................................................................................ 9-2
TestStand User Interface Controls................................................................................. 9-2
Deploying a User Interface............................................................................................ 9-3
Writing an Application with the TestStand UI Controls ............................................... 9-3
Manager Controls............................................................................................ 9-3
Application Manager ........................................................................ 9-3
SequenceFileView Manager............................................................. 9-4
ExecutionView Manager .................................................................. 9-4
Visible TestStand UI Controls ........................................................................ 9-5
Connecting Manager Controls to Visible Controls......................................... 9-6
View Connections ........................................................................................... 9-7
List Connections ............................................................................................. 9-7
Command Connections ................................................................................... 9-9
Information Source Connections .................................................................... 9-10
Caption Connections......................................................................... 9-10
Image Connections ........................................................................... 9-11
Numeric Value Connections............................................................. 9-12
Specifying and Changing Control Connections.............................................. 9-12
Editor Versus Operator Interface Applications ............................................................. 9-12
Creating Editor Applications .......................................................................... 9-13
License Checking .......................................................................................................... 9-13
Using TestStand UI Controls in Different Environments ............................................. 9-14
LabVIEW ........................................................................................................ 9-14
LabWindows/CVI ........................................................................................... 9-14
Microsoft Visual Studio .................................................................................. 9-15
Visual C++ ...................................................................................................... 9-15
Obtaining an Interface Pointer and CWnd for an ActiveX Control................ 9-16
Using GetDlgItem............................................................................. 9-16
ni.com
Contents
Handling Events.............................................................................................................9-17
Creating Event Handlers in Your ADE ...........................................................9-17
Events Handled by Typical Applications ........................................................9-18
ExitApplication .................................................................................9-18
Wait...................................................................................................9-18
ReportError .......................................................................................9-18
DisplaySequenceFile.........................................................................9-18
DisplayExecution ..............................................................................9-19
Startup and Shut Down ..................................................................................................9-19
TestStand Utility Functions Library ..............................................................................9-20
Menus and Menu Items..................................................................................................9-23
Updating Menus ..............................................................................................9-23
Localization ...................................................................................................................9-25
User Interface Application Styles ..................................................................................9-26
Single Window ................................................................................................9-26
Multiple Window.............................................................................................9-27
No Visible Window.........................................................................................9-28
Command-Line Arguments ...........................................................................................9-29
Persistence of Application Settings ...............................................................................9-29
Configuration File Location ............................................................................9-30
Adding Custom Application Settings..............................................................9-30
Using the TestStand API with TestStand UI Controls ..................................................9-31
Documenting Custom User Interfaces ...........................................................................9-32
Chapter 10
Customizing Process Models and Callbacks
Process Models ..............................................................................................................10-1
Station Model ..................................................................................................10-2
Specifying a Specific Process Model for a Sequence File ..............................10-2
Modifying the Process Model .........................................................................10-2
Process Model Callbacks.................................................................................10-3
Normal Sequences.............................................................................10-4
Callback Sequences...........................................................................10-5
Entry Point Sequences ......................................................................10-5
Callbacks........................................................................................................................10-6
Engine Callbacks .............................................................................................10-6
Front-End Callbacks........................................................................................10-10
Chapter 11
Type Concepts
Storing Types in Files and Memory ..............................................................................11-1
Modifying Types............................................................................................................11-1
xi
Contents
Chapter 12
Standard and Custom Data Types
Using Data Types .......................................................................................................... 12-1
Specifying Array Sizes.................................................................................... 12-2
Empty Arrays.................................................................................... 12-3
Display of Data Types..................................................................................... 12-3
Modifying Data Types and Values ................................................................. 12-5
Single Values .................................................................................... 12-5
Arrays ............................................................................................... 12-6
Using Standard Named Data Types ................................................................ 12-7
Path ................................................................................................... 12-7
Error and CommonResults ............................................................... 12-7
Creating and Modifying Custom Data Types................................................................ 12-8
Creating a New Custom Data Type ................................................................ 12-8
Customizing Built-In Data Types ................................................................... 12-9
Properties Common to All Data Types ........................................................... 12-9
General Tab ...................................................................................... 12-9
Bounds Tab....................................................................................... 12-10
Version Tab ...................................................................................... 12-10
Cluster Passing Tab .......................................................................... 12-10
C Struct Passing Tab......................................................................... 12-10
.NET Struct Passing Tab .................................................................. 12-10
Custom Properties of Data Types ................................................................... 12-10
Chapter 13
Creating Custom Step Types
Creating and Modifying Custom Step Types ................................................................ 13-1
Creating a New Custom Step Type................................................................. 13-2
Customizing Built-In Step Types.................................................................... 13-2
Properties Common to All Step Types ........................................................... 13-3
General Tab ...................................................................................... 13-4
Menu Tab.......................................................................................... 13-4
Substeps Tab..................................................................................... 13-5
xii
ni.com
Contents
Chapter 14
Deploying TestStand Systems
TestStand System Components .....................................................................................14-1
TestStand Deployment Utility .......................................................................................14-1
Setting Up the TestStand Deployment Utility.................................................14-2
Identifying Components for Deployment .........................................14-2
Determining Whether to Create an Installer
with the TestStand Deployment Utility..........................................14-2
Creating a System Workspace File ...................................................14-3
Configuring and Building the Deployment.......................................14-3
Using the TestStand Deployment Utility.......................................................................14-3
File Collection .................................................................................................14-3
VI Processing...................................................................................................14-4
Sequence File Processing ................................................................................14-5
Installing National Instruments Components ..................................................14-5
Guidelines for Successful Deployment..........................................................................14-6
Common Deployment Scenarios ...................................................................................14-7
Deploying the TestStand Engine .....................................................................14-7
Distributing Tests from a Workspace..............................................................14-8
Adding Dynamically Called Files to a Workspace .........................................14-10
Distributing a User Interface ...........................................................................14-11
Chapter 15
Sequence File Translators
Custom Sequence File Translators ................................................................................15-1
Using a Sequence File Translator ..................................................................................15-1
Creating a Translator DLL.............................................................................................15-2
Required Callback Functions.........................................................................................15-3
Error Handling.................................................................................................15-13
Example Sequence File Translators...............................................................................15-13
Versioning Translators and Custom Sequence Files .....................................................15-14
Deploying Translators and Custom Sequence Files ......................................................15-15
Deploying Custom Sequence File Translators..................................15-15
Deploying Custom Sequence Files ...................................................15-16
xiii
Contents
Appendix A
Process Model Architecture
Appendix B
Synchronization Step Types
Appendix C
Database Step Types
Appendix D
IVI-C Step Types
Appendix E
LabVIEW Utility Step Types
Appendix F
Instrument Drivers
Appendix G
Technical Support and Professional Services
Index
xiv
ni.com
Conventions
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 FilePage SetupOptions 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
monospace
Text in this font denotes text or characters that you should enter from the
keyboard, sections of code, programming examples, and syntax examples.
This font is also used for the proper names of disk drives, paths, directories,
programs, subprograms, subroutines, device names, functions, operations,
variables, filenames, and extensions.
monospace italic
Italic text in this font denotes text that is a placeholder for a word or value
that you must supply.
xv
TestStand Architecture
1-1
Chapter 1
TestStand Architecture
1-2
ni.com
Chapter 1
TestStand Architecture
Type editing
In the TestStand Sequence Editor, you can fully customize the pane and tab
layout to optimize your development and debugging tasks. You can also
interactively customize the menus, toolbars, and their keyboard shortcuts.
You can save your custom layouts and reset the user interface layout to the
default. Refer to the NI TestStand Help for more information about working
with panes in the sequence editor.
1-3
Chapter 1
TestStand Architecture
Refer to the NI TestStand System and Architecture Overview Card and the
NI TestStand User Interface Controls Reference Poster for more
information about user interfaces. Refer to Chapter 9, Creating Custom
User Interfaces, for more information about the user interfaces that are
included in TestStand.
Application
TestStand
Sequence Editor
User Interface
Editor Mode
User Interface
Operator Mode
User Management
Configuration
Dockable Pane
Modal Dialog
Modal Dialog
Integrated
Modal Dialog
Insertion Palette
Features
Environment
Workspace Support
Editing
1-4
ni.com
Chapter 1
TestStand Architecture
Table 1-1. TestStand Sequence Editor vs. TestStand User Interfaces (Continued)
Application
TestStand
Sequence Editor
User Interface
Editor Mode
User Interface
Operator Mode
Dockable Panes
Modal Dialogs
Edit Types
Undo/Redo
Multithreaded Execution
Conditional Breakpoints
Variables View
Watch View
TestStand
Development
System License
TestStand Custom
Sequence Editor
License
TestStand Base
Deployment Engine
License
Features
Edit Steps/Modules
Running
Other
Note Source code is available for the TestStand User Interface examples, so you can
customize the user interfaces to add features that are not available by default.
1-5
Chapter 1
TestStand Architecture
TestStand Engine
The TestStand Engine is a set of DLLs that export an ActiveX Automation
API. The TestStand Sequence Editor and User Interface Controls use the
TestStand API, which you can call from any programming environment
that supports access to ActiveX automation servers, including code
modules you write in LabVIEW and LabWindows/CVI.
For more information about the TestStand API, refer to the NI TestStand
Help.
Module Adapters
Most steps in a TestStand sequence invoke code in another sequence or in
a code module. When invoking code in a code module, TestStand must
know the type of code module, how to call it, and how to pass parameters
to it. The different types of code modules include LabVIEW VIs;
C functions in source, object, or library modules created in
LabWindows/CVI; C/C++ functions in DLLs; objects in .NET assemblies;
objects in ActiveX automation servers; and subroutines in HTBasic.
TestStand must also know the list of parameters required by the code
module. TestStand uses a module adapter to obtain this knowledge.
TestStand includes the following module adapters:
ni.com
Chapter 1
TestStand Architecture
1-7
Chapter 1
TestStand Architecture
Each step in a sequence can have properties. For example, a step might have
a floating-point measurement property. The type of step determines its
set of properties. Refer to the Step Types section of this chapter for more
information about types of steps.
When executing sequences, TestStand maintains a SequenceContext object
that contains references to all global variables, all local variables, and all
step properties in active sequences. The contents of the SequenceContext
object change according to the currently executing sequence and step. If
you pass a SequenceContext object reference to a code module, you can use
it to access information stored within the SequenceContext object.
Expressions
In TestStand, you can use the values of variables and properties in
numerous ways, such as passing a variable to a code module or using a
property value to determine whether to execute a step. For these same
purposes, you may also want to use an expression, which is a formula that
calculates a new value from the values of multiple variables or properties.
In expressions, you can access all variables and properties in the sequence
context that are active when TestStand evaluates the expression.
The following is an example of an expression:
Locals.MidBandFrequency = (Step.HighFrequency +
Step.LowFrequency) / 2
You can use an expression wherever you would use a simple variable or
property value. TestStand supports all applicable expression operators and
syntax that you would use in C, C++, Java, and Visual Basic .NET. You can
also call the TestStand API directly from within expressions.
Note Accessing the TestStand API from within expressions is slightly slower than using
multiple ActiveX/COM Adapter steps to perform similar operations.
1-8
ni.com
Chapter 1
TestStand Architecture
Categories of Properties
A property is a storage space for information. A property can store a single
value or an array of values of the same data type. Each property has a name.
A value can be a number, string, Boolean, .NET object reference, or
an ActiveX object reference. TestStand stores numbers as 64-bit,
floating-point values in the IEEE 754 format. Values are not containers and
thus cannot contain subproperties. Arrays of values can have multiple
dimensions.
The following major categories of properties are defined according to the
kinds of values they contain:
1-9
Chapter 1
TestStand Architecture
Note Modifying the standard named data types may result in type conflicts when you
open other sequence files that reference these types. Refer to Chapter 12, Standard and
Custom Data Types, for more information about the standard named data types.
You can also define your own named data types. These data types must use
a unique name, and you can add or delete subproperties in each named data
type without restriction. For example, you might create a Transmitter data
type that contains subproperties such as NumChannels and PowerLevel.
Steps
A sequence consists of a series of steps. In TestStand, a step can perform
many actions, such as initializing an instrument, performing a complex test,
or making a decision that affects the flow of execution in a sequence. Steps
perform these actions through several types of mechanisms, including
jumping to another step, executing an expression, calling a subsequence, or
calling an external code module.
Steps can also have custom properties. For steps that call code modules,
custom step properties are useful for storing parameters to pass to the code
module for the step. They also serve as a place for the code module to store
its results. You can also use the TestStand API to access the values of
custom step properties from within code modules.
Not all steps call code modules. Some steps perform standard actions you
configure using panes and dialog boxes. In this case, custom step properties
are useful for storing the configuration settings you specify.
1-10
ni.com
Chapter 1
TestStand Architecture
Step Types
Just as each variable or property has a data type, each step has a step type.
A step type can contain any number of custom properties. Each step of that
type includes the custom step properties in addition to the built-in step
properties. While all steps of the same type have the same properties, the
values of those properties can differ. The step type specifies the initial
values of all the step properties. TestStand includes a number of predefined
step types. For a description of these step types, refer to Chapter 4, Built-In
Step Types.
Although you can create a test application using only the predefined step
types in TestStand, you can also create your own custom step types.
Creating custom step types allows you to define standard, reusable classes
of steps that apply specifically to your application. Refer to Chapter 13,
Creating Custom Step Types, for more information about creating your own
step types.
Sequences
A TestStand sequence consists of the following components:
Parameters
Step Groups
A sequence contains the following groups of steps: Setup, Main, and
Cleanup. TestStand executes the steps in the Setup step group first, the
Main step group second, and the Cleanup step group last. The Setup step
group typically contains steps that initialize instruments, fixtures, or a Unit
1-11
Chapter 1
TestStand Architecture
Under Test (UUT). The Main step group typically contains the bulk of the
steps in a sequence, including the steps that test the UUT. The Cleanup step
group typically contains steps that power down or restore the initial state of
instruments, fixtures, and the UUT.
Use separate step groups to ensure that the steps in the Cleanup step group
execute regardless of whether the sequence completes successfully or a
run-time error occurs in the sequence. If a step in the Setup or Main step
group generates a run-time error, the flow of execution jumps to the
Cleanup step group. The cleanup steps always run even if some of the setup
steps do not run. If a cleanup step causes a run-time error, execution
continues to the next cleanup step.
If a run-time error occurs in a sequence, TestStand reports the run-time
error to the calling sequence. Execution in the calling sequence then jumps
to the Cleanup step group in that calling sequence. This process continues
up the call stack to the top-level sequence. Thus, when a run-time error
occurs, TestStand terminates execution after running all the cleanup steps
of all the sequences in the sequence call stack.
passing data by reference. You can return a value as an indicator, which TestStand treats as
a separate parameter.
Sequence Parameters
Each sequence has its own list of parameters. Use these parameters to pass
data to a sequence when you call that sequence as a subsequence. Using
parameters in this way is analogous to wiring data to terminals when
you call a subVI in LabVIEW or to passing arguments to a function call
in LabWindows/CVI. You can also specify a default value for each
parameter.
You can specify the number of parameters and the data type of each
parameter. You can select a value to pass to the parameter or use the default
1-12
ni.com
Chapter 1
TestStand Architecture
passing data by reference. You can return a value as an indicator, which TestStand treats as
a separate parameter.
Sequence Files
Sequence files can contain one or more sequences. Sequence files can also
contain global variables that all sequences in the sequence file can access.
Sequence files have built-in properties that you can specify using the
Sequence File Properties dialog box. For example, you can specify Load
and Unload Options that override the Load and Unload Options of all the
steps in all of the sequences in the file.
Refer to the NI TestStand Help for more information about the Sequence
File Properties dialog box.
Process Models
Testing a UUT requires more than just executing a set of tests. Usually, the
test system must perform a series of operations before and after it executes
the sequence that performs the tests. Common operations include
identifying the UUT, notifying the operator of pass/fail status, logging
results, and generating a test report. These operations define the testing
process. The set of such operations and their flow of execution is called a
process model.
1-13
Chapter 1
TestStand Architecture
Station Model
You can specify a process model file to use for all sequence files. This
process model file is called the station model file. The Sequential model is
the default station model file. You can use the Station Options dialog box
to select a different station model or to allow individual sequence files to
specify their own process model file.
Refer to the NI TestStand Help for more information about the Station
Options dialog box.
1-14
ni.com
Chapter 1
TestStand Architecture
After TestStand identifies the process model to use with the Main sequence,
the file containing the Main sequence becomes a client sequence file of the
process model.
Entry Points
A process model defines a set of entry points. Each entry point is a
sequence in the process model file. By defining multiple entry points in a
process model, you give the test station operator different ways to invoke a
Main sequence or configure the process model.
The sequence for a Process Model entry point can contain calls to DLLs,
subsequences, Goto steps, and so on. You can specify two types of entry
pointsExecution entry points and Configuration entry points.
Refer to Chapter 3, Executions, for more information about entry points.
Callback Sequences
Callbacks are sequences that TestStand calls under specific circumstances.
You can create new callback sequences or you can override existing
callbacks to customize the operation of the test station. To add a callback
sequence to a sequence file, use the Sequence File Callbacks dialog box.
Refer to the NI TestStand Help for more information about the Sequence
File Callbacks dialog box.
1-15
Chapter 1
TestStand Architecture
Callback Type
Model Callbacks
Engine Callbacks
Engine
Front-End Callbacks
FrontEndCallbacks.seq
Sequence Executions
When you run a sequence, TestStand creates an Execution object that
contains all of the information that TestStand needs to run your sequence
and the subsequences it calls. While an execution is active, you can start
another execution by running the same sequence again or by running a
different one. TestStand does not limit the number of executions that you
can run concurrently. An Execution object initially starts with a single
execution thread. You can use sequence call multithreading options to
create additional threads within an execution or to launch new executions.
An execution groups related threads so that setting a breakpoint suspends
all threads in the execution. In the same way, terminating an execution also
terminates all threads in that execution.
1-16
ni.com
Sequence Files
A TestStand sequence file (.seq) is a file that contains any number of
sequences, a set of types used in the sequence file, and any global variables
shared by steps and sequences in the file.
Most sequence files you create are normal sequence files. Usually, your
computer has one Station callback sequence file and one Front-End
callback sequence file.
Normal sequence files can specify that they always use the station process
model, a specific process model, or no process model.
From within the TestStand Sequence Editor, use the Sequence File
Properties dialog box to set the type of sequence, the sequence file process
model settings, and other sequence file properties.
Refer to the NI TestStand Help for more information about the Sequence
File Properties dialog box.
2-1
Chapter 2
Refer to the NI TestStand Help for more information about the Sequence
File Callbacks dialog box. Refer to Chapter 10, Customizing Process
Models and Callbacks, for more information about callbacks and
overriding callback sequences.
2-2
ni.com
Chapter 2
Sequences
Each sequence can contain steps, parameters, and local variables. View and
edit the list of sequences in the Sequences pane of the Sequence File
window. View and edit the contents of a selected sequence in the Steps
pane of the Sequence File window.
Sequences have properties that you can view and edit from the Sequence
Properties dialog box. For more information about the Sequence Properties
dialog box, refer to the NI TestStand Help.
Step Groups
Sequences contain steps in three groups: Setup, Main, and Cleanup. You
can view and edit the step groups in the Steps pane of the Sequence File
window.
Use the Setup step group for steps that initialize or configure your
instruments, fixtures, and UUTs. Use the Main step group for steps that test
your UUTs. Use the Cleanup step group for steps that power down or
release handles to your instruments, fixtures, and UUTs.
Refer to the NI TestStand Help for more information about the Steps pane.
Parameters
Each sequence has its own list of parameters. Use these parameters to pass
data to and from a sequence when you call that sequence as a subsequence.
You can view and edit the parameters for a sequence in the Variables pane
of the Sequence File window. Use the Value column in the Variables pane
to modify string, numeric, and Boolean values.
Refer to the NI TestStand Help for more information about the Variables
pane.
2-3
Chapter 2
Local Variables
Use local variables to store data relevant to the execution of the sequence.
You can access local variables from within steps and code modules. You
can also use local variables for maintaining counts, holding intermediate
values, or any other purpose. View and edit the local variables for a
sequence on the Variables pane of the Sequence File window. Use the
Value column in the Variables pane to modify string, numeric, and Boolean
values.
Refer to the NI TestStand Help for more information about the Variables
pane.
2-4
ni.com
Chapter 2
To open an existing sequence file in the Sequence File window, select File
Open Sequence File. To create a new Sequence File window, select File
New Sequence File.
The Sequence File window contains the following panes:
Refer to the NI TestStand Help for more information about the Sequence
File window and its panes.
Workspaces
In TestStand, you can create a workspace to organize and access your
development files. A TestStand workspace file (.tsw) contains references
to any number of TestStand project files. A TestStand project file (.tpj)
contains references to any number of other files of any type.
Use TestStand project files to organize related files in your test system. You
can insert any number of files into a project. You can also insert folders in
a project to contain files or other folders.
In the sequence editor, you use the Workspace pane to view and edit a
workspace file and the project files it references. You can have only one
workspace file open at a time. To open an existing workspace file, select
FileOpen Workspace File. To create a new workspace file, select File
New Workspace File.
The TestStand Deployment Utility also uses a workspace to specify the
files to include in the deployment image or installer that the utility creates.
Refer to the NI TestStand Help for more information about the Workspace
pane.
2-5
Chapter 2
System Deployment
The TestStand Deployment Utility uses workspace and project files to
collect all of the files required to successfully distribute your test system to
a target computer. The deployment utility also creates an installer for your
test system.
Refer to Chapter 14, Deploying TestStand Systems, for more information
about system deployment and the TestStand Deployment Utility.
2-6
ni.com
Executions
For these shared properties, TestStand does not create a unique run-time copy, but instead
references the edit-time copy. Any changes to the run-time reference of these built-in
properties edits the original Step or Sequence object in the sequence file.
For each execution thread, TestStand maintains an execution pointer
that points to the current step, a call stack, and a run-time copy of the
local variables and custom properties for all sequences and steps on the
call stack.
The Execution tab on the Station Options dialog box provides a number of
execution options that control tracing, breakpoints, and result collection.
Refer to the NI TestStand Help for more information about the Execution
tab on the Station Options dialog box.
Sequence Context
Before executing the steps in a sequence, TestStand creates a run-time copy
of the sequence. This allows TestStand to maintain separate local variable
and step property values for each sequence invocation.
3-1
Chapter 3
Executions
During an execution, you can view and modify the values of the properties
in the sequence context from the Variables pane on the Execution window.
The Variables pane displays the sequence context for the sequence
invocation that is currently selected in the Call Stack pane. You can also
monitor individual variables or properties from the Watch View pane. Refer
to the NI TestStand Help for more information about using the Variables
pane, Watch View pane, and Call Stack pane of the Execution window.
You can pass a reference to a SequenceContext object to a code module.
In code modules, you access the value of a variable or property by using
PropertyObject methods in the TestStand API with the sequence context.
As with expressions, you must specify a path from the sequence context to
the particular property or variable. Refer to Chapter 5, Adapters, for more
information about passing the SequenceContext object to a code module
for each adapter. Refer to the NI TestStand Help for more information about
accessing the properties in the sequence context from code modules.
Select ViewSequence FileVariables or ViewExecutionVariables in
the sequence editor to open the Variables pane, which contains the names
of variables, properties, and sequence parameters that you can access from
expressions and code modules. Refer to the NI TestStand Help for more
information about the Variables pane.
Note Some properties are not populated until run time.
3-2
ni.com
Chapter 3
Executions
Refer to the NI TestStand Help for more information about the Execution
window.
3-3
Chapter 3
Executions
Starting an Execution
You can initiate an execution by launching a sequence through an
Execution entry point, by launching a sequence directly, or by executing
a group of steps interactively.
3-4
ni.com
Chapter 3
Executions
In interactive mode, the selected steps run in the order in which they appear
in the sequence. A configurable station option specifies whether a branch
operation is allowed to a specific step or a non-selected step, or whether
only the selected steps in a sequence execute, regardless of any branching
logic that the sequence contains.
To configure whether TestStand evaluates preconditions when executing
interactively, select ConfigureStation Options and enable the Evaluate
Preconditions option in the Interactive Executions section of the
Execution tab on the Station Options dialog box. You can also use this
dialog box to configure whether interactive executions branch to unselected
steps in the Branching Mode control. Refer to the NI TestStand Help for
more information about the Station Options dialog box.
3-5
Chapter 3
Executions
execution has been stopped. You can stop one execution or all executions
by issuing a stop request at any time. Stop requests do not take effect in
each execution until the currently executing code module returns control.
You can stop executions in two ways:
When you abort an execution, the cleanup steps do not run, and the
process model does not continue. Abort an execution in cases when
you want an execution to completely stop as soon as possible. In
general, it is better to terminate execution so that the cleanup steps can
return your system to a known state.
Note You should only abort an execution when you are debugging and when you are sure
3-6
ni.com
Chapter 3
Executions
Result Collection
TestStand can automatically collect the results of each step. You can
configure this feature for each step on the Run Options panel of the Step
Settings pane. You can disable result collection for an entire sequence in
the Sequence Properties dialog box or completely disable result collection
on your computer in the Station Options dialog box.
Each sequence has a ResultList local variable, which is an empty array of
container properties. TestStand appends a new container property, the step
result, to the end of the ResultList array before a step executes. After the
step executes, TestStand automatically copies the contents of the Result
subproperty for the step into the step result.
Each step type can define different contents for its Result subproperty, and
TestStand can append step results that contain Result properties from
different step types to the same ResultList array. When TestStand copies the
Result property for a step to its step result, it also adds the name of the step,
its position in the sequence, and other identifying information. For a step
that calls a subsequence, TestStand also adds the ResultList array variable
from the subsequence.
Through the TestStand API, a process model can request that TestStand
insert additional step properties in the step results for all steps
automatically. A code module can also use the TestStand API to insert
additional step result information for a particular step.
3-7
Chapter 3
Executions
Refer to the NI TestStand Help for more information about the Step
Settings pane, Sequence Properties dialog box, and the Station Options
dialog box.
Error.Code
All
Error.Msg
All
Error.Occurred
All
Status
All
Common
All
Numeric
PassFail
Limits.String
ButtonHit
Message Popup
Response
Message Popup
ExitCode
Call Executable
NumPropertiesRead
Property Loader
NumPropertiesApplied
Property Loader
ReportText
All
Limits.Low
Limits.High
3-8
ni.com
Chapter 3
Executions
Table 3-1. Custom Properties in the Step Results for Steps that
Use the Built-In Step Types (Continued)
Comp
Measurement
AsyncID
Sequence Call
AsyncMode
Sequence Call
Note Table 3-1 does not include the result properties for Synchronization, IVI, Database,
or LabVIEW utility step types. For more information about these step types, refer to
Appendix B, Synchronization Step Types; Appendix C, Database Step Types;
Appendix D, IVI-C Step Types; and Appendix E, LabVIEW Utility Step Types.
In the case of the Numeric Limit Test and the String Value Test, the
Limits.Low, Limits.High, Limits.String, and Comp properties are not
subproperties of the Result property. Therefore, TestStand does not
automatically include these properties in the step result. Depending
on options you set during the step configuration, the default process
model uses the TestStand API to include the Limits.Low, Limits.High,
Limits.String, and Comp properties in the step results for Numeric Limit
Test and String Value Test steps that contain these properties.
For the Sequence Call step type, the AsyncID and AsyncMode properties
are not subproperties of the Result property. TestStand adds these
properties to the step results for Sequence Call steps that call subsequences
asynchronously.
The Common result subproperty uses the CommonResults custom data
type. The Common property is a subproperty of the Result property for
every built-in step type. Consequently, you can add a subproperty to the
result of every step type by adding a subproperty to the definition of the
CommonResults custom data type.
Be aware that if you modify CommonResults without incrementing the
type version number, you may see a type conflict when you open other
sequence files. These conflicts can include FrontEndCallbacks.seq
when you are logging in or out. TestStand will automatically prompt you to
increment the version number when saving changes to any data type or
step type.
3-9
Chapter 3
Executions
Description
TS.StartTime
TS.TotalTime
TS.ModuleTime
TS.Index
TS.StepName
TS.StepGroup
Step group that contains the step. The values are Main, Setup,
or Cleanup.
TS.StepId
TS.Id
TS.InteractiveExeNum
TS.StepType
TS.Server
3-10
ni.com
Chapter 3
Executions
Description
TS.StepCausedSequenceFailure
This property exists only if the step fails. The value is True if
the step failure causes the sequence to fail. The value is False
if the step failure does not cause the sequence to fail or if the
sequence has already failed.
TS.BlockLevel
Subsequence Results
If a step calls a subsequence or generates a call to a callback sequence,
TestStand creates a special step result subproperty to store the result of the
subsequence unless the callback or sequence disables results. Table 3-3
lists the name of the subproperty for each type of subsequence call.
Table 3-3. Property Names for Subsequence Results
TS.SequenceCall
Sequence Call
TS.PostAction
TS.SequenceFilePreStep
SequenceFilePreStep Callback
TS.SequenceFilePostStep
SequenceFilePostStep Callback
TS.ProcessModelPreStep
ProcessModelPreStep Callback
TS.ProcessModelPostStep
ProcessModelPostStep Callback
TS.StationPreStep
StationPreStep Callback
TS.StationPostStep
StationPostStep Callback
TS.SequenceFilePreInteractive
SequenceFilePreInteractive Callback
TS.SequenceFilePostInteractive
SequenceFilePostInteractive Callback
TS.ProcessModelPreInteractive
ProcessModelPreInteractive Callback
TS.ProcessModelPostInteractive
ProcessModelPostInteractive Callback
TS.StationPreInteractive
StationPreInteractive Callback
TS.StationPostInteractive
StationPostInteractive Callback
TS.SequenceFilePostResultListEntry
SequenceFilePostResultListEntry Callback
3-11
Chapter 3
Executions
TS.ProcessModelPostResultListEntry
ProcessModelPostResultListEntry Callback
TS.StationPostResultListEntry
StationPostResultListEntry Callback
TS.SequenceFilePostStepRuntimeError
SequenceFilePostStepRuntimeError Callback
TS.ProcessModelPostStepRuntimeError
ProcessModelPostStepRuntimeError Callback
TS.StationPostStepRuntimeError
StationPostStepRuntimeError Callback
TS.SequenceFilePostStepFailure
SequenceFilePostFailure Callback
TS.ProcessModelPostStepFailure
ProcessModelPostFailure Callback
TS.StationPostStepFailure
StationFilePostFailure Callback
Loop Results
When you configure a step to loop, you can use the Record Result of Each
Iteration option on the Looping panel of the Step Settings pane to direct
TestStand to store a separate result for each loop iteration in the result list.
In the result list, the results for the loop iterations come immediately after
the result for the step as a whole.
TestStand adds a TS.LoopIndex numeric property to each loop iteration
result to record the value of the loop index for that iteration. TestStand also
adds the following special loop result properties to the main result for the
step.
3-12
ni.com
Chapter 3
Executions
Report Generation
When you run a sequence using the Test UUTs or Single Pass Execution
entry point, the default process model generates the test report by traversing
the results for the Main sequence in the client sequence file and all of the
subsequences it calls.
Refer to the Process Models section of Chapter 1, TestStand Architecture;
Chapter 10, Customizing Process Models and Callbacks; and Appendix A,
Process Model Architecture, for more information about process models.
Refer to Chapter 6, Database Logging and Report Generation, for more
information about report generation.
Engine Callbacks
TestStand specifies a set of callback sequences that it invokes at specific
points during execution. These callbacks are called Engine callbacks.
Engine callbacks are a way for you to tell TestStand to call certain
sequences before and after the execution of individual steps, before and
after interactive executions, after loading a sequence file, and before
unloading a sequence file. Because the TestStand Engine controls the
execution of steps and the loading and unloading of sequence files,
TestStand defines the set of Engine callbacks and their names.
Refer to Chapter 10, Customizing Process Models and Callbacks, for more
information about Engine callbacks.
Step Execution
Depending on the options you set during step configuration, a step
performs a number of actions as it executes. Table 3-4 lists the most
common actions that a step can take, in the order that the step performs
them.
3-13
Chapter 3
Executions
Action Number
Description
Remarks
Evaluate precondition
If option is set
Only if looping
Only if looping
10
Only if looping
11
12
Evaluate Pre-Expression
13
14
Call module
15
16
Evaluate Post-Expression
17
18
3-14
If option is set
If False, perform Action
Number 25, then proceed to Action
Number 29
ni.com
Chapter 3
Executions
Action Number
Description
Remarks
19
20
Only if looping
21
Only if looping
22
Only if looping
23
Only if looping
24
25
26
27
28
29
If option is set
30
If option is set
31
32
3-15
Chapter 3
Executions
Step Status
Every step in TestStand has a Result.Status property. The status property is
a string that indicates the result of the step execution. Although TestStand
imposes no restrictions on the values to which the step or its code module
can set the status property, TestStand and the built-in step types use and
recognize the values that appear in Table 3-5.
Table 3-5. Standard Values for the Status Property
String Value
Meaning
Source of the
Status Value
Passed
Failed
Error
TestStand
Done
TestStand
Terminated
Indicates that the step did not set the status and a
request to terminate the execution occurred while
executing the step. When a status of terminated
is returned to a calling sequence and the Ignore
Termination option on the Run Options panel of the
Step Settings pane for a Sequence Call step is enabled,
the request to terminate the execution is not returned
and the step status is set to terminated. If in this
scenario, the Ignore Termination option is not enabled,
the Sequence Call step status is set to a non-terminating
status and the request for termination is returned to the
calling sequence invocation.
TestStand
Indicates that the step did not execute because the run
mode for the step is Skip.
TestStand
Running
TestStand
Looping
TestStand
3-16
ni.com
Chapter 3
Executions
Failures
TestStand considers a step to have failed if the step executes and the step
status is Failed. If you enable the Step Failure Causes Sequence Failure
option on the Run Options panel of the Step Settings pane, TestStand sets
the sequence status to Failed when the step fails. When the sequence
returns as Failed, the Sequence Call step also fails. In this way, a step
failure in a subsequence can propagate up through the chain of Sequence
Call steps.
Note For most step types, the Step Failure Causes Sequence Failure option is enabled by
default.
You can also control how execution proceeds after a step failure causes a
sequence to fail. To configure an execution to jump to the Cleanup step
group upon failure, enable the Immediately Goto Cleanup on Sequence
Failure option in the Sequence Properties dialog box. By default, this
option is disabled.
Terminations
When you request to terminate an execution, the currently executing
sequence invocation for each thread immediately calls the Cleanup step
group. When a terminating subsequence returns to a calling sequence, the
calling sequence continues the termination process down the call stack
unless the Ignore Termination option on the Run Options panel of the Step
Settings pane is enabled for the Sequence Call step. If enabled, the
termination of the execution is ignored for that thread and the thread
execution continues normally. If the request to terminate the execution is
returned to the root sequence invocation, TestStand sets the result status for
the execution to Terminated.
Run-Time Errors
TestStand generates a run-time error if it encounters a condition that
prevents a sequence from executing. If, for example, a precondition refers
to the status of a step that does not exist, TestStand generates a run-time
error when it attempts to evaluate the precondition. TestStand also
generates a run-time error when a code module causes an access
violation or any other exception.
3-17
Chapter 3
Executions
TestStand does not use run-time errors to indicate UUT test failures.
Instead, a run-time error indicates that a problem exists with the testing
process itself and that testing cannot continue. Usually, a code module
reports a run-time error if it detects an error in a hardware or software
resource that it uses to perform a test.
TestStand allows you to decide interactively how to handle a run-time error.
To interactively handle a run-time error, configure TestStand to launch the
Run-Time Error dialog box in the event of an error by selecting Show
Dialog from the On Run-Time Error ring control on the Execution tab on
the Station Options dialog box. Refer to the NI TestStand Help for more
information about the Station Options and Run-Time Error dialog boxes.
TestStand also allows you to invoke a PostStepRunTimeError callback
when a run-time error occurs. Refer to Chapter 10, Customizing Process
Models and Callbacks, for more information about Engine callbacks.
3-18
ni.com
This chapter describes the core set of built-in step types that TestStand
provides and groups them into the following categories:
Step types that you can use with any module adapter. Step types such
as the Numeric Limit Test and the String Value Test call any code
module you specify. They also might perform additional actions, such
as comparing a value the code module returns with limits you specify.
Step types that always use a specific module adapter to call code
modules. Sequence Call is the only step type in this category.
Step types that perform a specific action and do not require you to
specify a code module. Step types such as Message Popup, Statement,
and Flow Control perform actions that you configure in an edit tab or
edit dialog box that is specific to the step type.
Note TestStand also includes sets of application-specific step types. For example,
TestStand provides sets of step types that make it easier to synchronize multiple threads,
access databases, control IVI instruments, and access VIs and remote systems. For more
information about these step types, refer to Appendix B, Synchronization Step Types;
Appendix C, Database Step Types; Appendix D, IVI-C Step Types; and Appendix E,
LabVIEW Utility Step Types.
Overview
This section describes general features of built-in step types.
4-1
Chapter 4
When you insert a step type from the Insertion Palette or the context menu,
TestStand creates a step using the step type and the currently selected
module adapter indicated in the Insertion Palette or toolbar. After you insert
the step, select Specify Module from the context menu to specify the code
module or sequence, if any, that the step calls. The Specify Module
command displays a Module tab on the Step Settings pane that is different
for each adapter. Refer to Chapter 5, Adapters, and the NI TestStand Help
for information about the Module tab for each adapter.
For each step type, other items can appear in the context menu above the
Specify Module item. For example, the Edit Limits item appears in the
4-2
ni.com
Chapter 4
context menu for Numeric Limit Test steps, and the Edit Data Source item
appears in the context menu for Pass/Fail Test steps. Select the menu item
to display a step-type-specific pane or launch a step-type-specific dialog
box, in which you can modify step properties that are specific to the step
type. Refer to the NI TestStand Help for information about the menu item
for each of the built-in step types.
To modify step properties that are common to all step types, select the
Properties tab on the Step Settings pane. Refer to the NI TestStand Help for
more information about the Step Settings pane.
Note The Insertion Palette also contains a Templates list which you use to hold copies of
sequences, steps, and variables that you reuse during the development of sequence files.
Refer to the NI TestStand Help for more information about the Templates list of the
Insertion Palette.
General Panel
4-3
Chapter 4
Some run-time errors can place your system in a bad state and continuing with
the execution can result in an undefined behavior.
Caution
Looping Panel
Switching Panel
Synchronization Panel
4-4
ni.com
Chapter 4
Expressions Panel
Preconditions Panel
Specifies the conditions that must be True for TestStand to execute the step
during the normal flow of execution in a sequence.
Requirements Panel
Notates product and unit requirements that a step covers.
4-5
Chapter 4
When a step finishes execution and the error occurred flag is True, the
TestStand Engine responds as follows:
4-6
ni.com
Chapter 4
Step Types That You Can Use with Any Module Adapter
TestStand comes with five built-in step types that you can use with any
module adapter: Pass/Fail Test, Numeric Limit Test, Multiple Numeric
Limit Test, String Value Test, and Action. When you insert a step in a
sequence, you must select a module adapter in the Step Types list of the
Insertion Palette or from the Adapter ring control, which is located on the
sequence editor toolbar. TestStand then assigns the adapter you selected
when you insert the step.
The icon for the adapter appears as the icon for the step. The icons for the
different adapters are as follows:
LabVIEW Adapter
LabWindows/CVI Adapter
C/C++ DLL Adapter
.NET Adapter
ActiveX/COM Adapter
HTBasic Adapter
Sequence Adapter
<None>
If you choose the <None> adapter, the step does not call a code module.
Note Once you add a step, you can change the adapter associated with the selected step
4-7
Chapter 4
Pass/Fail Test
Use a Pass/Fail Test step to call a code module that makes its own pass/fail
determination.
After the code module executes, the Pass/Fail Test step type evaluates the
Step.Result.PassFail property. If Step.Result.PassFail is True, the step type
sets the step status to Passed. If Step.Result.PassFail is False, the step
type sets the step status to Failed.
The following are the different ways that a code module can set the value
of Step.Result.PassFail:
By default, the step type uses the value of the Step.Result.PassFail Boolean
property to determine whether the step passes or fails. To customize
the Boolean expression that determines whether the step passes, select
Edit Data Source from the context menu for the step or click the Data
Source tab on the Step Settings pane.
4-8
ni.com
Chapter 4
In addition to the common custom properties, the Pass/Fail Test step type
defines the following step properties:
4-9
Chapter 4
By default, the step type uses the value of the Step.Result.Numeric property
as the numeric measurement to compare the limits against.
The Numeric Limit Test step type defines the following step properties in
addition to the common custom properties:
4-10
ni.com
Chapter 4
You can use a Numeric Limit Test step without a code module. This
practice is useful when you want to limit-check a value that you already
have acquired. To set up this limit-check, select <None> as the module
adapter before you insert the step in the sequence and configure
Step.DataSource to specify the value that you have already acquired.
For more information about the Numeric Limit Test edit tabs, refer to the
NI TestStand Help.
4-11
Chapter 4
4-12
ni.com
Chapter 4
By default, the step type uses the value of the Step.Result.String property
as the string value to compare the limits against.
Refer to the NI TestStand Help for more information about the String Value
Test edit tabs.
4-13
Chapter 4
In addition to the common custom properties, the String Value Test step
type defines the following step properties:
You can use a String Value Test step without a code module. This is useful
to test a string that you have already acquired. To set up this test, select
<None> as the module adapter before you insert the step in the sequence
and configure Step.DataSource to specify the string you already have
acquired.
4-14
ni.com
Chapter 4
Action
Use Action steps to call code modules that do not perform tests but, instead,
perform actions necessary for testing, such as initializing an instrument.
By default, Action steps do not pass or fail. The step type does not modify
the step status. Therefore, the status for an Action step is Done or Error
unless your code module specifically sets another status for the step or the
step calls a subsequence that fails. When an action uses the Sequence
Adapter to call a subsequence and the subsequence fails, the Sequence
Adapter sets the status of the step to Failed.
The Action step type does not define any additional step properties other
than the custom properties that all steps contain.
Sequence Call
Use a Sequence Call step to call another sequence in the current sequence
file or in another sequence file. A Sequence Call step always uses the
Sequence Adapter.
You can use the Sequence Adapter with other step types, such as the
Pass/Fail Test or the Numeric Limit Test. Using a Sequence Call step is the
same as using an Action step with the Sequence Adapter, except that the
Sequence Call step type sets the step status to Passed rather than Done
when the subsequence succeeds. If the sequence fails, the Sequence
Adapter sets the Sequence Call step status to Failed. A sequence fails if
the status for a step in the sequence is Failed and you have enabled the
Step Failure Causes Sequence Failure option on the Run Options panel of
the Step Settings pane. If a run-time error occurs in the subsequence, the
Sequence Adapter sets the step status to Error.
Note You can enable or disable the Step Failure Causes Sequence Failure option on the
4-15
Chapter 4
TestStand adds the following properties to the results for Sequence Call
steps that are configured to run the sequence in a new thread or execution.
These properties are not subproperties of the Result property for the
Sequence Call step type.
Note By default, the Sequence Adapter is hidden in the Adapter ring control. To enable it,
select ConfigureAdapters from the TestStand menu bar and remove the checkmark from
the checkbox in the Hidden column.
Flow Control
Use Flow Control steps to control execution flow within a sequence. The
Steps pane automatically inserts steps that complete the flow control block,
such as inserting a Case and End step when you insert a Select step. The
Steps pane also indents flow control blocks and highlights errors in flow
control. Refer to the NI TestStand Help for more information about the edit
tabs for the Flow Control step types.
If
Use If steps to define a block of steps that execute if a condition is met.
In addition to the common custom properties, the If step type defines the
following step property:
4-16
ni.com
Chapter 4
Else
Use Else steps to define a block of steps that execute if the condition
defined by the preceding If or Else If step is not met.
Else If
Use Else If steps to define a block of steps that execute if a condition is met
and the conditions defined by the preceding If step and any preceding Else
If step are not met.
In addition to the common custom properties, the Else If step type defines
the following step property:
For
Use For steps to define a block of steps that execute repeatedly for a
number of iterations.
In addition to the common custom properties, the For step type defines the
following step properties:
4-17
Chapter 4
For Each
Use For Each steps to define a block of steps that execute once for each
element in an array.
In addition to the common custom properties, the For Each step type
defines the following step properties:
While
Use While steps to define a block of steps that execute while a condition
is True.
In addition to the common custom properties, the While step type defines
the following step property:
Do While
Use Do While steps to define a block of steps that execute once and then
repeatedly while a condition is True.
In addition to the common custom properties, the Do While step type
defines the following step property:
Break
Use a Break step to cause a For, For Each, While, or Do While loop block
or a Case block to exit before completing.
4-18
ni.com
Chapter 4
Continue
Use a Continue step to cause the next iteration of an enclosing For, For
Each, While, or Do While loop block to begin.
Select
Use a Select step to define a block of steps that encloses sub-blocks defined
by Case steps. The Select step specifies an expression that determines
which Case block executes.
In addition to the common custom properties, the Select step type defines
the following step property:
Case
Use a Case step to define a block of steps within a Select block that
executes if the expression specified by the Select step evaluates to a certain
value.
In addition to the common custom properties, the Case step type defines the
following step properties:
Goto
Use Goto steps to set the next step that the TestStand Engine executes. You
usually use a Label step as the target of a Goto step, which allows you to
rearrange or delete other steps in a sequence without having to change the
specification of targets in Goto steps.
Refer to the NI TestStand Help for more information about the Destination
edit tab.
End
Use an End step to define the end of any block of steps.
4-19
Chapter 4
Statement
Use Statement steps to execute expressions. For example, you can use a
Statement step to increment the value of a local variable in a sequence.
By default, Statement steps do not pass or fail. If the step cannot evaluate
the expression or if the expression sets Step.Result.Error.Occurred to True,
TestStand sets the step status to Error. Otherwise, it sets the step status
to Done.
Refer to the NI TestStand Help for more information about the Expression
edit tab.
The Statement step type does not define any additional step properties other
than the custom properties that are common to all steps.
Label
Use a Label step as the target for a Goto step. Label steps allows you to
rearrange or delete other steps in a sequence without having to change the
specification of targets in Goto steps.
Label steps do not pass or fail and by default do not record results. After a
Label step executes, the TestStand Engine sets the step status to Done or
Error. You can edit a Label step to specify a description that appears next
to the Label step name in the sequence editor.
In addition to the common custom properties, the Label step type defines
one step property:
Refer to the NI TestStand Help for more information about the Label edit
tab.
Message Popup
Use Message Popup steps to display messages to the operator and to
receive response strings from the operator. For example, you can use a
Message Popup step to warn the operator when a calibration routine fails.
By default, Message Popup steps do not pass or fail. After a step executes,
TestStand sets the step status to Done or Error.
Refer to the NI TestStand Help for more information about the Message
Popup step edit tab.
4-20
ni.com
Chapter 4
In addition to the common custom properties, the Message Popup step type
defines the following step properties:
4-21
Chapter 4
Call Executable
Use Call Executable steps to launch an application or run a system
command. For example, you can use a Call Executable step to call a system
command to copy files to a network drive.
The final status of a Call Executable step depends on whether the step waits
for the executable to exit. If the step does not wait for the executable to exit,
the step type always sets the step status to Done. If a timeout occurs while
the step is waiting for the executable to exit, the step type sets the status to
Error. If the step waits for the executable to exit and a timeout does not
occur, the step type sets the step status to Done, Passed, or Failed,
depending on the status action you specify in the Exit Code Status Action
ring control on the Call Executable edit tab for that step. If you set the Exit
Code Status Action ring control to No Action, the step type always sets the
step status to Done. Otherwise, you can choose to set the step status to
Failed based on whether the exit code is less than zero, greater than zero,
equal to zero, or not equal to zero.
Refer to the NI TestStand Help for more information about the Call
Executable edit tab.
4-22
ni.com
Chapter 4
In addition to the common custom properties, the Call Executable step type
defines the following step properties:
Property Loader
Refer to Appendix C, Database Step Types, for more information about the
Property Loader step. Refer to the NI TestStand Help for more information
about the Edit Property Loader dialog box.
4-23
Chapter 4
FTP Files
Use a FTP Files step to transfer files between the local system and an FTP
server.
In addition to the common custom properties, the FTP Files step type
defines the following step properties:
Refer to the NI TestStand Help for more information about the FTP Files
edit tab.
4-24
ni.com
Adapters
This chapter describes the module adapters available in TestStand and how
to use them.
Module Adapters
The TestStand Engine uses a module adapter to invoke the code in a code
module, which is called from a TestStand sequence. Each module adapter
supports one or more specific types of code modules, which include
LabVIEW VIs; LabWindows/CVI functions in source files, object files, or
library modules that you create in LabWindows/CVI or other compilers;
C/C++ functions in DLLs; .NET assemblies; ActiveX automation servers;
and HTBasic subroutines. A module adapter knows how to load and call a
code module, how to pass parameters to a code module, and how to return
values and status from a code module.
When you edit a step that uses a module adapter, TestStand relies on the
adapter to display the Module tab of the Step Settings pane, in which you
specify the code module for the step and also specify any parameters to pass
when you invoke the code module.
TestStand stores the name and location of the code module, the parameter
list, and any additional options as properties of the step. TestStand hides
most of these adapter-specific step properties.
In some cases, if the module adapter is specific to an application
development environment (ADE), the adapter knows how to open the ADE,
how to create source code for a new code module in the ADE, and how to
display the source for an existing code module in the ADE. Some adapters
support stepping into the source code in the ADE while you execute the
step from the TestStand Sequence Editor or user interfaces.
Configuring Adapters
You can configure most of the module adapters by selecting Configure
Adapters from the sequence editor menu. Refer to the NI TestStand Help
for more information about configuring adapters.
5-1
Chapter 5
Adapters
LabVIEW Adapter
The LabVIEW Adapter allows you to call LabVIEW VIs with a variety of
connector panes. Refer to the NI TestStand Help for more information
about the LabVIEW Module tab and passing parameters between
TestStand and VIs. Refer to the Using LabVIEW with TestStand manual for
additional information about using the LabVIEW Adapter, supported data
types, and tutorials that use the adapter.
LabWindows/CVI Adapter
The LabWindows/CVI Adapter allows you to call C functions with a
variety of parameter types. The function can exist in an object file, library
file, or DLL. The function can also exist in a source file that is located in the
project that you are currently using in the LabWindows/CVI development
environment.
Refer to the Using and Debugging DLLs section of this chapter for more
information about debugging DLLs built with LabWindows/CVI. Refer to
the NI TestStand Help for more information about the LabWindows/CVI
Module tab and about passing parameters between TestStand and code
modules. Refer to the Using LabWindows/CVI with TestStand manual for
additional information about the LabWindows/CVI Adapter and tutorials
that use the adapter.
5-2
ni.com
Chapter 5
Adapters
5-3
Chapter 5
Adapters
Note Be sure to save your sequence files before you stop debugging. If you stop
debugging, most ADEs will terminate the TestStand process without prompting you
to save modified files in TestStand.
If you suspend a sequence on a step that calls a DLL that you can debug,
you can click Step Into in TestStand on the step to suspend at the first
statement in the DLL function within LabWindows/CVI or Visual
Studio 2005.
To step into a code module with LabWindows/CVI, you must configure the
step to use the LabWindows/CVI Adapter. You can step into a code module
when the LabWindows Adapter is configured to execute steps in-process or
in an external instance of LabWindows/CVI.
To step into a DLL with Visual Studio 2005, you must configure the step
to use the C/C++ DLL Adapter and you must have installed National
Instruments Measurement Studio 8.0.1 (or later) Enterprise Edition. If
you attempt to step into a DLL while Visual Studio is not attached to the
TestStand process, TestStand launches Visual Studio and automatically
attaches to the TestStand process using native debugging.
Note TestStand does not support step into when debugging the process with
Visual Studio .NET 2003, or when the process loads the .NET Framework 1.1 and you are
debugging with Visual Studio 2005.
Table 5-1 describes your options for stepping out of a LabWindows/CVI
or Visual Studio DLL function that you are debugging.
Table 5-1. Options for Stepping Out of DLL Functions
Result in TestStand
Execution of the function. When you use this command on the
last function in the call stack, TestStand suspends execution on
the next step in the sequence.
5-4
ni.com
Chapter 5
Adapters
Result in TestStand
When you use this command on the last executable statement of
the function, TestStand suspends execution on the next step in
the sequence.
If the Step Over command executes on an END step in a
Pre-Step callback, TestStand attempts to step into the code
module.
Continue
5-5
Chapter 5
Adapters
1.
The directory that contains the DLL that the adapter is calling directly
2.
3.
4.
5.
6.
5-6
ni.com
Chapter 5
Adapters
For backwards compatibility, when the C/C++ DLL Adapter fails to load a
DLL, the adapter temporarily sets the current working directory to be the
directory of the DLL and attempts to load subordinate DLLs using the
following deprecated search directory precedence:
1.
The directory that contains the application that loaded the adapter
2.
3.
4.
5.
The current working directory of the application, which the adapter has
set to the directory that contains the DLL it is calling directly
(Windows XP SP2 and later)
6.
Note National Instruments does not recommend placing subordinate DLLs in the
directory containing the application that loaded the adapter, and may not support loading
DLLs from this location in future versions.
.NET Adapter
The .NET Adapter allows you to call .NET assemblies written in any
.NET-compliant language, such as C# or Visual Basic .NET. You must
have the .NET Framework 2.0 or later installed to use the .NET Adapter.
5-7
Chapter 5
Adapters
With the .NET Adapter, you can create instances of classes and structs, and
you can call methods and access properties or fields on classes and structs.
With an instance of a class that was either previously created and stored in
an object reference variable or created in the calling step, you can call or
access all non-static public members. An instance is not required to call or
access static public members. When you call a struct, the definition can also
be stored in a variable of a data type that is mapped to the struct members
or initialized in the calling step.
The .NET Adapter does not support creating or calling methods on generic
classes.
You can create and edit .NET code modules in Visual Studio directly from
TestStand if you install National Instruments Measurement Studio 8.0.1
(or later) Enterprise Edition.
Refer to the NI TestStand Help for more information about using the .NET
Module tab to configure calls to .NET assemblies.
Studio may terminate the TestStand process without prompting you to save modified files
in TestStand. Save your sequence files and workspace before you stop debugging and
terminate the process.
If you are debugging a .NET assembly in the TestStand process using
Visual Studio 2005 or later and you have Measurement Studio 8.0.1
(or later) Enterprise Edition installed, you can click Step Into in TestStand
on a step that calls into the assembly to suspend Visual Studio at the first
statement in the assembly method or property.If you attempt to step into an
assembly while the Visual Studio is not attached to the TestStand process,
TestStand launches Visual Studio and automatically attaches to the
TestStand process using managed debugging.
Note When you debug managed code in a TestStand process with Visual Studio,
TestStand will not unload assemblies when you select FileUnload All Modules.
5-8
ni.com
Chapter 5
Adapters
Note You cannot debug managed code that the .NET Adapter calls using Visual Studio
.NET 2003 or using Visual Studio 2005 when the process loads the .NET Framework 1.1.
Table 5-2 describes your options for stepping out of a Visual Studio
assembly that you are debugging.
Table 5-2. Options for Stepping Out of Assemblies in Visual Studio
Result in TestStand
Step Out
Executes the function. When you use this command on the last
function in the call stack, TestStand suspends execution on the
next step in the sequence.
Continue
cannot debug a .NET assembly at the same time. If you are using Visual Studio to debug
an assembly in TestStand and you want to use LabWindows/CVI to debug code modules
at the same time, you must configure the LabWindows/CVI Adapter to execute the steps
out-of-process.
Note When you debug a TestStand process with Visual Studio, TestStand will not unload
Framework 1.1 and you are debugging with Visual Studio 2005, or when the process loads
Microsoft .NET Framework 2.0 and you are debugging with Visual Studio .NET 2003.
5-9
Chapter 5
Adapters
5-10
ni.com
Chapter 5
Adapters
5-11
Chapter 5
Adapters
ActiveX/COM Adapter
The ActiveX/COM Adapter allows you to create objects, call methods, and
access properties of ActiveX/COM objects. When you create an object, you
can assign the object reference to a variable or property for later use in other
ActiveX/COM Adapter steps. When you call methods and access
properties, you can specify an expression for each input and output
parameter.
Refer to the NI TestStand Help for more information about configuring
calls to ActiveX/COM servers.
rebuilding a DLL ActiveX server after a TestStand step uses the server. When TestStand
requests that the operating system unload the ActiveX server, the operating system ignores
the request and keeps the ActiveX server in memory, which prevents the development
environment from rebuilding the DLL. You must exit the TestStand application to release
the ActiveX DLL server.
5-12
ni.com
Chapter 5
Adapters
5-13
Chapter 5
Adapters
Note National Instruments does not recommend the use of the No compatibility setting
Note Use the Project compatibility option only after you have built the server DLL or
executable.
Note National Instruments recommends that you configure the ActiveX/COM Adapter to
use late binding when you create a server using the Project compatibility option.
Note Use the Binary compatibility option only after you have built the server DLL or
use early binding when you create a server with this option.
National Instruments makes the following additional recommendations
regarding the use of the Visual Basic ActiveX/COM server in conjunction
with development of sequences within TestStand. These approaches ensure
that the ActiveX/COM Adapter can properly find and invoke the server
after you recompile the server.
5-14
ni.com
Chapter 5
Adapters
Use the following approach while you develop and debug sequences:
Use the following approach when the interface for the server is
completely developed and debugged:
After you properly assign the new server identifiers to the steps,
you can enable the ActiveX/COM Adapter to use early binding.
HTBasic Adapter
The HTBasic Adapter allows you to call HTBasic subroutines without
passing parameters directly to a subroutine. Instead, the subroutine
exchanges data by calling get or set subroutines contained in an HTBasic
CSUB. These subroutines use the TestStand API to get data from and set
data in TestStand. For more information about using these subroutines,
refer to the Passing Data To and Returning Data From a Subroutine
section of this chapter.
5-15
Chapter 5
Adapters
Sequence Adapter
The Sequence Adapter allows you to pass parameters when you make a call
to a subsequence. You can call a subsequence in the current sequence file
or in another sequence file, and you can make recursive sequence calls.
For subsequence parameters, you can specify a literal value, pass a variable
or property by reference or by value, or use the default value that the
subsequence defines for the parameter.
You can use the Sequence Adapter from any step type that can use module
adapters, such as the Pass/Fail Test or the Numeric Limit Test. This is
similar to using the Sequence Call built-in step type, except that the
Sequence Call step sets the step status to Passed instead of Done if no
failure or error occurs.
After the Sequence Call step executes, the Sequence Adapter may set the
step status. If the sequence that the step calls fails, the adapter sets the step
status to Failed. If no run-time error occurs, the adapter does not set the
step status. The resulting status is Done or Passed, depending on the type
of step. If a run-time error occurs in the sequence, the adapter sets the step
status to Error and sets the Result.Error.Occurred property to True. The
adapter also sets the Result.Error.Code and Result.Error.Msg properties to
the values of the same properties in the subsequence step that generated the
run-time error.
5-16
ni.com
Chapter 5
Adapters
You can define the parameters for a sequence on the Variables pane in the
Sequence File window. The Variables pane defines each parameter name,
its TestStand data type, its default value, and whether you pass the
argument by value or by reference. For more information about sequence
file parameters, refer to the NI TestStand Help.
Type
of Path
Where Found
When You Edit
Where Found
When You Execute
Example
Relative
In the TestStand
search paths that
you configure on
the client (local)
machine.
In the TestStand
search paths that you
configure on the server
(remote) machine.
Transmit.seq
Absolute
On the client
(local) machine.
C:\Projects\Transmit.seq
Network
On the machine
specified in the
network path.
On the machine
specified in the
network path.
\\Remote\Transmit.seq
When you specify a sequence file pathname in the Sequence Module tab
and specify Use Remote Computer in the Execution Options section,
TestStand locates the sequence file according to the type of path, as
described in Table 5-3.
When you edit a step in a sequence file on a client machine and you specify
an absolute or relative path for the sequence file the step calls, TestStand
resolves the path for the sequence file on the client machine. When you run
the step on the client machine, TestStand resolves the path for the sequence
file on the server system.
5-17
Chapter 5
Adapters
Choose one of the following three ways to manage your remote sequence
files for remote execution:
Add a common pathname to the search paths for the client and the
server so that each resolves to the same relative pathname.
Duplicate the files on your client and server machine so that the client
edits an identical file to the file that the server runs.
Use absolute paths that specify a mapped network drive or full network
path so that the file that the client machine edits and the file the server
runs are the same sequence file.
5-18
ni.com
Chapter 5
Adapters
You can close remote engine applications from your system tray by
enabling the Show the System Tray Icon While the TestStand Remote
System is Active on this Machine option on the Station Options dialog
box for the remote system. This option makes the TestStand icon visible in
the system tray for each instance of the remote engine application. The
tooltip for the icon indicates which computer is connected to the remote
engine. Right-click the TestStand icon to display when the engine was
created or to force the remote engine application to close.
TestStand automatically registers the server during installation. To
manually register or unregister the server, invoke the executable with
the /RegServer or /UnregServer command-line arguments.
Before a client can communicate with a server, you must configure
the security permissions of the Windows system for the server. For
Windows XP SP2, you must also configure the Windows Firewall.
Tip To minimize the configuration of security permissions, enable the Allow All Users
Access From Remote Machines option on the Station Options dialog box. When you
enable this option, TestStand configures the security permissions for you by adding the
name Everyone for Windows 2000 SP4 and the name ANONYMOUS LOGON for
Windows XP SP2 to the list of users who have permission to access and launch the
TestStand remote server. When you disable this option, TestStand removes the names from
the list.
2.
3.
In the left pane of the Component Services window, expand the tree
view to show Component ServicesComputersMy Computer.
4.
5.
5-19
Chapter 5
Adapters
Note Changing the value of the Enable Distributed COM on this computer option
requires you to reboot your computer.
6.
b.
7.
8.
9.
Specify the default security on the Default COM Security tab on the
My Computer Properties dialog box.
Give individual users access to the server. Use the Security tab on the
NI TestStand Remote Engine Properties dialog box to configure the
permissions for a specific server.
5-20
ni.com
Chapter 5
Adapters
2.
3.
You have the option of disabling the firewall if you click Off, or you
can add exceptions for the REngine.exe application. If you enable the
firewall, complete the following steps to add the necessary exceptions:
a.
b.
c.
Click the Add Port button to launch the Add a Port dialog box. In
the Name control, type DCOM. In the Port Number control, type
135. Select the TCP radio button and click OK to close the Add
a Port dialog box.
2.
3.
Note Changing the value of the Enable Distributed COM on this computer option
requires you to reboot your computer.
4.
5.
5-21
Chapter 5
Adapters
You must give permission to the appropriate users so that they can access
the remote server. You should give access permissions to everyone, but give
launch permission only to users who should be able to launch the server.
You can set these permissions in one of the following ways:
5-22
ni.com
Database Concepts
This section summarizes key database concepts that are important for using
databases with TestStand. It also summarizes the key Windows features
TestStand uses to communicate with a DBMS.
6-1
Chapter 6
You can use database tables to store many different types of data. Table 6-1
contains columns for the UUT number, a step name, a step result, and a
measurement. The order of the data in the table is not important. Ordering,
grouping, and other manipulations of the data occur when you retrieve the
data from the table.
Table 6-1. Example Database Table
UUT_NUM
STEP_NAME
RESULT
MEAS
20860B456
TEST1
PASS
0.5
20860B456
TEST2
PASS
(NULL)
20860B123
TEST1
FAIL
0.1
20860B789
TEST1
PASS
0.3
20860B789
TEST2
PASS
(NULL)
A row can contain an empty column value, which means that the specific
cell contains a NULL value, also referred to as a SQL Null value.
Use an SQL SELECT command, or query, to retrieve records from a
database. The result of a query is called a record set or SQL Statement data.
The data you receive does not necessarily reflect the entire contents of any
particular table in the database. For instance, you can retrieve only selected
columns and rows from one table, or you can retrieve data that is a
combination of the contents of multiple tables. The query defines the
contents and order of the data. You can refer to each column you retrieve
by the name of the column or by a one-based number that refers to the order
of the column in the query.
6-2
ni.com
Chapter 6
Database Sessions
Database operations occur within a database session. A simple session
follows this order:
1.
2.
3.
Fetch data from and store data to the open database tables.
4.
5.
6-3
Chapter 6
TestStand
Engine
Process Model
Sequence
Database
Logger
Main
Sequences
Database
Steps
ADO
OLE DB
OLE DB Providers
Access
Provider
SQL Server
Provider
Oracle Server
Provider
ODBC
Provider
Future
Providers
ODBC
Drivers
Access
MDB Files
SQL
Server
Oracle
Server
Flat File
Database
???
6-4
ni.com
Chapter 6
Data Links
Before you can access data from a database within TestStand, you must
provide specific connection information called a data link. In a data link,
you can specify the server on which the data resides, the database or file
that contains the data, the user ID, and the permissions to request when
connecting to the data source.
For example, to connect to a Microsoft SQL Server database, specify the
OLE DB provider for an SQL Server, a server name, a database name,
a user ID, and a password. To connect to a Microsoft Access database,
specify Microsoft Jet, or specify the OLE DB provider for ODBC and an
ODBC data source name. The ODBC data source name specifies which
ODBC driver to use, the database file (.mdb), and an optional user ID
and password. You can define ODBC data source names in the
ODBC Administrator in the Windows Control Panel.
Refer to the Using the ODBC Administrator section of this chapter for more
information about the ODBC Administrator.
A connection string is a string version of the connection information
required to open a session to a database. TestStand allows you to build
a connection string using the Data Link dialog box.
The Data Link dialog box and the information contained in the connection
string vary according to the OLE DB provider. For example, a connection
string for a Microsoft SQL Server database might contain the following:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist
Security Info=True;User ID=guest;Initial
Catalog=pubs;Data Source=SERVERCOMPUTER
2.
3.
Right-click the new file and select Open to launch the Data Link
Properties dialog box.
Refer to the Using Data Links section of this chapter for more information
about specifying data links. You can also refer to the NI TestStand Help for
more information about the Data Link Properties dialog box.
6-5
Chapter 6
Whether the process models log data after each step is executed or after
each pass through the UUT loop.
For more information about the Database Options dialog box, refer to the
NI TestStand Help.
6-6
ni.com
Chapter 6
Decide which DBMS you want TestStand to log the results to. By
default, TestStand supports Microsoft SQL Server, Oracle, Microsoft
Access, Sybase, and MySQL. If you decide to use another DBMS,
refer to the Adding Support for Other Database Management Systems
section of this chapter.
2.
Make sure that you have installed the appropriate client DBMS
software that is required to communicate with the DBMS.
You must decide whether to use an ODBC driver or a specific OLE DB
provider for your DBMS. Use the OLE DB providers for Microsoft
Access and Microsoft SQL Server. Most Oracle ODBC drivers and
OLE DB providers require that you install Oracle Client also.
Refer to the <TestStand>\Doc\Readme.html for more information
about suggested providers, versions of ODBC drivers, client DBMS
software, and any known issues.
3.
4.
Use the Database Options dialog box to enable database logging and
to define a data link and schema for the default process model to use.
6-7
Chapter 6
Refer to the NI TestStand Help for more information about the Database
Options dialog box. Refer to the Using Data Links section of this chapter
for more information about defining data links.
6-8
ni.com
Chapter 6
The TestStand process model files define the structure of the DateDetails,
TimeDetails, UUT, DatabaseOptions, and StationInfo custom data types.
UUT_RESULT
STEP_RESULT
STEP_SEQCALL
STEP_PASSFAIL
STEP_CALLEXE
STEP_MSGPOPUP
STEP_PROPERTYLOADER
STEP_STRINGVALUE
MEAS_NUMERICLIMIT
MEAS_IVI_WAVE
MEAS_IVI_WAVEPAIR
MEAS_IVI_SINGLEPOINT
6-9
Chapter 6
Each table contains a primary key column ID. The data type of the column
is Number, String, or GUID, depending on the selected schema. Each table
might contain foreign key columns. The data types of the columns must
match the primary key that the data types reference.
Refer to the NI TestStand Help for complete information about the default
TestStand table schemas.
Create result tables for the default table schema for each DBMS by
using the SQL script files located in the <TestStand>\
Components\NI\Models\TestStandModels\Database
6-10
ni.com
Chapter 6
You can also follow these steps to create new script files for your
new DBMS:
1.
Tip
National Instruments recommends including the name of the DBMS in the filename.
2.
Enter the SQL commands for creating and deleting your DBMS tables
to the new script files. Refer to any of the SQL database script files that
TestStand provides for an example.
For example, the SQL database syntax file for Oracle result tables
might contain the following commands:
CREATE TABLE UUT_RESULT
(
ID
NUMBER PRIMARY KEY,
UUT_SERIAL_NUMBER
CHAR (255),
USER_LOGIN_NAME
CHAR (255),
START_DATE_TIME
DATE,
EXECUTION_TIME
NUMBER,
UUT_STATUS
CHAR (255),
UUT_ERROR_CODE
NUMBER,
UUT_ERROR_MESSAGE
CHAR (255)
)
/
CREATE SEQUENCE SEQ_UUT_RESULT START WITH 1
/
CREATE FUNCTION UUT_RESULT_NEXT_ID RETURN NUMBER IS
X NUMBER;
BEGIN
SELECT SEQ_UUT_RESULT.NextVal INTO X FROM DUAL;
RETURN X;
END;
/
Note Notice that TestStand uses three separate commands, each separated by the " / "
6-11
Chapter 6
Use a similar syntax for deleting tables. For example, the SQL script
file for Oracle might contain the following commands for deleting
result tables:
DROP TABLE STEP_RESULT
/
DROP SEQUENCE SEQ_STEP_RESULT
/
DROP FUNCTION STEP_RESULT_NEXT_ID
/
Database Viewer
TestStand includes the Database Viewer application for viewing data in a
database, editing table information, and executing SQL commands. The
Database Viewer application, DatabaseView.exe, is located in the
<TestStand>\Components\NI\Tools\DatabaseView directory.
For more information about the Database Viewer, refer to the NI TestStand
Help.
6-12
ni.com
Chapter 6
can use any ODBC-compliant database drivers. TestStand does not install any ODBC
database drivers. DBMS vendors and third-party developers offer their own drivers. Refer
to your vendor documentation for information about registering your specific database
drivers with the ODBC Administrator.
For more information about the ODBC Data Source Administrator dialog
box, refer to the NI TestStand Help.
Example Data Link and Result Table Setup for Microsoft Access
This section outlines an example of how to link a TestStand data link to
a Microsoft Access database file (.mdb) using the Microsoft Jet OLE DB
provider to log results using the default process model.
6-13
Chapter 6
2.
3.
4.
Click the Data Link tab on the Database Options dialog box and select
Access from the Database Management System ring control.
5.
6.
7.
8.
9.
Using the Select Access Database dialog box, locate your Microsoft
Access database file (.mdb) and click Open to select the file.
10. On the Data Link Properties dialog box, click Test Connection to
verify that you properly entered the required information.
11. Click OK to close the Data Link Properties dialog box.
Notice that the Connection String control on the Database Options dialog
box now contains a literal string expression version of the data link
connection string.
2.
If you are continuing from the steps in the previous section, skip to
step 2. Otherwise, complete the following steps:
a.
b.
c.
d.
Click the Data Link tab on the Database Options dialog box.
Select View Data to launch the Database Viewer application and open
the data link.
Note Step 2 requires that the Connection String control contains a valid expression.
6-14
ni.com
Chapter 6
3.
4.
Note Notice that the SQL Command control contains a set of SQL commands for creating
6.
Click the Data Link window and select WindowRefresh to view the
tables.
After you have completed these steps, any execution you launch with
the Test UUTs or Single Pass entry point automatically logs its results
to the database.
The remainder of this chapter describes how to manage and use test reports
in TestStand.
6-15
Chapter 6
each step and the result list of each subsequence call it makes. Refer to the
Result Collection section of Chapter 3, Executions, for information about
automatic result collection.
Batch Reports
When you use the Batch process model, the model generates a Batch report
in addition to a report for each UUT. The batch report summarizes the
results for all the UUTs in the batch. When the report format is XML
or HTML, the batch report provides hyperlinks to each UUT report.
6-16
ni.com
Chapter 6
PropFlags_IncludeInReport
PropFlags_IsLimit
PropFlags_IsMeasurementValue
6-17
Chapter 6
If the Conserve Memory and Only Display Latest Results report option is
enabled, the On-The-Fly Report Generator periodically purges internal
data structures. As a result, the test report that is displayed in the Report
view of the Execution window will only show the results for those steps that
have not yet been purged. The persisted temporary and final test report files,
however, will contain all of the step results. For these files, the step
results for Sequence Call and Loop Result steps will appear after their
corresponding Sequence Call and Loop Index step results, respectively.
Use the Discard Results or Disable Results When Not Required By
Model option on the Model Options dialog box to instruct TestStand to
conserve memory by discarding results after reporting each result.
6-18
ni.com
User Management
The TestStand Engine features a user manager. The user manager is a list
of users, their user names, passwords, and privileges and a list of groups,
their privileges, and user members. TestStand defines a set of privileges
and TestStand can limit the functionality of the sequence editor and user
interfaces depending on the privilege settings that have been defined
in the user manager for the current user and the groups that the user is a
member of.
When you launch the TestStand Sequence Editor or any of the TestStand
User Interfaces, they display the Login dialog box by calling the
LoginLogout Front-End callback sequence. The LoginLogout sequence
calls the DisplayLoginDialog method of the Engine class, which launches
the actual Login dialog box.
The User Manager tab on the Station Options dialog box specifies whether
TestStand enforces user privileges and specifies the location of the user
manager configuration file. Refer to the NI TestStand Help for more
information about the User Manager tab on the Station Options dialog box.
Note The TestStand User Manager is designed to help you implement policies and
procedures concerning the use of your test station. It is not a security system and it does
not inhibit or control the operating system or third-party applications. You must use the
system-level security features that are available with your operating system to secure your
test station computer against unauthorized use.
For information about the User Manager window, adding groups and users,
and setting their privileges, refer to the NI TestStand Help.
7-1
Chapter 7
User Management
Privileges
The TestStand User Manager stores privileges as Boolean properties and
organizes the privileges in categories. Each user and group in the user
manager lists the following categories and their containing privileges:
For each user or group in the user manager, you can grant specific
privileges and grant all privileges for a specific category. In addition, you
can add a user as a member of a group and the user is granted all the
privileges of that group. A user or group has a privilege if the property value
for the privilege is True or if the value of the Grant All property in any
enclosing parent privilege category is True. For example, a user has the
privilege to terminate an execution if one of the following are True:
<User>.Privileges.Operate.Terminate
<User>.Privileges.Operate.GrantAll
<User>.Privileges.GrantAll
<Group>.Privileges.Operate.Terminate
<Group>.Privileges.Operate.GrantAll
<Group>.Privileges.GrantAll
Note A user is also granted all privileges if you have disabled privilege checking on the
User manager tab of the Station Options dialog box.
7-2
ni.com
Chapter 7
User Management
CurrentUserHasPrivilege("Terminate")
CurrentUserHasPrivilege("Operate.Terminate")
7-3
Customizing TestStand
This section describes the various TestStand components that you can
customize to meet your specific needs.
User Interfaces
The TestStand User Interfaces are application programs that you use to
execute and debug test sequences on a test station or custom sequence
editors you use to edit sequence files. The user interfaces are available in
several different programming languages and include full source code,
allowing you to modify them to meet your specific needs.
Refer to Chapter 9, Creating Custom User Interfaces, for more information
about how to create and modify TestStand User Interfaces.
Process Models
The TestStand process models define the set of operations that occur for all
test sequences, such as identifying the UUT, notifying the operator of
pass/fail status, generating a test report, and logging results. TestStand
includes three fully customizable process models to meet your specific
testing needs: Sequential, Parallel, and Batch.
Refer to Chapter 10, Customizing Process Models and Callbacks, to learn
how to modify the TestStand process models.
8-1
Chapter 8
Callbacks
TestStand calls callback sequences at specific points during sequence
execution and test station operation. You can modify these callbacks to
customize the operation of your test station.
Refer to Chapter 10, Customizing Process Models and Callbacks, to learn
how to modify TestStand callback sequences.
Data Types
Data types define station global variables, sequence file global variables,
sequence local variables, and properties of steps and step types. You can
create and modify your own data types in TestStand, as well as copy the
standard TestStand data types, and customize the copies.
Refer to Chapter 11, Type Concepts, and Chapter 12, Standard and Custom
Data Types, to learn how to create and modify TestStand data types.
Step Types
Steps that you add to TestStand sequences are instances of step types.
A step type defines the behavior and properties of a step. You can create
and modify your own step types in TestStand, as well as copy the standard
TestStand step types, and customize the copies.
Refer to Chapter 11, Type Concepts, and Chapter 13, Creating Custom Step
Types, to learn how to create and modify TestStand step types.
Tools Menu
The TestStand Sequence Editor and User Interfaces each include a Tools
menu that contains common tools for use with TestStand. These tools
include documentation generators, a Database Viewer application, and the
TestStand Deployment Utility. You can modify the Tools menu to contain
the exact tools you need. You can also add new items to the Tools menu.
Refer to the NI TestStand Help for more information about how to add your
own commands to the Tools menu using the Customize Tools Menu
dialog box.
8-2
ni.com
Chapter 8
Directory Name
Contents
AdapterSupport
API
Bin
Cfg
CodeTemplates
Components
Doc
Documentation files.
Examples
Setup
Tutorial
Sequences and code modules that you use in tutorial sessions in this
manual, as well as the Using TestStand, Using LabVIEW with
TestStand manual, the Using LabWindows/CVI with TestStand
manual, and the NI TestStand Evaluation Guide.
UserInterfaces
8-3
Chapter 8
Components Directory
TestStand installs the sequences, executables, project files, and source
files for TestStand components in the <TestStand>\Components\NI
directory. Most of the subdirectories in the <TestStand>\
Components\NI directory have the name of a type of TestStand
component. For example, the <TestStand>\Components\NI\
StepTypes subdirectory contains support files for the TestStand
built-in step types.
If you want to create a new component or customize a TestStand
component, copy the component files from the NI subdirectory to the User
subdirectory before customizing. This ensures that newer installations of
the same version of TestStand do not overwrite your customizations, or that
uninstalling TestStand does not remove the files you customize. If you copy
the component files as the basis for creating a new component, be sure to
rename the files so that your customizations do not conflict with the default
TestStand components.
The TestStand Engine searches for sequences and code modules using
the TestStand search directory path. The default search precedence
places the <TestStand>\Components\User directory tree before
the <TestStand>\Components\NI directory tree. This ensures that
TestStand loads the sequences and code modules that you customize
instead of loading the default TestStand versions of the files. To modify the
precedence of the TestStand search directory paths, select Configure
Search Directories from the sequence editor menu bar.
8-4
ni.com
Chapter 8
When you deploy a run-time version of the TestStand Engine, you can
bundle your components in the User directory with the TestStand run-time
deployment. Refer to Chapter 14, Deploying TestStand Systems, for more
information about how to deploy the TestStand Engine and your custom
components.
Table 8-2 lists each subdirectory found in the NI and User directory trees
of the <TestStand>\Components directory.
Table 8-2. TestStand Component Subdirectories
Directory Name
Contents
Callbacks
Compatibility
Icons
The Icons directory contains icon files for module adapters and step
types. TestStand installs the icon files for module adapters and built-in
step types into the <TestStand>\Components\NI\Icons directory.
Refer to Chapter 13, Creating Custom Step Types, for more information
about creating your own icons for your custom step types.
Language
Models
The Models directory contains the default process model sequence files
and supporting code modules. Refer to Chapter 10, Customizing
Process Models and Callbacks, for more information about customizing
the process model.
Obsolete
8-5
Chapter 8
Directory Name
Contents
RuntimeServers
StepTypes
Tools
The Tools directory contains sequences and supporting files for the
Tools menu commands. Refer to the Tools Menu section of this chapter
for more information about customizing the Tools menu.
TypePalettes
The TypePalettes directory contains the default type palette files that
TestStand installs. Refer to Chapter 4, Built-In Step Types, for more
information about the default step types that TestStand installs. Refer to
Chapter 11, Type Concepts, for more information about step types and
data types.
1.
<TestStand>\Components\User\Language\<current
language>
2.
<TestStand>\Components\User\Language\English
3.
<TestStand>\Components\User\Language
4.
<TestStand>\Components\NI\Language\<current
language>
8-6
ni.com
Chapter 8
5.
<TestStand>\Components\NI\Language\English
6.
<TestStand>\Components\NI\Language
changes to the resource files, you must restart TestStand for the changes to take effect, or
call the Engine.ReloadStringResourceFiles method.
8-7
Chapter 8
When you specify custom resource strings, you create the category and
tag names. The number of categories and tags is unlimited. A string can be
of unlimited size. However, if a string has more than 512 characters, you
must break it into multiple lines. Each line has a tag suffix of lineNNNN,
where NNNN is the line number with zero padding. The following is an
example of a multiple-line string:
[category1]
tag1 line0001 = "This is the first line of a very long"
tag1 line0002 = "paragraph. This is the second line."
You can use escape codes to insert unprintable characters. Table 8-3 lists
the available escape codes.
Table 8-3. Resource String File Escape Codes
Escape Code
Description
\n
\r
\t
Tab character.
\xnn
\\
Backslash character.
\"
DoubleQuote character.
The following string shows how to use \n, the embedded linefeed
character:
tag1 = "This is line one.\nThis is line two."
Configuring TestStand
This section outlines the configuration options in TestStand.
8-8
ni.com
Chapter 8
Option
sequencefile
{sequencefile2}...
Purpose
Instructs the application to automatically load the sequence files at
startup.
For example:
SeqEdit.exe "c:\MySeqs\seq1.seq" "c:\MySeqs\seq2.seq"
/run sequence
sequencefile
/runEntryPoint
entrypointname
sequence file
/editor
/operatorInterface
/quit
8-9
Chapter 8
Option
/setCurrentDir
Purpose
Instructs the application to set the current directory to the first directory
in the file dialog directory history list. The current directory is the
directory that the File dialog box initially displays when you open or
save a file. This option allows you to set the directory displayed by the
File dialog box to the directory that was displayed in the File dialog box
the last time that you ran the application. TestStand sets the current
directory after processing the other command-line options.
For example:
SeqEdit.exe /setCurrentDir
Instructs the application to launch a help dialog box that contains a list
of valid command-line arguments, and then to close immediately.
/?
For example:
SeqEdit.exe /?
8-10
ni.com
Chapter 8
Configure Menu
The Configure menu in the sequence editor and user interfaces contains
commands that control the operation of the TestStand station. The
following section provides a brief overview of the items in the Configure
menu. Refer to the NI TestStand Help for more information about the
dialog boxes that each menu item launches.
8-11
9-1
Chapter 9
Tip
9-2
ni.com
Chapter 9
Manager Controls
Manager controls call the TestStand API to perform tasks such as loading
files, launching executions, and retrieving sequence information. Manager
controls also notify you when application events occur, such as when a user
logs in, an execution reaches a breakpoint, or a user changes the file or
sequence that they are viewing. These controls are visible at design time
but invisible at run time.
Connect the manager controls to visible TestStand UI Controls to
automatically display information or allow the user to select items to view.
The following sections describe the specific functionality of the three types
of manager controlsApplication Manager, SequenceFileView Manager,
and ExecutionView Manager.
Application Manager
The Application Manager control performs the following basic operations,
which are necessary to use the TestStand Engine in an application:
Launches executions.
9-3
Chapter 9
SequenceFileView Manager
A SequenceFileView Manager control performs the following tasks to
manage how other visible TestStand UI Controls view and interact with
a selected sequence file:
Tracks which sequence, step group, and steps are selected in the
selected file.
ExecutionView Manager
An ExecutionView Manager control performs the following tasks to
manage how other visible TestStand UI Controls view and interact with
a selected TestStand execution:
Tracks which thread, stack frame, sequence, step group, and steps are
selected in the selected execution.
Sends events to notify your application of the progress and state of the
selected execution.
Updates the ReportView control to show the current report for the
selected execution.
9-4
ni.com
Chapter 9
Control Name
Description
Button
ComboBox
CheckBox
ExpressionEdit
InsertionPalette
Label
9-5
Chapter 9
Control Name
Description
ListBar
A ListBar control displays multiple pages where each page contains a list
of items. You can view and select items from the selected page. Connect a
SequenceFileView Manager control or an ExecutionView Manager control to
a ListBar page to view and select from a list of files, sequences, step groups,
executions, threads, or stack frames.
ListBox
ReportView
SequenceView
StatusBar
VariablesView
9-6
ni.com
Chapter 9
View Connections
You can connect manager controls to specific UI controls to display the
steps in a file or an execution, the report for an execution, the sequence
context for a file or execution, and the set of step types and templates the
user can insert into sequence files.
Connect a SequenceFileView Manager control to a SequenceView control
to display the steps in the selected sequence in the selected file.
Connect an ExecutionView Manager control to a SequenceView control
to display the steps in the currently executing sequence of the selected
execution. You can also connect an ExecutionView Manager control to a
ReportView control to display the report for the selected execution.
Connect a SequenceFileView Manager or ExecutionView Manager control
to a VariablesView control to display the sequence context for a sequence
file or execution.
Connect a SequenceFileView Manager control to an InsertionPalette
control to display the steps and templates that the user can insert into
sequence files.
Call the following methods to connect to view controls:
SequenceFileViewMgr.ConnectSequenceView
SequenceFileViewMgr.ConnectVariables
SequenceFileViewMgr.ConnectInsertionPalette
ExecutionViewMgr.ConnectExecutionView
ExecutionViewMgr.ConnectReportView
ExecutionViewMgr.ConnectVariables
List Connections
You can connect a TestStand ComboBox control, ListBox control, or a
ListBar page to a list provided by a manager control. Table 9-2 specifies the
available list connections.
Table 9-2. Available List Connections
List
Manager Control
Adapters
Application Manager
Sequence Files
SequenceFileView Manager
9-7
Chapter 9
List
Manager Control
Sequences
SequenceFileView Manager
Step Groups
SequenceFileView Manager
Executions
ExecutionView Manager
Threads
ExecutionView Manager
Stack Frames
ExecutionView Manager
A manager control designates one item in each list as the selected item.
A visible control that you connect to a list displays the list and indicates the
selected item. The visible control also allows you to change the selected
item, unless the application state or control configuration prohibits
changing the selection. When you change the selected item, other controls
that display the list or the selected list item update to display the new
selection. For example, you can connect a SequenceFileView Manager
control to a SequenceView control and connect its sequence file list to a
combo box. When you change the selected file in the combo box, the
SequenceView control updates to show the steps in the newly selected
sequence file.
Call the following methods to connect a list to a ComboBox control,
ListBox control, or a ListBar page:
ApplicationMgr.ConnectAdapterList
SequenceFileViewMgr.ConnectSequenceFileList
SequenceFileViewMgr.ConnectSequenceList
SequenceFileViewMgr.ConnectStepGroupList
ExecutionViewMgr.ConnectExecutionList
ExecutionViewMgr.ConnectCallStack
ExecutionViewMgr.ConnectThreadList
9-8
ni.com
Chapter 9
Command Connections
TestStand applications typically provide commands to the user through
menus, buttons, or other controls. Many commands are common to
most applications, such as OpenSequenceFile, ExecuteEntryPoint,
RunSelectedSteps, Break, Resume, Terminate, and Exit. The TestStand UI
Controls Library provides a set of common commands you can add to your
application. You can connect these commands to TestStand buttons or
application menu items. When you connect a command to a button or menu
item, the button or menu item automatically executes the command. You
do not need an event handler to implement the command.
The commands also determine the menu item or button text to display
according to the current language and automatically dim or enable buttons
or menu items according to the state of the application. Because the
TestStand UI Controls Library implements many common application
commands, connecting commands to buttons and menu items significantly
reduces the amount of source code your application requires.
The CommandKinds enumeration defines the set of available commands. Refer to the
NI TestStand Help for more information about this enumeration before adding commands
to your application so that you do not unnecessarily re-implement an existing command.
Tip
Some commands apply to the selected item in the manager control to which
you connect. For example, the Break command suspends the current
execution that an ExecutionView Manager control selects. Other
commands, such as Exit, function the same regardless of the manager
control you use to connect them.
Refer to the NI TestStand Help for information about each CommandKinds
enumeration constant and the manager controls with which the command
functions.
Call the following methods to connect a command to a Button or CheckBox
control:
ApplicationMgr.ConnectCommand
SequenceFileViewMgr.ConnectCommand
ExecutionViewMgr.ConnectCommand
Refer to the Menus and Menu Items section of this chapter for information
about how to connect commands to menu items.
9-9
Chapter 9
ApplicationMgr.GetCommand
ApplicationMgr.NewCommands
SequenceFileViewMgr.GetCommand
ExecutionViewMgr.GetCommand
Caption Connections
Caption connections display text that describes the status of the application.
For example, you can use the Application Manager control to connect a
caption to a Label control so that the Label control automatically displays
the name of the currently logged in user.
The CaptionSources enumeration defines the set of captions to which you
can connect. Some captions apply to the selected item in the manager
control with which you connect them. For example, the UUTSerialNumber
caption displays the serial number of the current UUT for the execution
that an ExecutionView Manager control selects. Other captions, such as
UserName, function the same regardless of which manager control you use
to connect them.
Refer to the NI TestStand Help for information about each CaptionSources
enumeration constant and the manager controls with which the caption
source functions.
Call the following methods to connect a caption to a Label control,
ExpressionEdit control, or StatusBar pane:
ApplicationMgr.ConnectCaption
SequenceFileViewMgr.ConnectCaption
ExecutionViewMgr.ConnectCaption
9-10
ni.com
Chapter 9
ApplicationMgr.GetCaptionText
SequenceFileViewMgr.GetCaptionText
ExecutionViewMgr.GetCaptionText
Image Connections
Image connections display icons that illustrate the status of the application.
For example, you can use the ExecutionView Manager control to connect
an image to a Button control or a StatusBar pane so that the pane
automatically displays an image that indicates the execution state of
the selected execution.
The ImageSources enumeration defines the set of images to which you can
connect. Images may depend on the selected item in the manager control
with which you connect them. For example, the CurrentStepGroup
enumeration constant displays an image for the currently selected step
group when you connect it to a SequenceFileView Manager control, or it
displays an image for the currently executing step group when you connect
it to an ExecutionView Manager control.
Refer to the NI TestStand Help for information about each ImageSources
enumeration constant and the manager controls with which the image
source functions.
Call the following methods to connect an image to a Button control or a
StatusBar pane:
ApplicationMgr.ConnectImage
SequenceFileViewMgr.ConnectImage
ExecutionViewMgr.ConnectImage
ApplicationMgr.GetImageName
SequenceFileViewMgr.GetImageName
ExecutionViewMgr.GetImageName
Note To obtain an image from an image name, you must use properties from the
TestStand API such as Engine.SmallImageList, Engine.LargeImageList, and
Engine.Images.
9-11
Chapter 9
9-12
ni.com
Chapter 9
License Checking
The Start method on the Application Manager control verifies that a license
is available to run the application. If there is no license available, the Start
method throws an error which the application displays before it exits. If an
unactivated license or an evaluation license is available, Start prompts the
user to activate a license.
If ApplicationMgr.IsEditor is True, Start requires a license that permits
editing. If you call Start when IsEditor is False and later set IsEditor to
True, the property set throws an error if it cannot obtain a license that
permits editing.
9-13
Chapter 9
LabVIEW
To use the TestStand UI Controls in LabVIEW, use the VIs, functions, and
UI Controls on the TestStand Functions and Controls palettes. Refer to
Chapter 6, Creating Custom User Interfaces in LabVIEW, of the Using
LabVIEW with TestStand manual for more information about using the
TestStand UI Controls in LabVIEW.
LabWindows/CVI
To use the TestStand UI Controls with LabWindows/CVI, add the
following files to your project from the <TestStand>\API\CVI
directory:
tsui.h
tsuisupp.h
tsutil.h
tsapicvi.h.
9-14
ni.com
Chapter 9
PropertiesBuildPlatform Target to x86 so that your project can access the TestStand
API and UI controls on 64-bit versions of Windows.
Note If the TestStand tab is not visible in the Visual Studio Toolbox window when you
edit your form or if the TestStand Interop assemblies do not appear in the Add References
dialog box, follow these steps to install them. First, exit all running copies of
Visual Studio. Then, run the TestStand Version Switcher utility. Select the current version
of TestStand and click Make Active.
You must also add references to the TestStand Interop assemblies and
TSUtil assembly to your project. Refer to Accessing the TestStand API in
Visual Studio .NET 2003 and Visual Studio 2005 section of Chapter 5,
Adapters, for information about adding references to .NET interop
assemblies for the TestStand API. Refer to the TestStand Utility Functions
Library section of this chapter for information about adding a reference to
the TSUtil Library for .NET.
Note If you plan to create a MDI application with TestStand UI Controls on a MDI child
form, the properties that you programmatically set on the UI controls will be reset to
default values when you set the MdiParent property on the child form. These properties
are reset because the .NET framework destroys and recreates ActiveX controls on a form
when you set the property on that form. To avoid this issue, select one of the following
options:
Set the control properties after setting the MdiParent property on the form.
Place all TestStand UI Controls and other ActiveX controls on a Panel control instead
of directly on the form.
Visual C++
To use the TestStand UI Controls with Visual C++, add the TestStand
Utility (TSUtil) Functions Library to your project as described in
the TestStand Utility Functions Library section of this chapter. The
TSUtilCPP.cpp and TSUtilCPP.h files automatically import the type
libraries for the TestStand API and the TestStand UI Controls.
9-15
Chapter 9
You can view the header files that the #import directive generates for the
TestStand API type libraries by opening the tsui.tlh, tsuisupp.tlh,
and tsapi.tlh files that Visual C++ creates in your Debug or Release
directory. These header files define a C++ class for each object class in the
TestStand API. The letter I is used as a prefix in class names for ActiveX
controls and objects that you can create without calling another class.
The header files use macros to define a corresponding smart pointer
class for each object class. Each smart pointer class uses the name of its
corresponding class and adds a Ptr suffix. Typically, you only use smart
pointer classes in your application. For example, instead of using the
SequenceFile class, use the SequenceFilePtr class.
Note National Instruments recommends that you use the classes that the #import directive
generates to call the TestStand ActiveX API instead of generating MFC wrapper class files
using the Class Wizard tool.
To add a TestStand UI Control to a dialog box as a resource, select Insert
ActiveX Control from the dialog box context menu and select a control
whose name begins with TestStand UI.
Note If you programmatically create a TestStand UI Control in an MFC container, you
must remove the WS_CLIPSIBLINGS style from the control window for the TestStand UI
Control to be visible inside an MFC Group Box control. If you do not remove the
WS_CLIPSIBLINGS style, a native MFC control always obscures the TestStand UI
Control, even if the MFC control comes after the TestStand UI Control in the tab order.
Using GetDlgItem
1.
Add a CWnd member to the dialog class for the control as follows:
CWnd mExprEditCWnd;
2.
Insert the following code into the OnInitDialog method of the dialog
class:
mExprEditCWnd.Attach(GetDlgItem
(IDC_MYEXPRESSIONEDIT)->m_hWnd);
9-16
ni.com
Chapter 9
3.
Handling Events
TestStand UI Controls send events to notify your application of user input
and of application events, such as an execution completing. The visible
controls send user input events such as KeyDown or MouseDown.
The manager controls send application state events such as
SequenceFileOpened or UserChanged. You can choose to handle
any number of events according to the needs of your application.
ADE
LabVIEW
Description
Register event handler VIs with the Register Event Callback function.
Refer to Chapter 6, Creating Custom User Interfaces in LabVIEW, of
the Using LabVIEW with TestStand manual for information about
handling events from the TestStand UI Controls in LabVIEW.
LabWindows/CVI
in tsui.fp.
Refer to Chapter 6, Creating Custom User Interfaces in
LabWindows/CVI, of the Using LabWindows/CVI with TestStand
manual for information about handling events from the TestStand UI
Controls in LabWindows/CVI.
.NET
C++ (MFC)
Create ActiveX event handlers from the Message Maps page of the
Class Wizard dialog box.
9-17
Chapter 9
ExitApplication
The Application Manager control generates this event to request that your
application exit. Handle this event by directing your application to exit
normally. For more information about shutting down your application,
refer to the Startup and Shut Down section of this chapter.
Wait
The Application Manager control generates this event to request that your
application either display or remove a busy indicator. Handle this event by
displaying or removing a wait cursor according to the value of the
showWait event parameter.
ReportError
The Application Manager control generates this event to request that the
user interface displays to the user an error that occurs during user input or
during an asynchronous operation. Handle this event by displaying the
error code and description in a dialog box or by appending the error code
and description to an error log.
Note This event indicates an application error, not a sequence execution error. The
DisplaySequenceFile
The Application Manager control generates this event to request that
the application display a particular sequence file. For example, the
Application Manager control generates this event when the user opens
a sequence file. To handle this event, display the file by setting the
SequenceFileViewMgr.SequenceFile property. If your application
has only a single window, set this property on the SequenceFileView
Manager control that resides on that window.
If your application displays each file in a separate window
using separate SequenceFileView Manager controls, call
ApplicationMgr.GetSequenceFileViewMgr to find the
9-18
ni.com
Chapter 9
DisplayExecution
The Application Manager control generates this event to request that the
application display a particular execution. For example, the Application
Manager control generates this event when the user starts a new
execution. To handle this event, display the execution by setting the
ExecutionViewMgr.Execution property. If your application has only
a single window, call this method on the ExecutionView Manager control
that resides on that window.
If your application displays each execution in a separate window using
separate ExecutionView Manager controls, call the
ApplicationMgr.GetExecutionViewMgr method to find the
ExecutionView Manager control that currently displays the execution so
that you can activate the window that contains it. If no ExecutionView
Manager control currently displays the execution, a multiple
window application can create a new window that contains an
ExecutionView Manager control. The application can then set the
ExecutionViewMgr.Execution property of the ExecutionView Manager
control to display the execution in the new window.
9-19
Chapter 9
2.
3.
the Application Manager control resides must exist until you receive
the ExitApplication event.
Note When you use the TestStand UI Controls to create an Exit button or an Exit menu
item that invokes the Exit command, the button or menu item automatically calls
ApplicationMgr.ShutDown for you.
9-20
ni.com
Chapter 9
The following tables describe how to use the TSUtil library in each
programming environment:
Table 9-4. Using the TSUtil Library in LabVIEW
Library Format
Help Location
How to Use
Place VIs on the block diagram as needed. Refer to the Using LabVIEW with
TestStand manual for more information about using the TSUtil library in
LabVIEW.
Library Format
Instrument Driver.
Help Location
Files
How to Use
Library Format
Assembly.
Help Location
Location
<TestStand>\API\DotNet\Assemblies\
CurrentVersion.
9-21
Chapter 9
File
NationalInstruments.TestStand.Utility.dll.
How to Use
Add a reference to the assembly to your project. The classes in this assembly
reside in the National Instruments.TestStand.Utility namespace.
To add a reference to the assembly in Visual Studio 2005, select the project in
the Solution Explorer. Select Add Reference from the Project menu to launch
the Add Reference dialog box. Next, select the .NET tab and select
NationalInstruments.TestStand.Utility from the list of components.
Click OK to close the Add Reference dialog box.
To add a reference to the assembly in Visual Studio .NET 2003, you must use
an assembly that is compatible with TestStand 3.5 or earlier. Select the project
in the Solution Explorer. Select Add Reference from the Project menu to
launch the Add Reference dialog box. Next, select the .NET tab and click the
File Browse button to launch the Select Components dialog box. Then,
navigate to the <TestStand>\API\DotNet\Assemblies\
PreviousVersion\3.5 directory. Select
NationalInstruments.TestStand.Utility.dll and click Open. Click
OK to close the Add Reference dialog box.
Table 9-7. Using the TSUtil Library in C++ (MFC)
Library Format
Help Location
Files
directory).
How to Use
9-22
ni.com
Chapter 9
Visual Studio .NET 2003, and do not support using the MenuStrip control available in
Visual Studio 2005. To access the .NET MainMenu control in the Visual Studio 2005
Toolbox, select Choose Items from context menu in the Toolbox pane, enable
MainMenu 2.0 on the .NET Framework Components tab of the Choose Toolbox Items
dialog box, and select OK to close the dialog box. The full-featured .NET example user
interface applications use MainMenu to display menus.
Updating Menus
The contents of a menu can vary, depending on the current selection or
other user input, or due to asynchronous execution state changes. Instead of
updating a menu in response to any event or change that may affect it, it is
simpler to update the state of a menu just before it displays when the user
opens it. Programming environments provide an event that notifies you
when a menu is about to open. Table 9-8 describes the notification method
for each environment.
9-23
Chapter 9
Environment
LabVIEW
InstallMenuDimmerCallback
Form.MenuStart
CWnd::OnInitMenuPopup
9-24
ni.com
Chapter 9
Localization
The Engine.StationOptions.Language property specifies the
current language. Localized TestStand applications use the
Engine.GetResourceString method to obtain text in the current system
language from language resource files. Refer to the Creating String
Resource Files section of Chapter 8, Customizing and Configuring
TestStand, for information about creating your own string resource files.
To localize all of the user-visible TestStand UI Control
strings that you configure at design time, call
ApplicationMgr.LocalizeAllControls. This reduces the number of
strings you must explicitly localize using Engine.GetResourceString by
localizing items such as list column headers in the SequenceView control,
text in the StatusBar pane, captions in the Button control, and captions in
the ListBar page.
Note Buttons and menu items that you connect to commands automatically localize
their caption text. Refer to the Command Connections section of this chapter for more
information about connecting buttons and menu items to commands.
The LocalizeAllControls method operates on TestStand UI Controls only.
For other controls and user interface elements, your application must set
each item of localized text. However, the TSUtil library provides functions
to assist in localizing these other controls and menu items. These functions
are described in Table 9-9.
Table 9-9. TSUtil Library Localization Functions by Environment
Environment
LabVIEW
LabWindows/CVI
TS_LoadPanelResourceStrings
TS_LoadMenuBarResourceStrings
TS_SetAttrFromResourceString
TS_GetResourceString
9-25
Chapter 9
Environment
.NET
C++ (MFC)
Localizer.LocalizeWindow
Localizer.LocalizeMenu
Localizer.LocalizeString
For more information about the TSUtil library, refer to the TestStand Utility
Functions Library section of this chapter.
described applications, use these descriptions only as a guide. You should implement
the approach that best suits your application.
Single Window
A single window application typically displays one execution and/or
sequence file at a time. The user can select the execution and sequence file
to display from a ListBar, ComboBox, or ListBox control. The examples
in the <TestStand>\UserInterfaces\NI\Full-Featured and
<TestStand>\UserInterfaces\NI\Simple directories are single
window applications.
The single window application contains one Application Manager control,
one SequenceFileView Manager control, and one ExecutionView Manager
control. To display sequences, you can connect the SequenceFileView
Manager and ExecutionView Manager controls to separate SequenceView
controls, alternate a connection from each manager control to a single
SequenceView control, or leave one or both manager controls unconnected
to a SequenceView control.
9-26
ni.com
Chapter 9
Multiple Window
A multiple window application has at least one window that always exists
in order to contain the Application Manager control. Although this window
may be visible or invisible, it is typically visible and contains controls that
enable the user to open sequence files.
For each sequence file that you open, the application creates a Sequence
File window that contains a SequenceFileView Manager control and a
SequenceView control to which it connects. The application sets the
SequenceFileViewMgr.UserData property to attach a handle, reference,
or pointer that represents the window. When the application receives the
ApplicationMgr.DisplaySequenceFile event, it calls
ApplicationMgr.GetSequenceFileViewMgr to determine whether a
SequenceFileView Manager control is currently displaying the sequence
file. If so, the application retrieves the window from the
SequenceFileViewMgr.UserData property and activates the window.
If there is no window currently displaying the file, the application creates a
new window and sets the SequenceFileViewMgr.SequenceFile property to
display the specified file. Because the window only displays this file,
the application also sets the
SequenceFileViewMgr.ReplaceSequenceFileOnClose property to False.
If a Sequence File window attempts to close and the
SequenceFileViewMgr.SequenceFile property is NULL, the
application allows the window to close immediately. If the
SequenceFileViewMgr.Sequence File property is not NULL, the application
does not close the window. Instead, the application passes the file to the
ApplicationMgr.CloseSequenceFile method. When the application
receives the SequenceFileViewMgr.SequenceFileChanged event with a
NULL sequence file event parameter, it closes the window that holds the
SequenceFileView Manager control.
9-27
Chapter 9
The Sequence File window contains controls that allow you to execute the
displayed file. For each execution that you start, the application creates an
Execution window that contains an ExecutionView Manager control and a
SequenceView control to which it connects. The application sets the
ExecutionViewMgr.UserData property to attach a handle, reference, or
pointer that represents the window. When the application receives the
ApplicationMgr.DisplayExecution event, it calls
ApplicationMgr.GetExecutionViewMgr to determine whether an
ExecutionView Manager control is currently displaying the execution.
If so, the application retrieves the window from the
ExecutionViewMgr.UserData property and activates the window. If there is
no window currently displaying the execution, the application creates a new
window and sets the ExecutionViewMgr.Execution property to display the
specified execution. Because the window only displays this execution, the
application also sets the ExecutionViewMgr.ReplaceExecutionOnClose
property to False.
If an Execution window attempts to close and the
ExecutionViewMgr.Execution property is NULL, the application allows
the window to close immediately. If the ExecutionViewMgr.Execution
property is not NULL, the application does not close the window and instead
passes the execution to the ApplicationMgr.CloseExecution method. The
application does not immediately close the Execution window to ensure
that it exists until the execution it displays completes. When the application
receives the ExecutionViewMgr.ExecutionChanged event with a NULL
execution event parameter, it closes the window that holds the
ExecutionView Manager control.
A multiple window application can display multiple child windows instead
of displaying sequence files and executions in separate top-level windows.
Child windows can be simultaneously visible or reside in tab control pages
or similar locations that allow you to easily select which child window
to view.
No Visible Window
An application without a visible window is similar to a single window
application except that it does not display its window. The application can
allow its command-line arguments to execute and then exit, or it might
have a different mechanism to determine which files to load and execute.
Although an invisible application does not require an ExecutionView
Manager control, it may use a SequenceFileView Manager control to
9-28
ni.com
Chapter 9
ExecutionEntryPoints
Run
RunSelectedSteps
LoopOnSelectedSteps
GetCommand
Command-Line Arguments
The Application Manager control automatically processes the command
line that invokes your application when you call ApplicationMgr.Start.
To disable command-line processing, set the
ApplicationMgr.ProcessCommandLine property to False before
calling ApplicationMgr.Start. Refer to the Configuring TestStand
section of Chapter 8, Customizing and Configuring TestStand, for a
description of the command-line arguments that are processed by the
Application Manager control.
You can also handle the ProcessUserCommandLineArguments event
from the Application Manager to support additional command-line
arguments. The ProcessUserCommandLineArguments event occurs when
the Application Manager control parses and processes a command-line flag
that is unrecognized. Refer to the NI TestStand Help for more information
about how to use the ProcessUserCommandLineArguments event to
support user command-line flags in a user interface.
9-29
Chapter 9
BreakOnFirstStep
PromptForOverwrite
EditReadOnlyFiles
MakeStepNamesUnique
SaveOnClose
When you set the value of one of these properties on the Application
Manager control in a designer, you are setting the default value for the
property. The Application Manager control stores the default value in the
configuration file it creates if a configuration file does not already exist. If
the configuration file already exists, the Application Manager control loads
the values of these properties from the file.
1.
2.
Access the Data property of this property object file to obtain the
PropertyObject that holds the application settings.
9-30
ni.com
Chapter 9
3.
4.
5.
You do not need to create the TestStand Engine. Instead, you can
obtain the Engine object using the ApplicationMgr.GetEngine
method.
You can obtain sequence file and execution references from events or
from the SequenceFiles and Executions collections.
9-31
Chapter 9
9-32
ni.com
10
This chapter describes how to customize the TestStand process models and
callbacks. For detailed information about the TestStand process models,
refer to Appendix A, Process Model Architecture.
Process Models
All process models that TestStand provides identify UUTs, generate test
reports, log results to databases, and display UUT status. These process
models also allow client sequence files to customize various model
operations by overriding model-defined callback sequences.
Process models provide Configuration and Execution entry points that you
use to configure model settings and to run client files under the model.
These entry points are sequences in the process model sequence file and are
typically listed in the Configure and Execute menus of an application.
The models that TestStand providesSequential, Parallel, and
Batchcontain the following Execution entry points:
10-1
Chapter 10
Station Model
You can specify a process model file to use for all sequence files. This
process model file is called the station model file. The Sequential model is
the default station model file. You can use the Station Options dialog box
to select a different station model or to allow individual sequence files to
specify their own process model file.
Refer to the NI TestStand Help for more information about the Station
Options dialog box.
10-2
ni.com
Chapter 10
Remember that process models are TestStand sequence files. To modify the behavior
of process models, edit them for desired functionality as you would any other sequence
files. For example, if you want to change the HTML report output for all sequences, copy
reportgen_html.seq from the NI directory to the User directory and then make
changes to that copy.
Tip
10-3
Chapter 10
Figure 10-1 shows the settings on the Advanced tab on the Sequence File
Properties dialog box.
Although you edit a process model sequence file in a regular Sequence File
window, the file has special contents. In particular, some of the sequences
in process model files are Model entry points, and some are Model
callbacks. TestStand maintains special properties for entry point and
callback sequences. You can specify the values of these properties when
you edit the sequences in a process model file. When you access the
Sequence Properties dialog box for any sequence in a model file, it contains
a Model tab that allows you to specify whether the sequence is a normal
sequence, callback sequence, or an entry point sequence.
Normal Sequences
A normal sequence is any sequence other than a callback or entry point. In
a process model file, you use normal sequences as Utility subsequences that
the entry points or callbacks call. When you select Normal from the Type
ring control, nothing else is listed on the Model tab.
10-4
ni.com
Chapter 10
Callback Sequences
Model callbacks are sequences that entry point sequences call and that the
client sequence file can override. By marking sequences as callbacks in a
process model file, you specify the set of process model operations that you
can customize. When editing the client file, select EditSequence File
Callbacks to override the callback. Refer to the NI TestStand Help for
more information about using the Sequence File Callbacks dialog box.
Some Model callbacks, such as the TestReport callback in the default
process model, have implementations sufficient for handling most types of
test results. Other Model callbacks act as placeholders that you can override
with sequences in the client sequence file. For example, the MainSequence
callback in the model file is a placeholder for the MainSequence callback
in the client sequence file.
10-5
Chapter 10
Callbacks
In addition to the Model callbacks, TestStand includes many other callback
sequences that you can customize to meet your specific needs. These
callbacks are divided into two groupsEngine callbacks and Front-End
callbacks.
Engine Callbacks
The TestStand Engine defines a set of Engine callbacks that it invokes at
specific points during execution.
Engine callbacks allow you to configure TestStand to call certain sequences
at various points during your test, including before and after the execution
of individual steps, before and after interactive executions, after loading a
sequence file, or before unloading a sequence file. TestStand defines the set
of Engine callbacks and their names because the TestStand Engine controls
the execution of steps and the loading and unloading of sequence files.
The Engine callbacks are categorized according to the file in which the
callback sequence appears. You can define Engine callbacks in sequence
files, process model files, and the StationCallbacks.seq file.
TestStand invokes Engine callbacks in a normal sequence file only when
executing steps in the sequence file or loading/unloading the sequence file.
TestStand invokes Engine callbacks in process model files when executing
steps in the model file, steps in sequences that the model calls, and steps in
any nested calls to subsequences. TestStand invokes Engine callbacks in the
StationCallbacks.seq file whenever TestStand executes steps on the
test station.
Note TestStand does not predefine any Station Engine callbacks in the
StationCallbacks.seq file in the <TestStand>\Components\NI\Callbacks\
Station directory, but may in a future version of TestStand. Add your own Station Engine
callbacks in the StationCallbacks.seq file in the <TestStand>\Components\
User\Callbacks\Station directory.
Table 10-1 lists the engine callbacks that TestStand defines, indicates
where you must create the callback sequence, and specifies when the
engine calls the callback.
10-6
ni.com
Chapter 10
Engine Callback
SequenceFilePreStep
SequenceFilePostStep
SequenceFilePreInteractive
SequenceFilePostInteractive
SequenceFileLoad
SequenceFileUnload
SequenceFilePostResultList
Entry
SequenceFilePostStepRuntimeError
SequenceFilePostStepFailure
ProcessModelPreStep
10-7
Chapter 10
Engine Callback
ProcessModelPostStep
ProcessModelPreInteractive
ProcessModelPostInteractive
ProcessModelPostResultList
Entry
ProcessModelPostStepRuntimeError
ProcessModelPostStepFailure
StationPreStep
StationCallbacks.seq
10-8
ni.com
Chapter 10
Engine Callback
StationPostStep
StationCallbacks.seq
StationPreInteractive
StationCallbacks.seq
StationPostInteractive
StationCallbacks.seq
StationPostResultListEntry
StationCallbacks.seq
StationPostStepRuntimeError
StationCallbacks.seq
StationPostStepFailure
StationCallbacks.seq
The following are examples of how you can use Engine callbacks:
10-9
Chapter 10
Note If a callback sequence is empty, TestStand does not invoke the Engine callback.
Also, the process model uses the Execution.EnableCallback method to disable the
ProcessModelPostResultListEntry and SequenceFilePostResultListEntry callbacks when
the model does not need to process results on-the-fly to generate a report or log to a
database.
Note TestStand only calls other Engine callbacks when executing the SequenceFileLoad
and SequenceFileUnload Engine callbacks. TestStand does not call Engine callbacks when
executing the other Engine callbacks.
Front-End Callbacks
Front-End callbacks are sequences in the FrontEndCallbacks.seq file
that are called by user interface applications. Front-End callbacks allow
multiple user interfaces to share the same implementation for a specific
operation. The version of FrontEndCallback.seq that TestStand
installs contains one Front-End callback sequence, LoginLogout. The
sequence editor and all user interfaces included with TestStand call
LoginLogout.
When you implement operations as Front-End callbacks, you write them
as sequences. This allows you to modify a Front-End callback without
modifying the source code for the user interfaces or rebuilding the
executables for them. For example, to change how the various user
interfaces perform the login procedure, you only have to modify the
LoginLogout sequence in FrontEndCallbacks.seq.
You can create new Front-End callbacks by adding a sequence to the
FrontEndCallbacks.seq file. You can then invoke this sequence from
10-10
ni.com
11
Type Concepts
This chapter discusses concepts that apply to step types, custom data types,
and standard data types in TestStand. This chapter also describes the Types
window, in which you can create, modify, or examine data types and step
types.
For an overview of the categories of types, refer to the Step Types and
Standard and Custom Data Types sections of Chapter 1, TestStand
Architecture, of this manual.
Modifying Types
TestStand allows you to modify the built-in and custom properties of step
types and the custom data types that you create; however, you cannot
modify the built-in step types and the standard data types that TestStand
installs unless you create a new copy of the type and modify the copy.
When you modify a type, TestStand enables the Modified built-in property
for the type. TestStand cannot automatically resolve type conflicts unless
the Modified property is disabled. To disable the Modified property, you
typically increment the version of the type on the Step Type Properties
11-1
Chapter 11
Type Concepts
dialog box or the Type Properties dialog box when you have completed all
the modification to the type.
Type Versioning
When you edit a type, you can increment the version number for the type.
TestStand uses the version number to determine whether to load a type
from a file when the type is already in memory and which version of a type
to use when the version numbers are different.
You can also set the earliest TestStand version that can use a type. This
prevents a TestStand Engine from using this type if the version of the
engine is less than the version specified. If you enable this option and an
older version of the engine attempts to load this type, the type is ignored,
and TestStand only continues to load the file if an older version of this type
is already loaded in memory.
version of TestStand sequence file and the sequence file contains custom step types and
data types that also existed in the earlier version of TestStand. Newer versions of TestStand
can add new subproperties and alter some flags in types. When you open files saved from
a newer version of TestStand and a type conflict occurs, select to use the current TestStand
versions of the types instead of the types from the file. To prevent the altered version of a
type in TestStand from being used in or accidentally propagated to earlier TestStand
11-2
ni.com
Chapter 11
Type Concepts
sequence files, enable the Set Earliest TestStand Version that can Use this Type setting
on the Step Type Properties dialog box and set the earliest version to the current version of
TestStand.
In addition, when TestStand saves a TestStand sequence file as an earlier version of a
TestStand sequence file, the TestStand Engine uses types from any of the type palette files
located in the <TestStand>\Components\NI\Compatibility\<Version> and
<TestStand>\Components\User\Compatibility\<Version> directories. You can
place your type palette files from earlier versions of TestStand in a <TestStand>\
Components\User\Compatibility\<Version> directory to ensure that the correct
version of your types are saved with the sequence file.
Types Window
Use the Types window in the sequence editor to view and edit the step
types, custom data types, and standards data types.
The Types window contains two panes, The View Types For pane and the
Types pane. The View Types For pane contains three file sections: Type
Palettes, Sequence Files, and Other. The Types pane displays the types
associated with the selected item in the View Types For pane. When you
select a file, the Types pane lists the step types, custom data types, and the
standard data types used by or attached to the selected file. You can also
display types for all loaded files when you select All Types in the Other
section.
When you select FileSave in the Types window, TestStand saves the
selected file in the Types pane.
Refer to the NI TestStand Help for more information about the Types
window.
Sequence Files
Sequence files contain step types, custom data types, and standard data
types that the variables and steps in the file use. When you save the contents
of the Sequence File window, TestStand writes the definitions of the types
used in the sequence file to the sequence file.
When you create a new type in the Types pane for a sequence file, the type
does not appear in the Insert Local, Insert Global, Insert Parameter, Insert
Field, and Insert Step submenus in other Sequence File windows. Refer to
the NI TestStand Help for more information about the Sequence File
window.
11-3
Chapter 11
Type Concepts
To use a type in other sequence files, you can manually copy or drag the
new type from one sequence file to another. National Instruments strongly
recommends that you copy or drag the new type to a type palette file so that
each type in a type palette file appears in the appropriate Insert submenu for
all windows.
Station Globals
Station globals contain custom data types and standard data types that the
station global variables use. When you save the contents of the Station
Globals window, TestStand writes the definitions of the types used in
station global variables to the StationGlobals.ini file in the
<TestStand>\Cfg directory. Refer to the NI TestStand Help for
more information about the Station Globals window.
User Manager
All users and user profiles use the User standard data type. To add
new privileges for all users and groups, add the privileges to the
NI_UserCustomPrivileges type. Refer to Chapter 7, User Management,
for more information about using the TestStand User Manager.
When you save the contents of the User Manager window, TestStand writes
the definitions of the types used to define users to the Users.ini file in
the <TestStand>\Cfg directory. Refer to the NI TestStand Help for more
information about the User Manager window.
11-4
ni.com
Chapter 11
Type Concepts
names of the type palettes you install with Install_. At startup, TestStand
searches the TypePalettes directory for type palette files with the
Install_ prefix. When TestStand finds a type palette file to install whose
base file name is not the same as any existing type palette, TestStand
removes the Install_ prefix and adds the type palette to the type palette
list. When TestStand finds a type palette file to install whose base file name
is the same as an existing type palette, TestStand merges the types from the
install file into the existing type palette file and then deletes the install file.
11-5
12
This chapter describes how to use data types in TestStand and how to create
and modify custom data types to meet the needs of your application.
Context
Menu Item
Item Inserted
Insert Parameter
Sequence parameter
Insert Local
Insert Station
Global
Insert User
Insert Group
Insert Field
Types window
12-1
Chapter 12
With the exception of the Insert User and Insert Group items, all of the
context menu items in Table 12-1 provide a submenu from which you can
select a data type. The submenu includes the following categories of types:
One of the simple data types that TestStand defines, including the
number, Boolean, string, and object reference data types.
A named data type. This submenu includes all of the custom named
data types that are currently in type palette files or in the files you
are currently editing. The submenu also includes standard named
data types that come with TestStand, such as Error, Path, and
CommonResults. Refer to the Using Standard Named Data Types
section of this chapter for more information about the standard named
data types.
In the submenu for Insert Parameter, you can select the Container type.
Creating a parameter with the Container type is only useful if you want to
pass an object of any type to the sequence. To do so, you must also turn off
type checking for the parameter.
To create a parameter with a complex data type, you should create the data
type in the Types window. Then select the data type from the Types
submenu in the Insert Parameter submenu.
If the submenu does not contain the data type you require, you must create
the data type in the Types window. If the data type already exists in another
window or pane, drag or copy the data type you are editing from one file to
the other or to a type palette file.
12-2
ni.com
Chapter 12
The first and outermost dimension has five elements, with 0 as the
minimum index and 4 as the maximum index. The second dimension has
10 elements, with 1 as the minimum index and 10 as the maximum index.
The third and innermost dimension has three elements, with 1 as the
minimum index and 1 as the maximum index.
After you create a variable, parameter, or property as an array, you can
modify the array bounds by clicking the resize array button for the variable,
parameter, or property in the list view. Select the Bounds tab that is visible
in the Properties dialog box to modify the array bounds.
Empty Arrays
If you want the array to be empty when you start the execution, enable the
Empty option. When you enable this option, the Upper Bounds control for
each dimension dims. Defining an array as initially empty is useful if you
do not know the maximum array size the sequence requires during
execution or if you want to save memory during the periods of execution
when the sequence does not use the array.
12-3
Chapter 12
Figure 12-2 shows variables with different data types on the Variables pane
in the Sequence File window. Table 12-2 describes the data type of each
variable in Figure 12-2.
Local Variable
Data Type
Description
Count
Number
Predefined by TestStand.
Name
String
Predefined by TestStand.
IsOk
Boolean
Predefined by TestStand.
MaxVolts
Volts
DeviceEnabled
Boolean
Impedances
ImpedanceTable
FixtureA
Fixture
12-4
ni.com
Chapter 12
Local Variable
Data Type
Description
ParamsList
TestParamList
TestClass
ObjectReference
Predefined by TestStand.
Single Values
You can modify the value of a single-valued data type by selecting
Properties from the context menu for the variable, parameter, or property
in the list view. This launches the Type Properties dialog box. Refer to
the NI TestStand Help for more information about using the Type
Properties dialog box.
Object References
Object reference properties can contain references to .NET or
ActiveX/COM objects. They are primarily used by the .NET Adapter and
12-5
Chapter 12
Tip
Arrays
If the variable, parameter, or property is an array that contains values, you
access the elements of the array in the pane by clicking the Resize Array
button. You can use the Value column in the Variables pane to modify the
initial value for each element.
12-6
ni.com
Chapter 12
dialog box. Refer to the NI TestStand Help for more information about the
Expression Browser dialog box.
In a code module, use the GetDimensions and SetDimensions methods of
the PropertyObject class to obtain or set the upper and lower bounds of an
array or to change the number of dimensions. Refer to the NI TestStand
Help for more information about the GetDimensions and SetDimensions
methods.
Path
Use the Path standard data type to store a pathname as a string, so that
TestStand can locate path values saved in variables and step properties
when processing sequence files for deployment.
12-7
Chapter 12
the Types Window. The same information applies to the Standard Data Types section.
12-8
ni.com
Chapter 12
If you select the Container type from the submenu, TestStand creates the
data type without any fields.
When you create new data types, begin your types with a unique ID, such as a
company prefix. Using a unique ID helps to prevent name collisions. For example,
NI_InstrumentConfigurationOptions uses NI as a unique ID.
Tip
General Tab
Use the General tab to specify an initial value and comment for the
data type.
Property Flags
TestStand includes a set of property flags that you can modify. Access the
Edit Flags dialog box by clicking Advanced in the General tab on the Data
Type Properties dialog box. For more information about the Edit Flags
dialog box, refer to the NI TestStand Help.
For a description of each of the property flag constants in the TestStand
API, refer to the PropertyFlags Constants and the PropertyObjTypeFlags
Constants topics in the NI TestStand Help.
12-9
Chapter 12
Bounds Tab
Use the Bounds tab to define the bounds for array data types. This tab is
visible only for array data types.
Version Tab
Use the Version tab to edit the version information for the data type, to
determine if the data type is modified, to specify how TestStand must
resolve data type conflicts, and to specify the earliest version of TestStand
that can use the type when the file is saved as an earlier version.
12-10
ni.com
13
This chapter describes how to create custom step types. For more
information about types, refer to Chapter 11, Type Concepts. For more
information about the built-in step types included in TestStand, refer to
Chapter 4, Built-In Step Types.
The Types pane in the Sequence File window only shows the step types that
the steps in the sequence file use. Figure 13-1 shows the Step Types section
of the Types pane in the Types window.
13-1
Chapter 13
Figure 13-1. Step Types Section of the Types Pane in the Types Window
Select Properties from the context menu for the step type in the list
view.
2.
Specify the menu item name for a step type on the Menu tab on the
Step Type Properties dialog box.
3.
Specify the default name for new steps you create from your type and
the description expression for those steps in the General tab on the
Step Type Properties dialog box.
4.
Specify the menu item name (and button name) that invoke the editing
dialog box you (optionally) define for your step type in the Edit Step
section of the Substeps tab on the Step Type Properties dialog box.
13-2
ni.com
Chapter 13
NI-installed type, copy and rename the type in the sequence editor. You must also copy and
rename any supporting modules from the <TestStand>\Components\NI\StepTypes
directory to the <TestStand>\Components\User\StepTypes directory. Make any
changes to the copy to ensure that newer installations of the same version of TestStand do
not overwrite your customizations, or that uninstalling TestStand does not remove the files
you customize.
13-3
Chapter 13
General Tab
Use the General tab to specify a name, description, and comment for the
step type.
You can also specify the default module adapter and the default code
module the step type calls; however, a sequence developer can change the
adapter and code module after creating the step using the Properties tab of
the Step Settings pane or the Step Properties dialog box of a user interface.
If you want a step type to specify a call to a code module and you do not
want the sequence developer to change or edit the module call, National
Instruments recommends that you create a Post-Step substep and call your
code module from this substep instead of specifying a default adapter and
code module. Refer to the NI TestStand Help for more information about
the Substeps tab of the Step Type Properties dialog box.
Property Flags
TestStand includes a set of property flags that you can modify. Access the
Edit Flags dialog box by clicking Advanced on the General tab on the Step
Type Properties dialog box and selecting Flags from the menu. Typically,
you only need to configure property flags when you develop a relatively
sophisticated custom step type. For more information about the Edit Flags
dialog box, refer to the NI TestStand Help.
For a description of each of the property flag constants in the TestStand
API, refer to the PropertyFlags and the PropertyObjTypeFlags topics of
the NI TestStand Help.
Block Structure
TestStand allows a step type to specify whether a step of this type affects
the indentation of steps in a sequence. The Flow Control step types
included with TestStand, such as If, ElseIf, and End, use these built-in
properties. Access the Block Structure dialog box by clicking Advanced
on the General tab of the Step Type Properties dialog box and selecting
Block Structure from the menu. For more information about the Block
Structure dialog box, refer to the NI TestStand Help.
Menu Tab
Use the Menu tab to specify the menu item name that appears for the step
type in the Insert Step submenu. The Insert Step submenu appears in the
context menu of individual sequence views in the Sequence File window.
13-4
ni.com
Chapter 13
Use the Step Type Menu Editor to configure the organization of the Insert
Step submenu. Refer to the NI TestStand Help for a description of the Step
Type Menu Editor.
Substeps Tab
Use the Substeps tab to specify substeps for the step type. You use substeps
to define standard actions, other than calling the code module, that
TestStand performs for all instances of the step type. You implement a
substep through a call to a code module. The code module you call from a
substep is called a substep module. The substeps for a step type define the
editing and run-time behavior for all step instances of that type. For each
step that uses the step type, TestStand calls the same substep modules
with the same arguments.
You cannot add or remove substeps or otherwise alter the module call the
substep performs when configuring a particular step instance. Although
you can specify any number of substeps for a step type, the list of substeps
is not a sequence, and substeps do not have preconditions, post actions, or
other execution options. The order in which Pre- and Post-Step substeps
execute is the only execution option you specify. You can specify four
categories of substeps for a step type:
Pre-Step substeps
Post-Step substeps
Edit substeps
Custom substeps
13-5
Chapter 13
of the menu item and the caption of the button. The Edit substep typically
calls a code module that launches a dialog box in which you can edit the
values of the custom step properties. For example, an Edit substep might
display a dialog box in which you specify the high and low limits for a test.
The Edit substep might then store the high and low limit values as step
properties.
Dialog boxes displayed by the specified Edit substep code must be
modal. For example, all dialog boxes except MFC dialog boxes
use the Engine.NotifyStartOfModalDialogEx and
Engine.NotifyEndOfModalDialogEx methods of the TestStand API. Refer
to the modal examples in the <TestStand>\Examples\ModalDialogs
directory.
Typically, TestStand does not call Custom substeps. However, if you add a
Custom substep named OnNewStep to a step type, the TestStand Sequence
Editor and User Interfaces call the substep each time you create a new step
of that type. For example, the If step type uses an OnNewStep substep to
insert an End step. You can use the TestStand API to invoke a Custom
substep from a code module or a user interface.
Source code is available for many of the substep modules that the
built-in step types use. You can find the source code project files in the
<TestStand>\Components\NI\StepTypes directory. If you want to
use existing step type source code as a starting point for your own step type,
copy the files into the <TestStand>\Components\User\StepTypes
directory and use unique filenames to rename the copies.
Note Threads within TestStand executions can be initialized to use either the
13-6
ni.com
Chapter 13
Note Value changes that you make to default built-in step types properties do not change
the values of properties in existing step instances of its type, even when you prevent users
from modifying the properties.
13-7
Chapter 13
Subdirectory Name
Template Description
Default_Template
DefaultC++.NET
DefaultCSharp.NET
DefaultCVI
DefaultHTB72_Template
DefaultHTB80_Template
DefaultLabVIEW
DefaultVB.NET
DefaultVC++_Template
13-8
ni.com
Chapter 13
13-9
Chapter 13
choose from a list of templates, or uses the selected template on the Module
tab if it exists.
Version Tab
The Version tab for a Step Type Properties dialog box is identical to the
Version tab you use on the Type Properties dialog box for a custom data
type. Refer to the NI TestStand Help for more information about the
Version tab.
13-10
ni.com
14
This chapter describes the TestStand Deployment Utility and the steps
necessary to successfully deploy a TestStand system from a development
computer to one or more target computers.
Configuration files
Workspace files
Sequence files
Hardware drivers
14-1
Chapter 14
2.
3.
4.
14-2
ni.com
Chapter 14
File Collection
When deploying a workspace file, the deployment utility analyzes the
workspace for any dependent files. For example, if your workspace
contains a sequence file, the deployment utility searches the steps in every
sequence of the file to find the referenced code modules. This analysis
continues recursively until all files in the workspace hierarchy are
analyzed.
Because automatically distributing every file used by your sequences could
be problematic, the deployment utility includes a filtering function that
14-3
Chapter 14
removes potentially unwanted files. For example, if you have steps in your
sequences that call functions in Windows system DLLs, the deployment
utility will not deploy those DLLs to the target computer.
The Filter.ini file, located in the <TestStand>\Cfg directory, defines
those files that the deployment utility automatically excludes from any
deployment package it creates. By default, the deployment utility does not
deploy any files located in the <TestStand>\Bin or <TestStand>\
...\NI directories. Additionally, it does not deploy any .exe or .dll files
located in the <Windows> or <Windows>\System32 directories.
You may add automatically excluded files to your workspace file, but do
so with caution to prevent incompatibility issues. For example, if your
development computer operates on Windows XP, and you deploy a
Windows system DLL from that computer to a target computer running
Windows 2000, you will likely experience DLL version incompatibility
issues.
Note The TestStand Deployment Utility does not deploy .NET or ActiveX/COM code
modules. You must manually add these code modules and their supporting files to the
system workspace or install them separately on the target computer.
VI Processing
The deployment utility analyzes all of the LabVIEW VIs that it deploys to
determine their complete hierarchies, including all subVIs, DLLs, external
subroutines, run-time menus, LabVIEW Express configurations, and help
files that your VIs may reference. It then packages these VIs and their
hierarchies to ensure that they will execute on systems that do not have
the LabVIEW Development System installed.
Note You must have the LabVIEW Development System installed on your development
14-4
ni.com
Chapter 14
Windows\System32 directory
Windows directory
If the target file is located outside of these directories, TestStand uses a path
that is relative to the installation directory and then adds the installation
directory to the list of default search paths during the installation.
14-5
Chapter 14
Use unique file namesAlways use unique file names, even if you
are working with a revision of an existing file. Ambiguous file names
can cause the deployment utility to locate incorrect files, which can
result in incorrect behavior.
Note If you are using LabVIEW 8.0 or later, you cannot create deployments that contain
duplicate VIs or subcomponents, such as DLLs. You must ensure that all sequences
included in the deployment image reference the same VI and DLL files.
Use Drivers from the NI Device Driver CDInstall drivers from the
NI Device Driver CD for development systems where you intend to use
14-6
ni.com
Chapter 14
computer, you must activate an appropriate license or run the application in evaluation
mode. Refer to the TestStand 4.0 Quick Start Guide for more information about the
available TestStand license options.
2.
3.
b.
14-7
Chapter 14
4.
b.
Click OK to accept the new settings and close the dialog box.
5.
6.
7.
To use the installer, copy all of the files from the <My Documents>\
TestStand\Deployment\Installer directory to a CD or to a
shared directory on your network.
8.
9.
2.
On the System Source tab, enable the Deploy Files from TestStand
Workspace File option.
3.
Click the File Browse button, which is located next to the Workspace
File Path control.
4.
5.
14-8
ni.com
Chapter 14
6.
Locate unused.dll in the tree view. This DLL is not used by the test
system. Click the checkmark located next to the file in the tree view to
remove it from the distribution.
7.
8.
9.
a.
b.
b.
Click OK to accept the new settings and close the dialog box.
14-9
Chapter 14
2.
On the System Source tab, enable the Deploy Files from TestStand
Workspace File option.
3.
Click the File Browse button, which is located next to the Workspace
File Path control.
4.
5.
Note You should receive a warning in the Status Log on the Build Status tab stating that
From within the sequence editor, load the following workspace file:
<TestStand>\Examples\Deployment\Dynamically_
called_sequence.tsw.
7.
8.
Note You will receive another warning in the Status Log of the Build Status tab stating
that the sequence was called using an expression. You can ignore this second warning
because you have just added the sequence to the workspace.
9.
10. On the Installer Options tab, enable the Install TestStand Engine
option.
14-10
ni.com
Chapter 14
b.
Click OK to accept the new settings and close the dialog box.
for the version of the LabWindows/CVI Run-Time Engine that TestStand installs. If you
are using a later version of LabWindows/CVI to create your user interfaces, you must
install that version of the LabWindows/CVI Run-Time Engine where you deploy the user
interface.
14-11
Chapter 14
1.
2.
3.
4.
5.
Note If you are prompted to resolve the path, select Use a relative path for the file you
selected. Enable the Apply to All option, and then click OK twice to close the open dialog
boxes.
6.
7.
8.
On the System Source tab, enable the Deploy Files From TestStand
Workspace File option.
9.
10. Select the Distributed Files tab and click Yes in the dialog box
requesting permission to analyze the workspace files.
The deployment utility analyzes the workspace file and its dependent
files.
11. Locate TestExec.exe in the tree view and click on the file. The File
Properties section to the right of the tree view should update to reflect
this selection.
12. Enable the Create Program Item option and type Simple CVI UI
into the neighboring string field to add a shortcut menu item for
TestExec.exe.
13. On the Installer Options tab, enable the Install TestStand Engine
option.
14. Click Save to save the build as SimpleCVIUI.tsd.
15. Click Build to create an installer.
14-12
ni.com
Chapter 14
16. To use the installer, copy all of the files from the <My Documents>\
TestStand\Deployment\Installer directory to a CD or to a
shared directory on your network.
17. Go to your target computer and insert the CD or connect to the
network, and then run the setup.exe application to start the installer.
18. Select the target directory where you want to install the tests, and click
Next to begin the installation.
19. Once the installation is complete, load and run the Simple CVI user
interface from the StartAll ProgramsMy TestStand System
Simple CVI program group to verify the installation.
You have completed this example. For more information about the
TestStand Deployment Utility, refer to the NI TestStand Help.
14-13
15
This chapter describes how TestStand uses sequence file translators and
how you can create and install sequence file translators.
15-1
Chapter 15
15-2
ni.com
Chapter 15
CanTranslate
long CanTranslate(const char *fileExtension, IDispatch *readStream, long
*translatorIndex, TS::TSError *error, char
*errorMsg, long errorMsgLength)
Purpose
Returns whether a translator in the DLL can translate the file specified by the file extension
and file stream into a sequence file. Also returns the index of the translator that can translate
the file.
Note If CanTranslate returns a non-zero value for the error parameter, TestStand reports
an error and does not attempt to call CanTranslate for other sequence file translator DLLs
on the system. National Instruments recommends that translators do not return a non-zero
value for the error parameter if an error occurs while attempting to determine whether the
translator can load a file. Instead, translators should typically catch such errors and return
0 from CanTranslate.
Note TestStand supports the use of multi-byte characters. Therefore, when you compare
TestStand strings like Path and Extension, National Instruments recommends that you
use multi-byte safe functions. Using regular string functions may lead to unpredictable
behavior.
Return Value
Returns whether a translator in the DLL can translate the file. A value of 0 indicates that the
translator cannot translate the file. A value other than 0 indicates that the translator can
translate the file.
15-3
Chapter 15
Parameters
Parameter Name
Type
Description
fileExtension
string
readStream
InputStream
translatorIndex
long
error
TSError
errorMsg
string
errorMsgLength
long
GetDescription
void GetDescription(long translatorIndex, char *description, long
descriptionLength, TSError *error, char
*errorMsg, long errorMsgLength)
Purpose
Returns the description of the file extension that the translator supports. TestStand uses the
description in the Open File dialog box.
15-4
ni.com
Chapter 15
Parameters
Parameter Name
Type
Description
translatorIndex
long
description
string
descriptionLength
long
error
TSError
errorMsg
string
errorMsgLength
long
GetExtension
void GetExtension(long translatorIndex, char *fileExtension, long
fileExtensionLength, TSError *error, char
*errorMsg, long errorMsgLength)
Purpose
Returns the file extension that the translator supports. Implement the callback to copy the
extension string to the fileExtension parameter without a leading period character, for
example, "txt" not ".txt".
15-5
Chapter 15
Parameters
Parameter Name
Type
Description
translatorIndex
long
fileExtension
string
fileExtensionLength
long
error
TSError
errorMsg
string
errorMsgLength
long
GetFileFormatVersion
void GetFileFormatVersion(long translatorIndex, const char *path, IDispatch
*readStream, char *fileFormatVersion, long
fileFormatVersionLength, TSError *error, char
*errorMsg, long errorMsgLength)
Purpose
Returns the file format version for the file specified by the path and read stream. Implement
the callback to assign the file format version to the fileFormatVersion parameter. If the
translator does not support reading file format version information from the file, assign
an empty string. TestStand calls this callback to return a version string for the
FileInformation.GetFileFormatVersion method in the TestStand API.
15-6
ni.com
Chapter 15
Note TestStand supports the use of multi-byte characters. Therefore, when you compare
TestStand strings like Path and Extension, National Instruments recommends that you use
multi-byte safe functions. Using regular string functions may lead to unpredictable
behavior.
Parameters
Parameter Name
Type
Description
translatorIndex
long
path
long
readStream
InputStream
fileFormatVersion
string
fileFormatVersionLength
long
error
TSError
15-7
Chapter 15
Parameter Name
Type
Description
errorMsg
string
errorMsgLength
long
GetFileVersion
void GetFileVersion(long translatorIndex, const char *path, IDispatch
*readStream, char *fileVersion, long
fileVersionLength, TSError *error, char
*errorMsg, long errorMsgLength)
Purpose
Returns the file version string for the file specified by the path and file stream.
National Instruments recommends that the file version uses the format of
"major.minor.revision.build". Implement the callback to assign the file version to
the fileVersion parameter. If the translator does not support reading file version information
from the file, assign an empty string. TestStand calls this callback to return a version for the
FileInformation.GetFileVersion method in the TestStand API.
Note If a translator supports obtaining the file version from a file, the
TranslateToSequenceFile callback in the translator must assign the file version to the
PropertyObjectFile.Version property of the translated sequence file. Otherwise, the version
property is "0.0.0.0".
Note TestStand supports the use of multi-byte characters. Therefore, when you compare
TestStand strings like Path and Extension, National Instruments recommends that you use
multi-byte safe functions. Using regular string functions may lead to unpredictable
behavior.
15-8
ni.com
Chapter 15
Parameters
Parameter Name
Type
Description
translatorIndex
long
path
long
readStream
InputStream
fileVersion
string
fileVersionLength
long
error
TSError
errorMsg
string
errorMsgLength
long
15-9
Chapter 15
GetTranslatorCount
long GetTranslatorCount()
Purpose
Returns the number of valid translators the DLL implements. Each translator supports a single
custom file format. If a DLL implements more than one translator, the DLL must maintain
indexes of the translators to support the required callback functions.
Return Value
Returns the number of translators in the DLL.
IsCurrentFileVersion
long IsCurrentFileVersion(long translatorIndex, const char *path, IDispatch
*readStream, TSError *error, char *errorMsg,
long errorMsgLength)
Purpose
Returns whether the version of the file specified by the path and file stream matches
the current version of the translator, an older version of the translator, or a newer
version of the translator. TestStand calls this callback to return a value for the
Engine.IsCurrentSequenceFileVersion method in the TestStand API.
Note TestStand supports the use of multi-byte characters. Therefore, when you compare
TestStand strings like Path and Extension, National Instruments recommends that you use
multi-byte safe functions. Using regular string functions may lead to unpredictable
behavior.
Return Value
Returns one of the following values:
Value
Description
If the translator does not support reading file version information from the file, return a value
of zero.
15-10
ni.com
Chapter 15
Parameters
Parameter Name
Type
Description
translatorIndex
long
path
long
readStream
InputStream
error
TSError
errorMsg
string
errorMsgLength
long
TranslateToSequenceFile
void TranslateToSequenceFile(long translatorIndex, IDispatch *engine,
IDispatch *readStream, IDispatch *seqFile,
TSError *error, char *errorMsg, long
errorMsgLength)
Purpose
Translates the file represented by the file stream and returns a SequenceFile object to
TestStand. Implement the callback to create the SequenceFile object using the engine
parameter, add sequences and steps that correspond to the content of the file stream, and
assign the reference to the seqFile parameter. Set the seqFile parameter to NULL and set
the error parameter to a non-zero value if the translator cannot translate the file stream.
15-11
Chapter 15
Parameters
Parameter Name
Type
Description
translatorIndex
long
engine
Engine
readStream
InputStream
seqFile
SequenceFile
error
TSError
errorMsg
string
errorMsgLength
long
15-12
ni.com
Chapter 15
Error Handling
Each callback function contains three parameters that take care of error
handling: an error code, an error string, and the maximum length for the
error string. When an error occurs within a callback function, set the error
code to a non-zero value. If the assigned value is a TestStand error code,
TestStand uses the standard description for the TestStand error code. If you
want to include additional error details, the callback function can copy the
error details to the error message string. However, the callback must not
exceed the number of characters specified by the maximum length for the
error message. TestStand uses the error message string the callback
function specifies.
Note Avoid throwing exceptions from C callback functions that the TestStand Engine
calls. Exceptions returned to TestStand might be lost or not handled properly. Refer to the
example translator projects included with TestStand for examples of how to return errors
from within callback functions.
15-13
Chapter 15
2.
3.
If you made any changes to the project, rebuild the project to re-create
the translator DLL.
4.
5.
6.
7.
8.
9.
15-14
ni.com
Chapter 15
15-15
Chapter 15
15-16
ni.com
This appendix discusses the purpose and usage of the process models that
come with TestStand. It also describes the directory structure that TestStand
uses for process model files and the special capabilities that the TestStand
Sequence Editor has for editing process model sequence files.
To better understand the information in this appendix, review the Process
Models section of Chapter 1, TestStand Architecture, which discusses the
purpose of process models, entry points, and the relationship between a
process model and a client sequence file.
A-1
Appendix A
Initialization
Initialization
No
Continue
Testing?
Yes
Call the Test Sequence
Generate a Report
Generate a Report
Cleanup
Cleanup
The main differences between the process models are the number of UUTs
that each process model runs for the Test UTTs or Single Pass entry points
and the way each process model relates to and synchronizes with UUTs.
A-2
ni.com
Appendix A
Process Model
Sequential Model
<TestStand>\Components\NI\Models\
TestStandModels\SequentialModel.seq
Parallel Model
<TestStand>\Components\NI\Models\
TestStandModels\ParallelModel.seq
Batch Model
<TestStand>\Components\NI\Models\
TestStandModels\BatchModel.seq
The Sequential model is the default TestStand process model. The Parallel
and Batch models have features to help you implement test stations that test
multiple UUTs at the same time.
You can create your own process models or modify a copy of a process
model that TestStand provides.
A-3
Appendix A
Note When you select the Test UUTs entry point to start an execution that continuously
tests UUTs, any configuration changes that you make to the Report, Database, or Model
Options entry points will not affect UUTs tested in that execution.
TestStand process models have the following Configuration entry points:
For more information about the dialog boxes associated with the
Configuration entry points, refer to the NI TestStand Help.
Sequential Model
The most basic process model is the Sequential process model. The
Sequential process model tests one UUT at a time.
Parallel Model
Use the Parallel model to control multiple independent test sockets. The
Parallel model allows you to start and stop testing on any test socket at any
time. For example, if you have five test sockets for testing radios, the
Parallel model allows you to load a new radio into an open test socket while
the other test sockets are testing other radios.
When you select the Single Pass entry point, the Parallel model launches a
separate execution for each test socket without prompting for UUT serial
numbers.
A-4
ni.com
Appendix A
Batch Model
Use the Batch model to control a set of test sockets that test multiple UUTs
as a group. For example, if you have a set of circuit boards attached to
a common carrier, the Batch model ensures that you start and finish
testing all boards at the same time. The Batch model also provides batch
synchronization features that allow you to specify that a step that applies to
the batch as a whole should run only once per batch instead of once for each
UUT. The Batch model also allows you to specify that certain steps or
groups of steps cannot run on more than one UUT at a time or that certain
steps must run on all UUTs at the same time. The Batch model can generate
batch reports that summarize the test results for the UUTs in the batch.
When you select the Single Pass entry point, the Batch model launches a
separate execution for each test socket without prompting for UUT serial
numbers.
A-5
Appendix A
A-6
ni.com
Appendix A
1
2
3
4
Model Callbacks
Utility Subsequences
Engine Callbacks
A-7
Appendix A
A-8
ni.com
Appendix A
Model Callbacks
The following sequences are Model callbacks in the Sequential process
model, which you can override in a client sequence file:
A-9
Appendix A
A-10
ni.com
Appendix A
produce the report body. If you select the DLL option, TestStand generates reports more
efficiently. However, TestStand will not call ModifyReportEntry callbacks if the DLL
option is enabled.
Utility Subsequences
The following sequences are Utility subsequences that are called by the
other sequences in the Sequential process model:
A-11
Appendix A
Engine Callbacks
The following callbacks are Engine callbacks that are in the Sequential
process model:
Test UUTs
Table A-2 lists the most significant steps of the Test UUTs entry point in
the Sequential process model, in the order that the Test UUTs entry point
performs them.
Table A-2. Order of Actions the Sequential Process Model Test UUTs Entry Point Performs
Action
Number
Description
Remarks
Call ProcessSetupCallback
A-12
ni.com
Appendix A
Table A-2. Order of Actions the Sequential Process Model Test UUTs Entry Point Performs (Continued)
Action
Number
Description
Remarks
Enables ProcessModelPostResultListEntry
and SequenceFilePostResultListEntry
callbacks if on-the-fly report generation
or database logging is enabled.
10
If no more UUTs, go to
Action Number 20.
11
Setup report.
12
13
14
A-13
Appendix A
Table A-2. Order of Actions the Sequential Process Model Test UUTs Entry Point Performs (Continued)
Action
Number
Description
Remarks
15
16
17
18
19
20
21
Single Pass
Table A-3 lists the most significant steps of the Single Pass entry point in
the Sequential process model, in the order that the Single Pass entry point
performs them.
Table A-3. Order of Actions the Sequential Process Model Single Pass Entry Point Performs
Action
Number
Description
Remarks
A-14
ni.com
Appendix A
Table A-3. Order of Actions the Sequential Process Model Single Pass Entry Point Performs (Continued)
Action
Number
Description
Remarks
Enables ProcessModelPostResultListEntry
and SequenceFilePostResultListEntry
callbacks if on-the-fly report generation or
database logging is enabled.
Setup report.
10
11
12
13
A-15
Appendix A
5
2
4
7
1
2
3
4
5
7
6
Engine Callbacks
Utility Subsequences
A-16
ni.com
Appendix A
Utility Sequences
The following sequences are Utility sequences in the Parallel process
model that are used by the main Execution entry points:
A-17
Appendix A
A-18
ni.com
Appendix A
A-19
Appendix A
Model Callbacks
The following sequences are Model callbacks in the Parallel process model,
which you can override with a client sequence file:
Process SetupThe Test UUTs and Single Pass entry points call this
callback from the Setup step group to give the client sequence file an
opportunity to execute any setup steps that must run only once during
the execution of the process model. These setup steps are only run from
the controlling execution. The test socket executions do not call this
callback.
A-20
ni.com
Appendix A
Process CleanupThe Test UUTs and Single Pass entry points call
this callback from the Cleanup step group to give the client sequence
file an opportunity to execute any cleanup steps that must run only
once during the execution of the process model. These cleanup steps
are only run from the controlling execution. The test socket executions
do not call this callback.
Utility Subsequences
The following sequences are Utility subsequences in the Parallel process
model, which are called by the other sequences in the Parallel process
model:
Get Station Info, Get Report Options, Get Database Options, and
Get Model OptionsFor more information about these sequences,
refer to Utility Subsequences in the Sequential Process Model section
of this appendix.
Engine Callbacks
The following callbacks are Engine callbacks that are in the Parallel
process model:
A-21
Appendix A
Test UUTs
The Test UUTs entry point is the sequence that the controlling execution
runs. Table A-4 lists the most significant steps of the Test UUTs entry point
in the order that they are performed.
Table A-4. Order of Actions the Parallel Process Model Test UUTs Entry Point Performs
Action
Number
Description
Remarks
Call ProcessDialogRequests.
10
A-22
ni.com
Appendix A
Action
Number
Description
Remarks
Enable ProcessModelPostResultListEntry
and SequenceFilePostResultListEntry
callbacks if on-the-fly report generation
or database logging is enabled.
If no more UUTs, go to
Action Number 14.
Setup report.
10
11
A-23
Appendix A
Table A-5. Order of Actions the Parallel Process Model Test UUTs Test Socket Entry Point Performs (Continued)
Action
Number
Description
12
13
14
Remarks
Appends to an existing file or creates a
new file.Also adjusts the root tags if the
report format is XML.
Single Pass
The Single Pass entry point is the sequence that the controlling execution
runs. Table A-6 lists the most significant steps of the Single Pass entry point
in the order that they are performed.
Table A-6. Order of Actions the Parallel Process Model Single Pass Entry Point Performs
Action
Number
Description
Remarks
A-24
ni.com
Appendix A
Table A-6. Order of Actions the Parallel Process Model Single Pass Entry Point Performs (Continued)
Action
Number
Description
Remarks
For more information about the
Single Pass Test Socket Entry Point
sequence and what test executions do, refer
to Table A-7.
Action
Number
Description
Remarks
Enables ProcessModelPostResultListEntry
and SequenceFilePostResultLIstEntry
callbacks if on-the-fly report generation and
database logging if enabled.
Setup report.
A-25
Appendix A
Table A-7. Order of Actions the Parallel Process Model Single Pass Test Socket Entry Point Performs
Action
Number
Description
Remarks
A-26
ni.com
Appendix A
7
3
4
5
8
1
2
3
4
5
6
Utility Sequence
Configuration Entry Points
Model Callbacks
7
8
9
Utility Subsequences
Model Callbacks
Engine Callbacks
A-27
Appendix A
Utility Sequences
The following Utility sequences are used by the main Execution entry
points in the Batch process model:
A-28
ni.com
Appendix A
Monitor Batch Threads updates the ModelData parameter for that test
socket to indicate its new state and tells the dialog box to update its
display for that test socket.
A-29
Appendix A
sequence is used to write the test socket reports to a file in test socket
index order when the configuration of report options specifies that they
are to write reports to the same file.
A-30
ni.com
Appendix A
Utility Sequence
This Utility sequence in the Batch process model is used by the hidden test
socket Execution entry points:
A-31
Appendix A
Model Callbacks
The following sequences in the Batch process model are Model callbacks,
which you can use to override in a client sequence file:
Process SetupThe Test UUTs and Single Pass entry points call this
callback from the Setup step group to give the client sequence file an
opportunity to execute any setup steps that must run only once during
A-32
ni.com
Appendix A
the execution of the process model. These setup steps are run from the
controlling execution only. The test socket executions do not call this
callback.
Process CleanupThe Test UUTs and Single Pass entry points call
this callback from the Cleanup step groups to give the client sequence
file an opportunity to execute any cleanup steps that must run only
once during the execution of the process model. These cleanup steps
are run from the controlling execution only. The test socket executions
do not call this callback.
Utility Subsequences
The following Utility subsequences in the Batch process model are called
by other sequences within the Batch process model:
Get Station Info, Get Report Options, Get Database Options, and
Get Model OptionsFor more information about these sequences,
refer to Utility Subsequences in the Sequential Process Model section
of this appendix.
Model Callbacks
The following sequences are Model callbacks in the Batch process model
that are unique to the model and called by the main Execution entry points:
A-33
Appendix A
BatchReportThe Test UUTs and Single Pass entry points call this
callback to generate the contents of the batch report for the UUTs that
ran in the last batch. You can override the BatchReport callback in the
client sequence file if you want to change its behavior entirely. The
Batch process model defines a batch report for a single group of UUTs
as a header, an entry for each UUT result, and a footer. If you do not
override the BatchReport callback, you can override the
ModifyBatchReportHeader, ModifyBatchReportEntry, and
ModifyBatchReportFooter callbacks to customize the batch report.
Engine Callbacks
The following callbacks are Engine callbacks that are in the Batch process
model:
A-34
ni.com
Appendix A
after any step in the process model generates a step result. The
MainSequence model callback steps in the process model sequences
are the only steps that enable the generation of step results.
Test UUTs
The Test UUTs entry point is the sequence that the controlling execution
runs. Table A-8 lists the most significant steps of the Test UUTs entry point
in the order that they are performed.
Table A-8. Order of Actions the Batch Process Model Test UUTs Entry Point Performs
Action
Number
Description
Remarks
A-35
Appendix A
Table A-8. Order of Actions the Batch Process Model Test UUTs Entry Point Performs (Continued)
Action
Number
Description
Remarks
10
11
12
13
14
15
16
17
18
If no more UUTs, go to
Action Number 35.
19
A-36
ni.com
Appendix A
Table A-8. Order of Actions the Batch Process Model Test UUTs Entry Point Performs (Continued)
Action
Number
Description
Remarks
20
21
22
23
24
25
26
27
28
A-37
Appendix A
Table A-8. Order of Actions the Batch Process Model Test UUTs Entry Point Performs (Continued)
Action
Number
Description
Remarks
29
30
31
32
33
34
35
36
37
A-38
ni.com
Appendix A
Table A-9. Order of Actions the Batch Process Model Test UUTs Test Socket Entry Point Performs
Action
Number
Description
Remarks
Enables ProcessModelPostResultListEntry
and SequenceFilePostResultLIstEntry
callbacks if in-the-fly report generation
and database logging is enabled.
If no more UUTs, go to
Action Number 22.
10
11
12
A-39
Appendix A
Table A-9. Order of Actions the Batch Process Model Test UUTs Test Socket Entry Point Performs (Continued)
Action
Number
Description
Remarks
13
14
15
16
17
18
19
20
21
22
A-40
ni.com
Appendix A
Single Pass
The Single Pass entry point is the sequence that the controlling execution
runs. Table A-10 lists the most significant steps of the Single Pass entry
point in the order that they are performed.
Table A-10. Order of Actions the Batch Process Model Single Pass Entry Point Performs
Action
Number
Description
Remarks
A-41
Appendix A
Table A-10. Order of Actions the Batch Process Model Single Pass Entry Point Performs (Continued)
Action
Number
Description
Remarks
10
11
12
13
14
15
16
17
A-42
ni.com
Appendix A
Table A-10. Order of Actions the Batch Process Model Single Pass Entry Point Performs (Continued)
Action
Number
Description
Remarks
18
19
20
21
Action
Number
Description
Remarks
Enables ProcessModelPostResultLIstEntry
and SequenceFilePostResultListEntry
callbacks if on-the-fly report generation
and database logging is enabled.
A-43
Appendix A
Table A-11. Order of Actions the Batch Process Model Single Pass Test Socket Entry Point Performs (Continued)
Action
Number
Description
Remarks
10
11
12
A-44
ni.com
Appendix A
Table A-12. Installed Support Files for the Process Model Files
File Name
Description
ATMLsupport.dll
ATMLSupport.lib
banners.c
SequentialModel.seq,
ParallelModel.seq, and
BatchModel.seq
batchuutdlg.c and
paralleluutdlg.c
c_report.c
ColorselectPopup.c
C source for the functions that display a dialog box in which you
can select a color.
ColorselectPopup.h
main.c
ModelOptions.c
C source for the functions that launch the Model Options dialog
box and read and write the model options from disk.
modelpanels.h
modelpanels.uir
modelsupport2.dll
modelsupport2.fp
A-45
Appendix A
Table A-12. Installed Support Files for the Process Model Files (Continued)
File Name
Description
modelsupport2.h
modelsupport2.lib
modelsupport2.prj
ModelSupport.seq
PropertyObject.xsd
report.c
C source for functions that launch the Report Options dialog box,
read and write the report options from disk, and determine the
report file pathname.
report.h
Report.xsd
reportgen_atml.seq
Subsequences that add the header, result entries, and footer for a
UUT into an ATML test report.
reportgen_html.seq
Subsequences that add the header, result entries, and footer for a
UUT into an HTML test report.
reportgen_txt.seq
Subsequences that add the header, result entries, and footer for a
UUT into an ASCII-text test report.
reportgen_xml.seq
Subsequences that add the header, result entries, and footer for a
UUT into an XML test report.
uutdlg.c
C source for the function that obtains the UUT serial number
from the operator.
You can view the contents of the reportgen_atml.seq,
reportgen_html.seq, reportgen_txt.seq, and
reportgen_xml.seq sequence files in the sequence editor. These files
are model sequence files and contain an empty ModifyReportEntry
callback. Each file has a PutOneResultInReport sequence that calls
ModifyReportEntry. The client sequence file can override the
ModifyReportEntry callback. TestStand requires that all sequence files
A-46
ni.com
Appendix A
that contain direct calls to Model callbacks must also contain a definition
of the callback sequence and must be model files.
The TestStand process model sequence files also contain an empty
ModifyReportEntry callback, even though no sequences in those files call
ModifyReportEntry directly. They contain a ModifyReportEntry callback
so that ModifyReportEntry appears in the Sequence File Callbacks dialog
box for the client sequence file.
Header
Footer
ATML
HTML
AddReportHeader sequence in
AddReportFooter sequence in
reportgen_html.seq
reportgen_html.seq
AddReportHeader sequence in
AddReportFooter sequence in
reportgen_txt.seq
reportgen_txt.seq
AddReportHeader sequence in
AddReportFooter sequence in
reportgen_xml.seq
reportgen_xml.seq
Text
XML
A-47
Appendix A
Table A-14 lists the default process model sequences and C functions in
<TestStand>\Components\NI\Models\TestStandModels that
generate the report body for each step result.
Table A-14. Sequences or C Functions that Generate the Report Body
Sequence
DLL
Not supported
Get_Atml_Report function in
ATML_Report.c in the
ATMLSupport.prj
LabWindows/CVI project.
HTML
PutOneResultInReport sequence in
reportgen_html.seq
PutOneResultInReport_Html
function in c_report.c in the
modelsupport2.prj
LabWindows/CVI project.
Text
PutOneResultInReport sequence in
reportgen_txt.seq
PutOneResultInReport_Txt function
in c_report.c in the
modelsupport2.prj
LabWindows/CVI project.
XML
AddReportBody sequence in
reportgen_xml.seq
AddSequenceCallResult_XML
function in the
modelsupport2.prj
LabWindows/CVI project.
A-48
ni.com
Appendix A
You can also alter the report generation for each client sequence file that
you run. To alter report generation, you override the report generation
Model callbacks in the client sequence file. Table A-15 lists the report
generation Model callbacks.
Table A-15. Report Generation Model Callbacks
Report Header
ModifyReportHeader
Report Footer
ModifyReportFooter
ModifyReportEntry
(TestStand does not call this callback if you select DLL in the
Select a Report Generator for Producing the Report Body section
of the Contents tab on the Report Options dialog box.)
Entire Report
TestReport
In addition, each step in the sequence can add text to its corresponding
result in the report. To make these additions, the step stores the text to add
to the report in its Step.Result.ReportText property.
A-49
This appendix describes step types that you use to synchronize, pass data
between, and perform other operations in multiple threads of an execution,
multiple running executions in the same process, or executions running in
different processes or on separate machines.
To configure these steps, right-click the step and select Configure
<step type> from the context menu, or click the Configure <step type>
button on the edit tab of the Step Settings pane of the sequence editor. You
do not write code modules for these steps.
For more information about the Configuration dialog boxes for
Synchronization step types, refer to the NI TestStand Help. You can
view examples for Synchronization step types in the <TestStand>\
Examples\Synchronization directory.
Synchronization Objects
Most Synchronization step types create and control a particular type of
Synchronization object. Following is a list of the types of Synchronization
objects:
QueueUse a Queue object to pass data from the thread that produces
it to a thread that processes it. For example, a thread that performs tests
asynchronously with respect to the Main sequence might use a queue
to receive commands from the Main sequence.
B-1
Appendix B
B-2
ni.com
Appendix B
Name
When you create a Synchronization object, you can specify a unique name
with a literal string or an expression that evaluates to a string. If an object
with the same name and type already exists, you create a reference to the
existing object. Otherwise, you create a reference to a new Synchronization
object. By creating a reference to an existing object, you can access the
same Synchronization object from multiple threads or executions.
If you specify an empty string as the name for a Synchronization object,
TestStand creates an unnamed Synchronization object that you can access
only through an object reference variable. To associate an unnamed
Synchronization object with an object reference variable, select Use
Object Reference as the object reference lifetime in the <StepType> Step
Configuration dialog box for each step type.
By default, a Synchronization object is accessible only from the operating
system process in which you create it. However, you can make a
Synchronization object accessible from other processes, such as multiple
instances of a user interface, by using an asterisk (*) as the first character
in the name. In addition, you can create a Synchronization object on a
specific machine by beginning the name with the machine name, such
as "\\\\machinename\\syncobjectname". You can then use this
name to access the Synchronization object from any machine on your
network.
To access Synchronization objects on other machines, you must configure
DCOM for the TSAutoMgr.exe server, which is located in the
<TestStand>\Bin directory. Refer to the Setting up TestStand as a Server
for Remote Sequence Execution section of Chapter 5, Adapters, for
information about configuring DCOM and setting up a server for remote
access. Follow the instructions given for the REngine.exe server but
apply them to the TSAutoMgr.exe server.
Note When you specify an object on a remote machine using a string constant in a dialog
box expression control, be sure to escape the backslashes and surround the name in quotes.
For example, use "\\\\machinename\\syncobjname" instead of \\machinename\
syncobjname.
B-3
Appendix B
All named TestStand Synchronization objects share the same name space.
Therefore, you cannot have Synchronization objects with the same name.
Synchronization object names are not case-sensitive.
Lifetime
When you create a Synchronization object, you must specify a lifetime
for the reference you create. The object exists for at least as long as the
reference exists but can exist longer if another reference to it has a different
lifetime.
The object reference lifetime choices are Same as Sequence, Same as
Thread, Same as Execution, and Use Object Reference. If you refer to your
object by name only, then you typically set its reference lifetime to Same as
Sequence, Same as Thread, or Same as Execution. This guarantees that the
object lives as long as the sequence, thread, or execution in which you
create the reference. If you want to explicitly control the lifetime of the
object reference or if you wish to refer to the object using an object
reference variable, select Use Object Reference from the <Step> Reference
Lifetime ring control in the <Step Type> Step Configuration dialog box.
You can use the object reference in place of its name when performing
operations on the object.
You can also use the reference from other threads without performing a
Create operation in each thread. An object reference releases its object
when you set the variable equal to Nothing, when you reuse the variable
to store a different reference, or when the variable goes out of scope. When
the last object reference to a Synchronization object releases, TestStand
disposes of the object.
Some Synchronization objects have an operation, such as Lock or Acquire,
for which you can also specify a lifetime. In this case, the lifetime
determines the duration of the operation.
Timeout
Most Synchronization objects can perform one or more operations that
timeout if they do not complete within the number of seconds you specify.
You can specify that TestStand treats a timeout as an error condition, or you
can explicitly check for the occurrence of a timeout by checking the value
of the Step.Result.TimeoutOccurred property.
B-4
ni.com
Appendix B
To use any Synchronization step type, insert a step of that type and select
Configure <Step Type> from the context menu to launch the <Step Type>
Step Configuration dialog box. Use this dialog box to select an operation
for the step to perform. You can then specify settings for the operation you
select. Some operations store output values to variables you specify. If the
control for an output value is labeled as an optional output, you can leave
the control empty.
The following sections describe the functionality and custom properties of
each Synchronization step type.
Lock
Use a Lock step to ensure that only one thread can access a particular
resource or data item at a time. For example, if you examine and update the
value of a global variable from multiple threads or executions, you can use
a lock to ensure that only one thread examines and updates the variable at
a time. If multiple threads are waiting to lock a lock, they do so in first in
first out (FIFO) order as the lock becomes available.
A thread can lock the same lock an unlimited number of times without
unlocking it. To release the lock, the thread must balance each Lock
operation with an Unlock operation.
Locks in TestStand have deadlock detection. If all of the threads that are
using a set of locks reside on the same machine, and all of the locks in that
set reside on that machine as well, TestStand will detect and report a
run-time error if deadlock occurs as a result of those locks and threads. To
avoid deadlock, you must always lock a set of locks in the same order in
every thread or lock all of the locks required by a thread in one Lock
operation by specifying an array of lock names or references.
National Instruments Corporation
B-5
Appendix B
Note You can also create a lock around a single step using the Synchronization panel on
Step Properties
In addition to the common custom properties, the Lock step type defines the
following step properties:
B-6
ni.com
Appendix B
Rendezvous
Use a Rendezvous step to make threads wait for each other before
proceeding past a specified location. Each thread blocks as it performs the
Rendezvous operation. When the number of blocked threads reaches the
total that you specified when you created the rendezvous, the rendezvous
unblocks all its waiting threads and they resume execution.
Step Properties
In addition to the common custom properties, the Rendezvous step type
defines the following step properties:
B-7
Appendix B
Queue
Use Queue steps to synchronize the production and consumption of data
among your threads. A queue has two primary operationsenqueue and
dequeue. Enqueue places a data item on the queue, and dequeue removes
an item from the queue. The Enqueue operation blocks when the queue is
full, and the Dequeue operation blocks when the queue is empty. If multiple
threads block on the same Queue operation, the threads unblock in first in
first out (FIFO) order.
Step Properties
In addition to the common custom properties, the Queue step type defines
the following step properties:
B-8
ni.com
Appendix B
B-9
Appendix B
Notification
Use Notification steps to notify one or more threads when a particular event
or condition has been met. You can also pass data to the threads you notify.
Step Properties
In addition to the common custom properties, the Notification step type
defines the following step properties:
B-10
ni.com
Appendix B
Wait
Use Wait steps to wait for an execution or thread to complete or for a time
interval to elapse.
B-11
Appendix B
Step Properties
In addition to the common custom properties, the Wait step type defines the
following step properties:
B-12
ni.com
Appendix B
TestStand also adds the following properties at run time to the results for
Wait steps that are configured to wait for a thread or execution.
Batch Synchronization
Use Batch Synchronization steps to define sections of a sequence in which
to synchronize multiple threads that belong to one batch. Typically, you use
these steps in a sequence that you execute using the Batch process model.
More specifically, you place Batch Synchronization steps around one or
more test steps to create a synchronized section.
Use the Synchronization panel on the Properties tab of the Step Settings
pane to synchronize a single step for the multiple threads that belong to
a batch.
Synchronized Sections
Use Batch Synchronization steps to define synchronized sections by
placing a step at the beginning and end of a section of steps in a sequence
and specifying an Enter operation for the beginning step and an Exit
operation for the ending step. While you must place the Enter and Exit steps
in the same sequence, you do not have to place them in the same step group.
B-13
Appendix B
Each thread in a batch that reaches the end of the synchronized section
blocks at the Exit step until all other threads in the batch arrive at their
respective instances of the Exit step.
Serial Sections
Use a Serial section to ensure that each thread in the batch executes the
steps in the section sequentially and in the order that you specify when you
create the batch. When all threads in a batch arrive at their respective
instances of an Enter step for a Serial section, TestStand releases one thread
at a time in ascending order according to the order numbers you assign to
the threads when you add them to the batch using the Batch Specification
step. As each thread reaches the Exit step for the section, the next thread in
the batch proceeds from the Enter step. After all the threads in the batch
arrive at the Exit step, they exit the section together. Refer to the Semaphore
section of this appendix for more information about order numbers.
Parallel Sections
When all threads in a batch arrive at their respective instances of an Enter
step for a Parallel section, TestStand releases all the threads at once. Each
thread that arrives at the Exit step for the section blocks until all threads in
the batch reach that step.
Mismatched Sections
Sections become mismatched when all threads in a batch are blocked at an
Enter or an Exit operation, but they are not all blocked at the same Enter or
B-14
ni.com
Appendix B
Exit operation. This can occur when a sequence has a conditional flow
of execution due to preconditions, post actions, or other flow control
operations.
When TestStand detects mismatched sections, it handles them as follows:
The thread that is at the Enter or Exit step that appears earliest in the
hierarchy of sequences and subsequences proceeds as if all threads in
the batch are at the same step.
If multiple Enter and Exit operations are equally early in the hierarchy
of sequences and subsequences, Enter operations proceed first.
Nested Sections
Nesting of sections can occur within the same sequence or as a result
of calling a subsequence inside of a synchronized section when the
subsequence also contains a synchronized section. When you nest one
section inside another, TestStand honors the inner section if the type of the
outer section is serial or parallel. For example, if you nest one serial section
in another serial section, each thread that enters the outer section proceeds
only until the Enter step of the inner section and then waits for the other
threads to reach the same step.
TestStand ignores the inner section if the type of the outer section is
One Thread Only.
Note You can create a synchronized section around a single step using the
Synchronization panel on the Properties tab of the Step Settings pane rather than
by using explicit Batch Synchronization steps.
Each Exit operation must match the most nested Enter operation.
You must exit a section in the same sequence that you enter it.
Step Properties
In addition to the common custom properties, the Batch Synchronization
step type defines the following step properties:
B-15
Appendix B
Auto Schedule
Use the Auto Schedule step to define a block that contains any number of
Use Auto Scheduled Resource step sub-blocks. The Auto Schedule step
executes each sub-block once. The order in which it executes the
sub-blocks may vary according to the availability of the resources that the
sub-blocks require. You typically use Auto Schedule steps in a sequence
that you execute using the Parallel or Batch process models. The Auto
Schedule step may increase CPU and or resource utilization by directing a
thread that would otherwise wait for a resource locked by another thread to
perform other actions using available resources instead.
Refer to the examples in the <TestStand>\Examples\Auto Schedule
directory to better understand how to use a Auto Schedule step and Use
Auto Scheduled Resource steps.
Step Properties
In addition to the common custom properties, the Auto Schedule step type
defines the following step properties:
B-16
ni.com
Appendix B
Step Properties
In addition to the common custom properties, the Use Auto Scheduled
Resource step type defines the following step properties:
Thread Priority
Use the Thread Priority step to increment or decrement the priority of a
thread so that it receives more or less CPU time than other threads.
When you use this step, you must avoid starving important threads of CPU
time by boosting the priority of another thread too high. When you alter a
thread priority, remember to save the previous priority value and restore it
once your thread no longer requires the altered priority value.
Note Setting the priority of a thread to Time Critical can cause the user interface for your
Step Properties
In addition to the common custom properties, the Thread Priority step type
defines the following step properties:
B-17
Appendix B
Semaphore
Use Semaphore steps to limit concurrent access to a resource to a specific
number of threads. A semaphore stores a numeric count and allows threads
to increment (release) or decrement (acquire) the count as long as the count
stays equal to or greater than zero. If a decrement would cause the count to
go below zero, the thread attempting to decrement the count blocks until
the count increases. When multiple threads are waiting to decrement a
semaphore, the semaphore unblocks the threads in FIFO order whenever
another thread increments the semaphore count.
A semaphore with an initial count of one behaves like a lock, with one
exception. Like a lock, a one-count semaphore restricts access to a single
thread at a time. Unlike a lock, a thread cannot acquire a one-count
semaphore multiple times without first releasing it after each acquire.
When a thread attempts to acquire the semaphore a second time without
releasing it, the count is zero and the thread blocks. Refer to the Lock
section of this appendix for more information about Lock objects.
Step Properties
In addition to the common custom properties, the Semaphore step type
defines the following step properties:
B-18
ni.com
Appendix B
Batch Specification
When you write a process model, you can use Batch Specification steps to
define a group of threads where each thread in the group runs an instance
of the client sequence file. Defining a group allows you to perform Batch
Synchronization operations on the threads in the group. The TestStand
Batch process model uses Batch Specification steps to create a batch that
contains a thread for each test socket. For more information about the Batch
process model refer to the Batch Process Model section of Appendix A,
Process Model Architecture. For more information about batch
synchronization, refer to the Batch Synchronization section of this
appendix.
B-19
Appendix B
When you test each UUT in a separate thread, you use the Batch
Specification step to include the UUT threads in one batch. Use the Batch
Synchronization step to control the interaction of the UUT threads as they
execute the test steps.
Step Properties
In addition to the common custom properties, the Batch Specification step
type defines the following step properties:
B-20
ni.com
TestStand includes the following built-in step types that you can use to
communicate with a database:
Open Database
Close Database
Data Operation
Property Loader
2.
Use the Open SQL Statement step type to issue a SQL query on tables
in the database.
3.
Create new records, then get and update existing records using Data
Operation step types.
4.
Use the Close SQL Statement step type to close the SQL query.
5.
Close the database connection using the Close Database step type.
Note Use the Property Loader step type to import property and variable values from a file
or database during an execution.
To configure these steps, right-click the step and select Edit <step type>
from the context menu, or click the Edit <step type> button on the Edit
tab on the Step Settings pane of the sequence editor.
The following sections describe each Database step type and their custom
step properties.
You can view examples of Database step types in the <TestStand>\
Examples\Database and <TestStand>\Examples\Property
Loader directories. Refer to the NI TestStand Help for more information
about each of the Database step types.
C-1
Appendix C
Open Database
Use the Open Database step type to open a database for use in TestStand.
An Open Database step returns a database handle that you can use to open
SQL statements.
Step Properties
The Open Database step type defines the following step properties in
addition to the common custom properties:
Step Properties
The Open SQL Statement step type defines the following step properties
in addition to the common custom properties:
C-2
ni.com
Appendix C
Tip
Step Properties
The Close SQL Statement step type defines the following step property in
addition to the common custom properties:
C-3
Appendix C
Close Database
Use the Close Database step type to close the database handle that you
obtain from an Open Database step type.
Tip National Instruments recommends placing Close Database steps in the Cleanup step
group.
Step Properties
The Close Database step type defines the following step property in
addition to the common custom properties:
Note TestStand does not automatically close open database handles. You must call a
Close Database step for your open handles. If you abort an execution, you must exit the
application process that loaded the TestStand Engine to guarantee that TestStand frees all
database handles. Selecting Unload All Modules from the File menu does not close the
handles.
Data Operation
Use the Data Operation step type to perform operations on a SQL statement
that you open with an Open SQL Statement step. With the Data Operation
step, you can fetch new records, retrieve values from a record, modify
existing records, create new records, and delete records. For SQL
statements that require parameters, you can create parameters and set input
values, execute statements, close statements, and fetch output parameter
values.
Step Properties
The Data Operation step type defines the following step properties in
addition to the common custom properties:
C-4
ni.com
Appendix C
Note You cannot encapsulate your data operations within a transaction. Transactions are
not available in the current version of the TestStand Database step types.
C-5
Appendix C
Property Loader
Use the Property Loader step type to dynamically load the values for
properties and variables from a text file, a Microsoft Excel file, or a DBMS
database at run time. The Property Loader step type supports loading limits
from all TestStand-supported databases except for MySQL. You can either
apply the values that you load to the currently running sequence or to all
subsequent invocations of a sequence. For example, you can develop a
common sequence that can test two different models of a cellular phone,
where each model requires unique limit values for each step. If you use step
properties to hold the limit values, you can include a Property Loader step
in the sequence to load the correct limit values into the step properties.
When you do this, place a Property Loader step in the Setup step group of
a sequence. This directs the Property Loader step to initialize the property
and variable values each time before the steps in the Main step group
execute.
You can load values for properties into sequences so that all subsequent
invocations of the sequences in the file use the dynamically loaded property
values. For example, you can include the Property Loader step in a
ProcessSetup model callback that the execution calls once, allowing
the execution to call the client sequence file multiple times with the
dynamically loaded property values.
Limits.Low
9.0
8.5
Limits.String
"SYSTEM OK"
<Locals>
Count
Limits.High
11.0
9.5
Variable Value
100
C-6
ni.com
Appendix C
<FileGlobals>
Count
Variable Value
99
<StationGlobals>
Power_On
Variable Value
False
End Marker
In the step name section, the row names correspond to step names, and the
column headings correspond to the names of step properties. Not all
columns apply to each row, and each row contains only values for the
columns that define properties that exist in the rows corresponding step.
For variable sections, each row specifies the name of the property and its
corresponding value. Starting and ending data markers designate the
bounds of the table. A data file can contain more than one block of data.
Use the Importing/Exporting Properties command in the Tools menu to
export property and variable data in the appropriate table format. Refer to
the examples in the <TestStand>\Examples\Property Loader\
LoadingLimits directory and the NI TestStand Help for more
information about loading limits from files.
Note When you specify starting and ending data markers in the Import/Export Properties
dialog box, enter the marker text in the text controls without double quotes. However, when
you specify starting and ending data markers in the expression controls of the Edit Property
Loader dialog box, you must surround literal marker text values with double quotes.
C-7
Appendix C
LIMITS_
LOW
LIMITS_
STRING
POWER_ON
COUNT
SEQUENCE
NAME
Voltage at Pin A
11
Phone Test.seq
Voltage at Pin B
8.5
9.5
Phone Test.seq
"SYS OK"
Phone Test.seq
<Locals>
100
Phone Test.seq
<File Globals>
99
Phone Test.seq
<Station Globals>
False
Phone Test.seq
Frequency at Pin A
100,000
10,000
Frequency
Test.seq
Frequency at Pin B
90,000
9,000
Frequency
Test.seq
"OK"
Frequency
Test.seq
STEPNAME
For database sources, the Property Loader step can filter the data that the
SQL statement returns so that you only load values from rows that contain
specific column values. This is equivalent to the starting and ending data
markers when importing values from a file. For example, in Table C-1
you can load the rows only for rows where the SEQUENCE NAME field
contains the value Phone Test.seq.
Refer to the example in the <TestStand>\Examples\Property
Loader directory and the NI TestStand Help for more information about
loading limits from database tables.
Step Properties
In addition to the common custom properties, the Property Loader step type
defines the following step properties:
C-8
ni.com
Appendix C
WriteNullNot used.
StatusNot used.
C-9
Appendix C
C-10
ni.com
Appendix C
C-11
Note The IVI-C step types support the IVI-C class compliant instrument drivers. You can
use the ActiveX/COM Adapter when you use the IVI-COM class compliant instrument
drivers.
TestStand provides several step types that enable you to configure and
acquire data from Interchangeable Virtual Instrument (IVI) class-compliant
instruments. IVI is an instrument driver standard that provides common
programming interfaces for several classes of instruments. IVI drivers exist
for a number of popular instruments, including all applicable devices
from National Instruments. For more information about IVI and IVI
class-compliant instrument drivers, refer to the National Instruments Web
site at ni.com/ivi, Appendix F, Instrument Drivers, or the NI TestStand
Help.
You can view examples of the IVI-C step types in the <TestStand>\
Examples\IVI directory.
TestStand includes the following IVI-C step types:
D-1
Appendix D
When you need to call specific driver functions that an IVI class does
not support.
When your instrument does not conform to an IVI class or does not
have an IVI driver.
Note TestStand does not install IVI-compliant instrument drivers or configure sample
logical names in MAX. Refer to the application help for the IVI Instruments category
in MAX for more information about where to obtain and how to install IVI-compliant
instrument drivers, as well as information about how to create logical names that the
IVI-C step types use.
For more information about IVI and IVI class-compliant instrument drivers, refer to the
National Instruments Web site at ni.com/ivi, Appendix F, Instrument Drivers, or the
NI TestStand Help.
D-2
ni.com
Appendix D
Figure D-1 shows the Configure operation for the Dmm step.
Each Edit <Step Name> Step dialog box contains a Logical Name ring
control, which you use to select a logical name or a virtual instrument name
that you configure in MAX. Use the buttons to the right of the Logical
Name ring control to launch the Expression Browser dialog box and to
launch MAX.
Note All IVI names, such as logical names, virtual names, and channel names, are
case-sensitive. If you use logical names, driver session names, or virtual names in your
program, be sure that the name you use exactly matches the name in the IVI Configuration
Store file. Do not make any variations in the case of the characters in the name.
The Edit <Step Name> Step dialog box also contains an Operation ring
control, which specifies the action the step performs. Typical operations
include configuring the instrument, taking a reading, or showing/hiding a
graphical display panel for the instrument, also called a soft front panel
(SFP). Depending on the instrument, you can also select other low-level
actions such as Initiate, Send Software Trigger, or Get Information.
D-3
Appendix D
Note When you select an operation, the area under the Operation ring control changes.
Extensions
The Configure operation configures the instrument to match the settings
as specified by the step. To enable instrument configuration controls that
apply to features that IVI defines as class extensions, select from the
Extensions tab the extended features that your instrument supports.
Figure D-2 shows the Extensions tab for the IVI Dmm step.
D-4
ni.com
Appendix D
The Configure operation handles only those settings that are supported
by the base class specification and the extension groups specified on the
Extensions tab. For the best results, enable only those extensions that are
required for your application.
Operation Settings
Many of the operations, such as Configure and Fetch, allow you to specify
where the dialog box saves the Operation settings for the step. For example,
you could save the Configure settings in a shared variable so that multiple
steps could use the same settings. Figure D-3 shows the Operation Settings
tab for the Configure operation.
The Configuration Source ring control specifies the name of the property
or variable where TestStand stores the settings when you click OK. The
Load button reloads the settings from the specified property or variable
location.
D-5
Appendix D
Validating a Configuration
When you edit a step that configures an instrument, click Validate to test
your configuration before closing the Edit <Step Name> Step dialog box.
Refer to the NI TestStand Help for more information about the Validate IVI
Configuration dialog box.
Get Information
Use the Get Information operation for each instrument class step type to
retrieve low-level status and information from the instrument. For the
Get Information operation, you must specify an expression that contains a
variable or property to which the step assigns the retrieved value. In some
cases, you must specify a channel name for the value to retrieve.
D-6
ni.com
Appendix D
IVI Dmm
Use the IVI Dmm step type to perform single-point and multipoint
measurements with digital multimeters.
Step Operations
The IVI Dmm step type supports the following operations:
InitiateInitiates a measurement.
Refer to the NI TestStand Help for more information about each of these
operations.
Step Properties
In addition to the common custom properties, the IVI Dmm step type
defines the following step properties:
D-7
Appendix D
IVI Scope
Use the IVI Scope step type to acquire a voltage waveform from an analog
input signal with oscilloscopes.
Step Operations
The IVI Scope step type supports the following operations:
InitiateInitiates a measurement.
Refer to the NI TestStand Help for more information about each of these
operations.
D-8
ni.com
Appendix D
Step Properties
In addition to the common custom properties, the IVI Scope step type
defines the following step properties:
IVI Fgen
Use the IVI Fgen step type to instruct function generators to generate
predefined waveforms or custom waveforms using arbitrary waveform
generators.
Step Operations
The IVI Fgen step type supports the following operations:
D-9
Appendix D
Refer to the NI TestStand Help for more information about each of these
operations.
Step Properties
In addition to the common custom properties, the IVI Fgen step type
defines the following step properties:
Step Operations
The IVI Power Supply step type supports the following operations:
D-10
ni.com
Appendix D
Refer to the NI TestStand Help for more information about each of these
operations.
Step Properties
In addition to the common custom properties, the IVI Power Supply step
type defines the following step properties:
D-11
Appendix D
IVI Switch
The IVI Switch step type provides a high-level programming layer for
instruments that are compliant with the IVI Switch class and National
Instruments Switch Executive virtual devices. A switch is an instrument
that can establish a connection between two I/O channels. The IVI Switch
step type also supports IVI-compliant instruments that can perform trigger
scanning and trigger-synchronized establishing or breaking of the paths.
The IVI Switch step type allows you to connect and disconnect paths and
routes, determine the connectivity of two switches or the state of a route,
and query the state of the switch module or virtual device.
Switching Tab
The Switching panel of the Properties tab on the Step Settings pane
specifies a switching action that TestStand performs around the execution
of the step. This feature is available only if you install the National
Instruments Switch Executive software. Refer to the NI TestStand Help
for more information about the Switching tab on the Step Properties
dialog box.
For more information about NI Switch Executive, refer to ni.com/
switchexecutive.
D-12
ni.com
Appendix D
Route name
Unique nameA combination of the IVI device logical name and IVI
channel name separated by a "/" delimiter
Step Operations
The IVI Switch step type supports the following IVI switch operations:
D-13
Appendix D
The IVI Switch step type supports the following Switch Executive
operations:
Refer to the NI TestStand Help for more information about each of these
operations.
Step Properties
In addition to the common custom properties, the IVI Switch step type
defines the following step properties:
D-14
ni.com
Appendix D
IVI Tools
Use the IVI Tools step type to perform low-level operations on
an instrument.
Step Operations
The IVI Tools step type supports the following operations:
Get Error InfoReturns error information for the last IVI error for
a session.
Refer to the NI TestStand Help for more information about each of these
operations.
Step Properties
In addition to the common custom properties, the IVI Tools step type
defines the following step properties:
D-15
Appendix D
D-16
ni.com
Step Properties
In addition to the common custom properties, the Check Remote System
Status step type defines the following step properties:
Run VI Asynchronously
Use the Run VI Asynchronously step type to run a VI in a new thread in the
TestStand execution.
Step Properties
In addition to the common custom properties, the Run VI Asynchronously
step type defines the following step properties:
E-1
Appendix E
Deploy Library
Use the Deploy Library step type to deploy or undeploy shared variables
defined in a LabVIEW project library file to the local system.
Step Properties
In addition to the common custom properties, the Deploy Library step type
defines the following step properties:
E-2
ni.com
Instrument Drivers
F-1
Appendix F
Instrument Drivers
F-2
ni.com
Appendix F
Instrument Drivers
class driver and the specific instrument for the extensions that the
instrument supports. A development environment, such as LabVIEW or
LabWindows/CVI, can call into the class driver or directly into the specific
instrument driver.
The IVI Foundation defines two architectures for IVI drivers: IVI-C, which
is based on ANSI C, and IVI-COM, which is based on Microsoft COM
technology. Refer to ni.com/ivi for more information about IVI
instrument drivers.
F-3
If you searched ni.com and could not find the answers you need, contact
your local office or NI corporate headquarters. 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 addresses, and current events.
G-1
Index
A
HTBasic, 1-7
debugging, 5-15
source code template, 5-2
specifying, 5-15
subroutine, passing and returning
data, 5-16
LabVIEW, 1-6
creating event handlers (table), 9-17
localization functions (table), 9-25
source code template, 5-2
TestStand Utility Functions Library
(table), 9-21
updating menus (table), 9-24
LabWindows/CVI, 1-6
creating event handlers (table), 9-17
localization functions (table), 9-25
source code template, 5-2
TestStand Utility Functions Library
(table), 9-21
updating menus (table), 9-24
.NET, 1-7, 5-7
configuring, 5-11
creating event handlers (table), 9-17
debugging .NET assemblies, 5-8
localization functions (table), 9-25
options for stepping out of Visual
Studio .NET, 5-9
source code template, 5-2
TestStand Utility Functions Library
(table), 9-21
updating menus (table), 9-24
overview, 1-6
Sequence, 1-7, 4-15
parameters, defining, 5-17
remote sequence execution, 5-17
setting up TestStand, 5-18
Windows 2000 SP4, 5-21
I-1
Index
C
C++ (MFC)
creating event handlers (table), 9-17
localization functions (table), 9-25
menu open notification methods
(table), 9-24
Utility Functions Library
using (table), 9-22
C/C++ DLL Adapter, 1-7, 5-3
Call Executable step, 4-22
call stack, 1-12
Call Stack pane, 3-6
callback
customizing, 8-2
empty sequence (note), 10-10
Engine, 1-16, 3-13, A-12, A-21, A-34
categorization, 10-6
predefined (note), 10-6
B
Batch process model, A-5, A-26
Configuration entry point, A-31
Engine callbacks, A-34
hidden Execution entry points, A-31
main Execution entry points, A-28
Model callbacks, A-32, A-33
sequences (figure), A-27
Single Pass entry point, A-41
Test UUTs Test Socket entry
point, A-38
I-2
ni.com
Index
I-3
Index
control
changing, 9-12
specifying, 9-12
information source
caption, 9-10
image, 9-11
numeric value, 9-12
list (table), 9-7
view, 9-7
container property, 1-9
fields, adding, 12-10
context menu, creating data types (table), 12-1
Continue step, 4-19
control connections
specifying and changing, 9-12
controls
manager
Application, 9-3
connecting, 9-3
ExecutionView, 9-4
SequenceFileView, 9-4
visible, 9-3
connecting, 9-6
table, 9-5
conventions used in the manual, xv
creating
Editor applications, 9-13
translator DLLs, 15-2
custom data types, 1-9
creating and modifying, 12-8
custom property, 1-10
See also step properties
built-in step types, 4-5
lifetime of, 3-3
result properties, 3-8
step, 1-10
custom sequence file translators, 15-1
custom sequence files
versioning, 15-14
D
data link
connection strings, 6-5
definition, 6-5
specifying, 6-13
using, 6-13
Data Operation step type, C-4
data source, 4-12
data type
See also built-in; step type; types
built-in, customizing, 12-9
common properties, 12-9
container, 12-2
creating
categories of types, 12-2
custom data type, 12-8
instances (table), 12-1
custom
creating, 12-8
data types
properties, 12-10
modifying, 12-8
I-4
ni.com
Index
customizing, 8-2
displaying, 12-3
local variables (table), 12-4
modifying, 12-5
named, 1-9, 12-2
simple, 12-2
single-valued, modifying, 12-5
standard named, 1-9
using, 12-7
using, 12-1
database, 6-1
adding support, 6-10
creating default result tables, 6-10
data links, 6-5
discarding results
on-the-fly database logging, 6-12
on-the-fly report generation, 6-18
fields and columns, 6-1
logging, 6-6
how to, 6-7
Logging property in sequence
context, 6-8
on-the-fly, 6-12
records and rows, 6-1
result tables
adding support for other database
management systems, 6-10
creating, 6-10
default TestStand table schema, 6-9
sessions, 6-3
specifying data links, 6-13
specifying schemas, 6-13
step type
Close Database, C-2
Close SQL Statement, C-3
Data Operation, C-4
Open Database, C-2
Open SQL Statement, C-2
Property Loader, C-6
loading from database, C-7
loading from file, C-6
tables, 6-1
technologies, 6-3
table, 6-4
viewing data, 6-12
database file, 6-5
Database Viewer, 6-12
result tables, creating, 6-14
debug
DLLs, 5-3
LabVIEW 7.1.1, 5-6
LabVIEW 8 or later, 5-5
loading subordinate, 5-6
options for stepping out of DLL
functions (table), 5-4
options for stepping out of functions
(table), 5-4
reading parameter information, 5-7
using Microsoft Foundation Class
(MFC) Library, 5-6
HTBasic Adapter, 5-15
.NET assemblies, 5-8
panes, 3-6
Defining, 7-3
Deploy Library step, E-2
deploying
custom sequence files, 15-16
translators, 15-15
deployment utility, 2-6, 14-1
configuring, 14-3
engine, deploying, 14-7
file
collection, 14-3
filtering, 14-3
guidelines, 14-6
identifying components for
deployment, 14-2
installable images, 14-2
installer, creating, 14-2
path references, 14-5
sequence file processing, 14-5
setup, 14-2
I-5
Index
documenting
custom user interfaces, 9-32
drivers, F-1
IVI, F-2
IVI-C, F-3
IVI-COM, F-3
LabVIEW Plug and Play, F-1
LabWindows/CVI Plug and Play, F-2
NI resources, G-1
Plug and Play, F-1
dynamic array sizing, 12-6
E
Edit substep, 13-5
editing
sequence files, 10-3
callback sequences, 10-5
entry point sequences, 10-5
normal sequences, 10-4
Editor applications, 9-12
creating, 9-13
Else If step, 4-17
Else step, 4-17
empty arrays, 12-3
End step, 4-19
engine, 1-6
deploying, 14-7
Engine callback, 1-16, 3-13
Batch process model, A-34
categorization, 10-6
Parallel process model, A-21
predefined (note), 10-6
Sequential process model, A-12
special requirements (notes), 10-9
table, 10-7
entry point
Configuration, 1-15, 10-5
Execution, 1-15, 3-4, 10-5
sequence, 10-5
I-6
ni.com
Index
error
flag, 4-6
run-time, 1-12, 4-6
caution, 4-4
handling, 3-18
standard data type, 12-7
step, 3-17
error handling
tanslators, 15-13
escape codes (table), 8-8
event handling
creating event handlers, 9-17
DisplayExecution event, 9-19
DisplaySequenceFile event, 9-18
ExitApplication event, 9-18
ReportError event, 9-18
shut down, 9-19
startup, 9-19
Wait event, 9-18
events
handling, 9-17
examples (NI resources), G-1
exceptions, 4-6
execution
aborting, 3-5
definition, 3-1
direct, 3-4
Execution window, 3-3
interactive, 3-5
remote sequence, 5-17
run-time errors, 3-17
starting, 3-4
step, order of actions (table), 3-14
terminating, 3-5, 3-6
execution debugging panes, 3-6
Execution entry point, 1-15, 3-4, 10-5
Batch process model, A-28
Parallel process model, A-17
Sequential process model, A-8
F
failure chain in reports, 6-16
failure of steps, 3-17
Fgen step type, D-1, D-9
fields, in databases, 6-1
file type
configuration, location, 9-30
database, 6-5
project, 2-5
string resource, 8-6
I-7
Index
I
If step, 4-16
image connections, 9-11
information source connection
caption, 9-10
image, 9-11
numeric value, 9-12
Insertion Palette, 4-2
figure, 2-4, 4-2
note, 4-3
InsertionPalette control
description (table), 9-5
view connections, 9-7
installer, deployment utility, 14-2
instance step type property, 13-3
instrument drivers, F-1
IVI, F-2
IVI-C, F-3
IVI-COM, F-3
NI resources, G-1
Plug and Play, F-1
LabVIEW, F-1
LabWindows/CVI, F-2
Instrument Session Manager, D-6
interactive execution
nested, 3-5
root, 3-5
interactive mode, 3-5
interface pointer, obtaining, 9-16
IVI drivers, F-2
G
General panel, 4-3
global variables, definition
sequence file, 2-2
station global, 1-7
Goto step, 4-19
H
handling events, 9-17
help, technical support, G-1
I-8
ni.com
Index
IVI-C
editing steps, D-2
extensions, D-4
operation settings, D-5
validating configuration, D-6
Instrument Session Manager, D-6
soft front panel, D-6
step type
DMM, D-1, D-7
Fgen, D-1, D-9
Power Supply, D-1, D-10
Scope, D-1, D-8
Switch, D-1, D-12
Tools, D-1, D-15
IVI-C drivers, F-3
IVI-COM drivers, F-3
LabWindows/CVI
creating event handlers (table), 9-17
localization functions (table), 9-25
menu open notification methods
(table), 9-24
Plug and Play drivers, F-2
user interface controls, 9-14
Utility Functions Library (table), 9-21
LabWindows/CVI Adapter, 1-6, 5-2
language, 9-25
setting, 8-7
legacy code template, 13-7
library
TestStand UI Controls, 9-9
TestStand Utility Functions, 9-15, 9-20
C++ (MFC) (table), 9-22
LabVIEW (table), 9-21
LabWindows/CVI (table), 9-21
localization functions (table), 9-25
.NET (table), 9-21
license checking, 9-13
lifetime
custom step properties, 3-3
local variables, 3-3
parameters, 3-3
Synchronization step types, B-4
link, data, 6-5
specifying, 6-13
using, 6-13
list connections (table), 9-7
ListBar control, description (table), 9-6
ListBar page, list connections, 9-8
ListBox control
connecting lists, 9-7
description (table), 9-6
list connections, 9-8
local variables, 2-4
data types (table), 12-4
lifetime, 3-3
sequence local, 1-12
localization, 9-25
K
KnowledgeBase, G-1
L
Label control
caption connections, 9-10
description (table), 9-5
Label step, 4-20
LabVIEW, E-1
creating event handlers (table), 9-17
localization functions (table), 9-25
menu open notification methods
(table), 9-24
Plug and Play drivers, F-1
user interface controls, 9-14
Utility Functions Library (table), 9-21
Utility step types
Check Remote System Status, E-1
Deploy Library, E-2
Run VI Asynchronously, E-1
LabVIEW Adapter, 1-6, 5-2
LabVIEW Utility step type, E-1
I-9
Index
M
main Execution entry points, Batch process
model, A-28
Main sequence, 1-14
Main step group, 1-11
manager controls
Application Manager control, 9-3
connecting, 9-3
visible controls, 9-6
ExecutionView Manager control, 9-4
SequenceFileView Manager control, 9-4
menu
Configure, 8-11
items, dynamic, inserting, 9-23
notification methods (table), 9-24
Tools
customizing, 8-2
modifying, 8-2
updating, 9-23
merge sequence file, 2-2
Message Popup step, 4-20
Microsoft Access
creating result tables, 6-14
example data link and result table
setup, 6-13
Open Database Connectivity
(ODBC), 6-3
specifying data link and schema, 6-13
Microsoft databases
ActiveX Data Objects (ADO), 6-3
Object Linking and Embedding Database
(OLE DB), 6-3
Microsoft Foundation Class (MFC)
DLL, using, 5-6
N
named data type, 1-9
National Instruments support and
services, G-1
nested interactive execution, 3-5
.NET
creating event handlers (table), 9-17
localization functions (table), 9-25
menu open notification methods
(table), 9-24
.NET Adapter, 1-7, 5-7
configuring, 5-11
.NET assemblies, debugging, 5-8
object reference, modifying, 12-5
Utility Functions Library (table), 9-21
NI subdirectory, 8-4
NI support and services, G-1
normal sequence file, 2-1, 10-4
Notification step, B-10
Numeric Limit Test step, 4-9
step properties, 4-10
numeric value connection, 9-12
I-10
ni.com
Index
object
Execution, 1-16
SequenceContext, 1-8
Synchronization, B-1
common attributes, B-3
User, 7-3
Object Linking and Embedding Database
(OLE DB), 6-3
data links, using, 6-13
object reference properties, 12-5
Open Database Connectivity (ODBC)
Administrator, using, 6-13
data links, using, 6-13
database technology, 6-3
Open Database step type, C-2
Open SQL Statement step type, C-2
Operator Interface applications, 9-12
operator interface. See user interface
Output pane, 3-7
P
pane
Call Stack, 3-6
Output, 3-7
Sequences, 2-5
Steps, 2-3, 2-5
Threads, 3-6
Types, 2-2, 11-3
Variables, 2-2, 2-3, 2-4, 2-5, 3-6
View Types For, 11-3
Watch View, 3-7
Workspace, 2-5
panel
Expressions, 4-5
General, 4-3
Looping, 4-4
Post Actions, 4-4
Preconditions, 4-5
I-11
Index
ni.com
Index
modifying
object references, 12-5
single-valued properties, 12-5
monitoring, 3-2
property-array property, 1-9
single-valued property, 1-9
standard result, 3-10
using in expressions, 1-8
Property Browser panel, 4-5
property flags. See flag
Property Loader step type, 4-23, C-6
loading from database, C-7
loading from file, C-6
property-array property, 1-9
Q
query, record set, 6-2
Queue step, B-8
R
reading parameter information, 5-7
records, in databases, 6-1
remote sequence execution, 5-17
TestStand server, 5-18
security permissions (tip), 5-19
Windows 2000 SP4, 5-21
Windows XP SP2, 5-19
Rendezvous step, B-7
report
batch, 6-16
failure chain, 6-16
generating, on-the-fly, 6-17
result collection, 3-7
schema, XML, 6-18
special formatting (tip), 6-17
test report, implementation, 6-15
using test reports, 6-16
I-13
Index
compare, 2-2
deploying, custom, 15-15
deployment utility, processing, 14-5
front-end callback, 2-1
global variable, 1-13
merge, 2-2
model, 2-1
normal, 2-1
special editing capabilities for process
model sequence files
callback sequences, 10-5
entry point sequences, 10-5
marking as process model, 10-3
normal sequence file, 10-4
specifying a process model file, 10-2
station callback, 2-1
type concepts, 11-3
type definitions, 2-2
types of sequence files, 2-1
versioning, custom, 15-14
views, 2-4
sequence file global variables, 2-2
sequence file translators, 15-1
See also required callback functions
creating translator DLLs, 15-2
custom, 15-1
deploying, 15-15
error handling, 15-13
examples, 15-13
using, 15-1
versioning, 15-14
Sequence File window, 2-4
figure, 2-4
sequence local variables, 1-12
sequence parameters, 1-12
SequenceContext object, 1-8
SequenceFileView Manager, 9-4
connecting views, 9-7
Sequences pane, 2-5
sequences, callbacks, 2-1
S
schema
See also database
specifying, 6-13
Scope step type, D-1, D-8
Select step, 4-19
Semaphore step, B-18
sequence, 1-1, 2-3
built-in step properties, 1-13
callbacks, 1-15, 10-5
entry point, 10-5
executing directly, 3-4
note, 3-4
files, 1-13
local variables, 1-12, 2-4
parameters, 1-12, 2-3
step groups, 1-11, 2-3
Sequence Adapter, 1-7, 4-15
parameters, defining, 5-17
remote sequence execution, 5-17
specifying, 5-17
Sequence Call step, 4-15
sequence context
Logging property, 6-8
using, 3-2
sequence editor, 1-1, 1-2
startup options
configuring, 8-8
table, 8-9
sequence execution, 1-16
See also execution
sequence file, 1-1
callbacks, 2-1
client, 1-15
I-14
ni.com
Index
SequenceView control
view connections, 9-7
SequenceView control, description (table), 9-6
Sequential process model, A-4, A-6
Configuration entry points, A-8
Engine callbacks, A-12
Execution entry point, A-8
Model callbacks, A-9
sequences (figure), A-7
Single Pass entry point, A-14
Test UUTs entry point, A-12
utility subsequences, A-11
Session Manager, D-6
settings, custom application, 9-30
Setup step group, 1-11
shut down, 9-19
Single Pass Test Socket entry point
Batch process model, A-43
Parallel process model, A-25
Single Pass Execution entry point, 10-1, A-3
Batch process model, A-41
Parallel process model, A-24
Sequential process model, A-14
single-valued data type, 12-5
single-valued property, 1-9
software (NI resources), G-1
source code control (SCC), 2-6
source code template, 1-11, 5-2
See also code template
specifying control connections, 9-12
standard named data type, 1-9
using, 12-7
standard result property, 3-10
startup, 9-19
Statement step, 4-20
station callback sequence file, 2-1
station global variables, 1-7, 11-4
Station Globals window, 11-4
station model
definition, 1-14
process model file, 10-2
status
Action step, 4-15
step, 3-16
StatusBar control, description (table), 9-6
StatusBar pane
caption connections, 9-10
image connections, 9-11
numeric value connections, 9-12
step, 1-1, 1-10
execution, order of actions (table), 3-14
failure, 3-17
interactive execution, 3-5
step execution (table), 3-14
step group, 2-3
Cleanup, 1-11
Main, 1-11
Setup, 1-11
step properties
built-in, 4-3
Call Executable, 4-23
Case, 4-19
Check Remote System Status, E-1
Deploy Library, E-2
Do While, 4-18
Else If, 4-17
For, 4-17
For Each, 4-18
FTP Files, 4-24
If, 4-16
Label, 4-20
lifetime of custom step properties, 3-3
Message Popup, 4-21
Multiple Numeric Limit Test, 4-11
Numeric Limit Test, 4-10
Pass/Fail Test, 4-9
I-15
Index
I-16
ni.com
Index
T
tables, 6-1
database result, 6-9
default result, creating, 6-10
query
record set, 6-2
SQL statement data, 6-2
records, 6-1
row
fields, 6-1
SQL null value, 6-2
I-17
Index
U
UI Controls Library, 9-9
unit under test (UUT), 1-2
user interface, 1-3
application style
multiple window, 9-27
no visible window, 9-28
single window, 9-26
application styles, 9-26
creating, 9-1
See also connections; manager
controls; user interface controls;
visible controls
customizing, 8-1
tip, 9-2
deploying. See deployment utility
distributing, 14-11
documenting custom, 9-32
example user interfaces, 9-2
localization, 9-25
menu and menu items, 9-23
updating menus, 9-23
shutting down, 9-19
starting up, 9-19
startup options
configuring, 8-8
table, 8-9
user interface controls, 1-6, 9-2
user interface controls, 1-6, 9-2
interface pointer, obtaining, 9-16
LabVIEW, 9-14
LabWindows/CVI, 9-14
library, 9-9
Manager controls
Application Manager control, 9-3
ExecutionView Manager control, 9-4
I-18
ni.com
Index
SequenceFileView Manager
control, 9-4
TestStand API, using, 9-31
Visual C++, 9-15
Visual Studio .NET, 9-15
User Manager window, 7-1, 11-4
user manager, security (note), 7-1
User object, 7-3
user privileges
accessing
any user, 7-3
current user, 7-2
defining, 7-3
verifying, 7-2
User subdirectory, 8-4
using DLLs, 5-3
calling LabVIEW, 5-5
MFC, 5-6
Utility Functions Library, 9-20
C++ (MFC) (table), 9-22
LabVIEW (table), 9-21
LabWindows/CVI (table), 9-21
localization functions (table), 9-25
.NET (table), 9-21
utility sequence
Batch process model, A-28, A-31
Parallel process model, A-17
utility subsequences
Batch process model, A-33
Parallel process model, A-21
Sequential process model, A-11
W
Wait event, 9-18
Wait step, B-11
step properties, B-12
waiting for execution threads to
complete, B-12
Watch View pane, 3-7
Web resources, G-1
While step, 4-18
window
Execution, 3-3
Sequence File, 2-4
Station Global, 11-4
Types, 11-3
User Manager, 7-1, 11-4
Windows 2000 SP4
remote execution, setup, 5-21
V
variables
See also properties
expressions, using, 1-8
local, 2-4
data types (table), 12-4
lifetime, 3-3
monitoring, 3-2
I-19
Index
X
XML report schema, 6-18
I-20
ni.com