advertisement
Agilent T&M
Programmers Toolkit for
Visual Studio .NET
Version 1.2
Getting Started
Agilent Technologies
2
Notices
© Agilent Technologies, Inc. 2002-2003
No part of this manual may be reproduced in any form or by any means (including electronic storage and retrieval or translation into a foreign language) without prior agreement and written consent from Agilent
Technologies, Inc. as governed by United
States and international copyright laws.
Manual Part Number
5090-6479
Edition
Second Edition, August 2003
Printed in USA
Agilent Technologies, Inc.
815 14th Street SW
Loveland, CO 80537 USA
Warranty
The material contained in this document is provided “as is,” and is subject to being changed, without notice, in future editions. Further, to the maximum extent permitted by applicable law, Agilent disclaims all warranties, either express or implied, with regard to this manual and any information contained herein, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. Agilent shall not be liable for errors or for incidental or consequential damages in connection with the furnishing, use, or performance of this document or of any information contained herein. Should
Agilent and the user have a separate written agreement with warranty terms covering the material in this document that conflict with these terms, the warranty terms in the separate agreement shall control.
Technology Licenses
The hardware and/or software described in this document are furnished under a license and may be used or copied only in accordance with the terms of such license.
Restricted Rights Legend
If software is for use in the performance of a
U.S. Government prime contract or subcontract, Software is delivered and licensed as
“Commercial computer software” as defined in DFAR 252.227-7014 (June 1995), or as a “commercial item” as defined in FAR
2.101(a) or as “Restricted computer software” as defined in FAR 52.227-19 (June
1987) or any equivalent agency regulation or contract clause. Use, duplication or disclosure of Software is subject to Agilent Technologies’ standard commercial license terms, and non-DOD Departments and
Agencies of the U.S. Government will receive no greater than Restricted Rights as defined in FAR 52.227-19(c)(1-2) (June
1987). U.S. Government users will receive no greater than Limited Rights as defined in
FAR 52.227-14 (June 1987) or DFAR
252.227-7015 (b)(2) (November 1995), as applicable in any technical data.
Safety Notices
CAUTION
A CAUTION notice denotes a hazard. It calls attention to an operating procedure, practice, or the like that, if not correctly performed or adhered to, could result in damage to the product or loss of important data. Do not proceed beyond a
CAUTION notice until the indicated conditions are fully understood and met.
Agilent T&M Toolkit
Table of Contents
1 Welcome to the Agilent T&M Programmers Toolkit
About the Agilent T&M Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
What is the T&M Toolkit?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
What Makes the T&M Toolkit Useful?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
What is in the T&M Toolkit?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
How to Use this Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Installing Agilent T&M Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Installing Agilent T&M Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Activating Agilent T&M Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Uninstalling Agilent T&M Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Software Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 The New Project Wizard
Using the New Project Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Using Instrument Explorer
What is Instrument Explorer?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
How to Start the Instrument Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
How Instrument Explorer Discovers Instruments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Instrument Explorer and the IVI Config Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Instrument Explorer and Active Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Instrument Explorer and VISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Finding Instruments Connected to Your Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Instrument Connection Status Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Finding RS-232 (Serial) Instruments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Setting Instrument Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Agilent T&M Toolkit 1
Managing Instrument Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Using the Instrument Session Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Adding or Creating an Instrument Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Generating Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Drag and Drop Instrument Objects or Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Instruments Session Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4 Using Interactive IO
Quick and Simple Instrument Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
Why Control Instruments?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
What Happens if There is a Problem Controlling an Instrument?
. . . . . . . . . . . . . . . . . . 42
How Can You Quickly and Simply Control Instruments?
. . . . . . . . . . . . . . . . . . . . . . . . . 42
How Instrument Control is Presented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Commands and Responses vs. Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Shortcuts When Using the Interactive IO Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5 Using the IO Monitor
Monitoring Interaction with Instruments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Why Monitor Interaction with Instruments?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
How Can You Monitor Interaction with Instruments?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Getting Started Monitoring Interaction with Instruments . . . . . . . . . . . . . . . . . . . . . . . .50
How I/O Data is Presented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Tracing the API Call Stack of an I/O Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Selectively Enabling/Disabling I/O Library Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Optimizing the Performance of I/O Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Controlling How Many Events are Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Logging Trace Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6 Using the Driver Wrapper Wizard
Using the Driver Wrapper Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Expanding the Driver Possibilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
2 Agilent T&M Toolkit
Which Drivers are Supported?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Starting and Using the Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
7 Using the DirectIO Class to Control an Instrument
Describing the DirectIO Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Reading and Writing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Controlling the Instrument Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
The VISA Support Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Using Low Level Gpib, Serial, Tcpip, and USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Low-Level Access through DirectIO.Gpib
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Remote Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Low-Level Access through DirectIO.Serial
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Data Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Low-Level Access through DirectIO.TCPIP
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Low-Level Access through DirectIO.USB
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8 Analyzing Instrument Data
The Complex Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
The Complex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Digital Signal Processing Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Fast Fourier and Inverse Fast Fourier Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Windowing Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Data Set Comparison Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Bessel Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
The I0 Bessel Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
The J0 and J1 Bessel Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
The Y0 and Y1 Bessel Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Statistical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Agilent T&M Toolkit 3
Discrete Mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
Probability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Special Statistical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Engineering Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Regression Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9 Using the 2D Graph Objects
Using the 2D Graph Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Where are the 2D Graph Controls?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
What Types of Graphs are Available?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Using Traces to Get Data to the Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
How can I Modify the Appearance of the Graph?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Panning, Zooming, and the Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
Generating Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Timing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
The Timing Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
ProgressUpdater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
The EngineeringFormatter Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
The Engineering Math Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
11 Using Agilent VEE with .NET
Using Agilent VEE with .NET
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Using the VEE Wrapper Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
How do VEE and .NET Communicate?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Can Legacy VEE Code be Adapted to .NET?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
12 Product Support
Help Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Online Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4 Agilent T&M Toolkit
Dynamic Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
F1 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Agilent Developer Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Support Included with All T&M Toolkit Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Where You can Find Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Agilent T&M Toolkit 5
6 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
1
Welcome to the Agilent T&M
Programmers Toolkit
About the Agilent T&M Toolkit 8
How to Use this Manual 10
Installing Agilent T&M Toolkit 11
System Requirements 13
This chapter describes the features of the Agilent T&M Toolkit, the system requirements needed to run T&M Toolkit, and how to install, uninstall, and license the Agilent T&M Toolkit.
Agilent Technologies 7
8
1 Welcome to the Agilent T&M Programmers Toolkit
About the Agilent T&M Toolkit
What is the T&M Toolkit?
The Agilent T&M Toolkit is a set of tools, components, controls, and class libraries that help you communicate with and control test and measurement equipment from within Microsoft’s ®
Visual Studio .NET development environment.
What Makes the T&M Toolkit Useful?
The T&M Toolkit helps you cut your instrument programming time, speeds up your product development process, and improves your productivity. The T&M Toolkit extends
Microsoft's ® Visual Studio .NET platform with integrated, easy-to-use software tools and components that make Visual
Studio .NET the easiest place for you to write code for automating measurement tasks and displaying test data.
With T&M Toolkit, Agilent's extensive measurement expertise is integrated into the Visual Studio .NET framework to eliminate many of the problems traditionally associated with connecting to and controlling instruments. The T&M Toolkit software automatically generates code for you, and Windows® functionality, such as drag and drop, makes many tasks faster and easier. Robust debug, analysis, and tuning tools further streamline your development process. Plus, Agilent's on-line test and measurement help, fully integrated at every step, shortens your programming learning curve.
What is in the T&M Toolkit?
The T&M Toolkit includes:
• Language support for C#, Visual Basic .NET, and Managed
C++.
• A wizard, called the New Project Wizard, helps you quickly setup a T&M project.
Agilent T&M Toolkit
Agilent T&M Toolkit
Welcome to the Agilent T&M Programmers Toolkit 1
• Instrument Explorer — Finds instruments attached to your
PC or network, and helps you easily manage the instruments and their drivers. Just drag and drop an instrument icon into your work window to generate code to connect with the instrument.
• Interactive IO — Can be used to check instrument connections and to send commands to instruments.
• IO Monitor — Helps you debug instrument control applications by capturing and displaying instrument communication details from different I/O layers.
• The Driver Wrapper Wizard — Provides a way to automatically create a .NET-friendly wrapper object around a traditional VXI plug&play driver or IVI-C driver (IVI-COM drivers do not require wrappers). This lets your .NET application use any of the hundreds of drivers available from
Agilent and other instrument vendors.
• DirectIO — Gives you an easy way to control instruments using the instrument’s native command set. Supported protocols include: GPIB, Serial, TCP-IP, and USB.
• Data Analysis support — Mathematical, statistical, and digital signal processing support.
• Data Types — Includes support for Complex numbers.
• 2D Graph Objects — A variety of different graphical displays provide multiple ways to view and scale data.
• Special class libraries — Timing, a virtual Waveform
Generator, and an engineering number formatter all make your tasks simpler.
• VEE Wrapper Wizard — Provides an easy way for you to call
Agilent VEE Pro User Functions from a Visual Studio .NET project.
• Integrated help — T&M Toolkit’s Help system is fully integrated with the Visual Studio .NET help system. The new
Dynamic Help feature and IntelliSense shorten the learning curve even further.
9
1 Welcome to the Agilent T&M Programmers Toolkit
How to Use this Manual
This manual has been structured to match a workflow. The workflow model is:
1 Start a new T&M project in Visual Studio
• See Chapter 2 - The New Project Wizard
2 Discover and configure your instruments
• See Chapter 3 - Using Instrument Explorer
• See Chapter 4 - Using Interactive IO
• See Chapter 5 - Using the IO Monitor
• See Chapter 6 - Using the Driver Wrapper Wizard
3 Manage your instruments
• See Chapter 7 - Using the DirectIO Class to Manage your
Instruments
4 Analyze your data
• See Chapter 8 - Analyzing Instrument Data
5 Display your data
• See Chapter 9 - Using the 2D Graph Objects
6 Optional helpers for numerous areas
• See Chapter 10 - Virtual Waveforms, Timing Classes, and
Number Formatting
7 How to use Agilent VEE with .NET
• See Chapter 11 - Using Agilent VEE with .NET
10 Agilent T&M Toolkit
Welcome to the Agilent T&M Programmers Toolkit 1
Installing Agilent T&M Toolkit
Before installing the Agilent T&M Toolkit, ensure that Microsoft
Visual Studio .NET is already installed and is working properly on your computer. Next, ensure no applications, especially
.NET, are running when you begin the Agilent T&M Toolkit installation process.
Installing Agilent T&M Toolkit
Place the Agilent T&M Toolkit CD-ROM into the computer’s
CD-ROM drive. (Do not install directly from the WWW.)
Installation should start automatically. However, if it does not, select Start > Run from the computer’s taskbar and enter:
[ The computer’s CD-ROM drive letter ] :\setup.exe
Select OK .
Run Visual Studio .NET and you will notice that the Start Page has a link on the left side with the title: Agilent T&M Programmers
Toolkit.
The main menu also has an item entitled T&M Toolkit .
Activating Agilent T&M Toolkit
Agilent T&M Programmers Toolkit uses a Product Key to activate it. The Product Key is shipped with the T&M Toolkit.
You are prompted for the key when you install T&M Toolkit.
If you are using an evaluation version of T&M Toolkit, the
Product Key is “eval” (without the quotes). You can upgrade to a licensed product by purchasing T&M Toolkit and entering the
Product Key. The Product Key is entered at T&M Toolkit > Product
Key on the main menu.
Uninstalling Agilent T&M Toolkit
If you open the Control Panel > Add/Remove Programs , you see
Agilent T&M Programmers Toolkit for Visual Studio .NET
. Select this entry and choose Remove.
If Agilent VisaCom was installed by T&M
Toolkit, it is uninstalled. However, if it was installed separately, it is not uninstalled.
Agilent T&M Toolkit 11
1 Welcome to the Agilent T&M Programmers Toolkit
When the T&M Toolkit is uninstalled, the next time Visual
Studio is run it pauses and displays the message:
“Help is updating to reflect your recent changes. This may take several minutes."
This is caused by the removal of the integrated T&M Toolkit
Help from Visual Studio .NET. It is normal, and it does take several minutes.
12 Agilent T&M Toolkit
Welcome to the Agilent T&M Programmers Toolkit 1
System Requirements
Hardware Requirements
The hardware requirements listed below include the combined resource needs of Microsoft Visual Studio .NET and the Agilent
T&M Toolkit.
Computer/Processor
PC with a Pentium II-class processor, 450 megahertz (MHz)
Minimum Memory (RAM) Requirements
Windows® XP Professional: 160 megabytes (MB) of RAM
Windows® 2000 Professional: 96 MB of RAM
Recommended: 256 MB or more
Free Disk Space:
2.5 GB with 500 MB minimum on the system drive
Agilent T&M Toolkit requires 100 MB on the installation drive
Drive
CD-ROM or DVD-ROM drive
Display
Super VGA (800 x 600) or higher-resolution monitor with 256 colors or more
Input Device
Microsoft mouse or compatible pointing device
Access to the World Wide Web (WWW) is strongly recommended
Agilent T&M Toolkit 13
1 Welcome to the Agilent T&M Programmers Toolkit
Supported Instrument Interfaces
One of the following physical connectivity options is required for the PC-to-instrument connection:
• Agilent 82357A USB/GPIB Interface
• Agilent E5810A or E2050A/B LAN/GPIB gateway
• Agilent 82350A or 82341C GPIB interfaces
• Agilent E8491B or E1406B VXI configurations using drivers
• Standard RS-232
• National Instruments I/O hardware using NI 488 version 1.5
Software Requirements
Operating System
• Design Time - Microsoft Windows 2000, XP
• Run Time - Microsoft Windows 98, ME, NT, 2000, XP, and XP
Home
Development Environment
• VB .NET Standard Edition
• Visual C# Standard Edition
• Visual Studio .NET Standard and higher
14 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
2
The New Project Wizard
Using the New Project Wizard 16
This chapter describes the New Project Wizard. The New Project
Wizard walks you through the process of creating a new T&M
Toolkit project.
Agilent Technologies 15
2 The New Project Wizard
Using the New Project Wizard
The Agilent T&M Toolkit includes a New Project Wizard that you can use to create a new T&M Toolkit project.
Using the New Project Wizard
1
Step Action
a From the Visual Studio main menu, select File > New > Project.
b As Figure1 shows, enter the project name and its home directory.
c Select OK when you are done.
Figure 1 Creating a New Agilent T&M Toolkit Project with .NET
16 Agilent T&M Toolkit
The New Project Wizard 2
Using the New Project Wizard (continued)
2
3
Step
4
Action
Review the welcome screen and select Next when you are done.
This step only appears if both compilers are installed.
a Select the programming language for this project by clicking either
Visual Basic .NET or C#. For Visual Studio .NET 2003, Managed
C++ is also available.
b Select Next when you are done.
a To create an executable file, select either Windows Application or
Console Application. To create a DLL file, select either a Windows
Control Library or a Class Library. See Figure2 for an example of the screen.
b Select Next when you are done.
Figure 2 Selecting the Project Type
Agilent T&M Toolkit 17
2 The New Project Wizard
Project Type Definitions
In Figure2 on page17 , there is a list of project types. The project types are defined as:
• A Windows Application is a stand-alone executable that displays Windows Forms.
• A Windows Control Library is a dynamic link library (DLL) file that contains a library of custom controls for use on
Windows Forms.
• A Class Library is a DLL file that contains a library of custom classes.
• A Console Application is a stand-alone executable that does not use Windows Forms and is launched from an operating system prompt.
Using the New Project Wizard (continued)
5
Step
6
7
Action
a Select the namespaces you need for your program. You can refer to the Namespace Description for an overview of which libraries each namespace provides. You can also add more namespace references after the Wizard is finished. See Figure3.
b Select Next when you are done.
a Review the summary.
b If the summary is correct, select Finish.
A using statement is added to your C# source code for each of the namespace references you have selected
-or-
An Imports statement is added to your Visual Basic .NET source code for each of the namespace references you have selected
18 Agilent T&M Toolkit
The New Project Wizard 2
Figure 3 Selecting Namespaces for the Project
Agilent T&M Framework Class Libraries
The following table summarizes the class libraries available in the Agilent T&M Framework. The classes and their properties and methods can be accessed by adding the appropriate
Reference to your Visual Studio project. Using the T&M Project
Wizard to create a new project automatically adds the references that are checkmarked in Figure3 on page19 .
Agilent T&M Toolkit 19
2 The New Project Wizard
Table 1 Agilent T&M Framework Namespaces
Namespace
Agilent.TMFramework
Description
Agilent.
TMFramework.InstrumentIO
Easy access to message based instruments from .NET programs
Complex number data type and math support
Agilent.TMFramework.DataAnalysis
Agilent.TMFramework.
DataVisualization
Agilent.TMFramework
Mathematical tools to facilitate the analysis of test results and EE data
T&M-smart graphs for viewing test results and EE data
Generates signals to simulate simple instruments, Precision timing,
Formatting exponential numbers, and
Engineering Math functions
Agilent.TMFramework.
InstrumentDriverInterop
Classes
Direct IO
Data Types
Data Analysis
Data Visualization
Function
Waveform
Generator,
Timing,
Engineering
Formatter,
Engineering Math
Driver Wrapper
Agilent.TMFramework.VeeInterop
Enables instrument communication using VXIplug&play, IVI-C, and
IVI-COM instrument drivers
Access Enables communication between VEE UserFunctions and a
.NET application
Callable VEE
20 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
3
Using Instrument Explorer
What is Instrument Explorer? 22
How Instrument Explorer Discovers Instruments 24
Managing Instrument Configurations 31
Using the Instrument Session Wizard 34
Drag and Drop Instrument Objects or Sessions 38
This chapter describes how Instrument Explorer works, how it can help you manage instruments, and how it can simplify your programming.
Agilent Technologies 21
3 Using Instrument Explorer
What is Instrument Explorer?
Instrument Explorer is integrated into Visual Studio and also runs as a standalone application. It provides a visual tree view of instrument connections and easy access to other related tools.
The Instrument Explorer performs the following key tasks:
• Quickly identifying and verifying which instruments are connected to the PC
• Creating and saving files containing instrument connection information to a configuration file for later use.
• Assisting the user in finding and selecting drivers through a
Wizard
• Providing access to DirectIO, which enables direct communication with the instrument via ASCII commands
• Providing easy access to the Interactive IO tool, which facilitates sending common, generic commands to instruments
• Generating code that connects to an instrument within a VB
.NET, C#, or C++ project using DirectIO or a driver
How to Start the Instrument Explorer
To invoke the standalone version of Instrument Explorer, go to
Start > Programs and select Agilent T&M Programmers Toolkit 1.2
>
T&M Programming Tools > Agilent Instrument Explorer . To invoke the integrated version, either go to the Visual Studio main menu and select T&M Toolkit > Instrument Explorer or select the
Instrument Explorer icon from the Toolkit toolbar.
Figure 4
The Instrument
Explorer icon
Agilent T&M Toolkit Toolbar
22 Agilent T&M Toolkit
Using Instrument Explorer 3
Instrument Explorer appears on the left side of Visual Studio.
During runtime, it is hidden.
Agilent T&M Toolkit 23
3 Using Instrument Explorer
How Instrument Explorer Discovers Instruments
Instrument Explorer gathers instrument information from three sources to create its instrument configuration. These three sources are described below.
Instrument Explorer and the IVI Config Store
Instrument Explorer reads the IviConfigurationStore.xml file found in [ IVI installation directory ]\IVI\Data directory. From this file, Instrument Explorer extracts a list of IVI-based instruments that have been installed. The list of IVI-based instruments is added to
Instrument Explorer’s database of instruments.
Instrument Explorer and Active Discovery
Instrument Explorer actively searches the local machine’s GPIB and VXI buses for instruments. If an instrument is powered-on and using one of these buses, it is discovered and added to
Instrument Explorer’s database.
Instrument Explorer and VISA
Instrument Explorer reads the database file created by the IO
Config utility of Agilent VISA. All entries in this file are added to the Instrument Explorer database. These entries include entries for instruments that are not active on a bus and entries for LAN based instruments.
24 Agilent T&M Toolkit
Using Instrument Explorer 3
Finding Instruments Connected to Your Computer
To find instruments that are connected to your computer:
1 Select the Find Instruments button from the Instrument
Explorer toolbar or right click the top entry ( ) of the currently loaded configuration.
Figure 5
Find Instruments
Icon
Instrument Explorer Toolbar
2 After instrument discovery is finished (see the progress indicator at the bottom of the Instrument Details area or
Figure6), a dialog box appears that prompts you to select which instruments you want to identify using an *IDN query.
*IDN provides information, when available, regarding the vendor, model number and version number of the instrument.
Figure 6 Progress Bar During Instrument Discovery
Agilent T&M Toolkit 25
3 Using Instrument Explorer
26
Figure 7 Selecting Instruments to Query with *IDN
3 To verify the connection and identify the instrument by model and/or vendor using *IDN do the following: a Select the addresses you want to query with an *IDN. See
Figure 7.
b Select OK c If available, additional information about the instrument is displayed.
4 View the list of instruments. Instruments are organized by bus type.
5 Select an instrument and view detailed information about it in the Instrument Details area at the bottom of Instrument
Explorer. See Figure8 on page27.
Agilent T&M Toolkit
Using Instrument Explorer 3
NOTE
In this release of Agilent T&M Toolkit, the Instrument Explorer does not identify RS-232 instruments.
Figure 8 Instrument Desciption
Instrument Connection Status Icons
Instrument connections are represented iconically in
Instrument Explorer as follows:
Agilent T&M Toolkit 27
3 Using Instrument Explorer
Instrument connection status unknown
Instrument not found
Instrument found but not identified (*IDN)
Instrument failed *IDN? query
Instrument identifed with *IDN? query
Finding RS-232 (Serial) Instruments
Agilent T&M Toolkit includes a utility called Interactive IO (see
Chapter 4, “Using Interactive IO) that can be accessed from
Instrument Explorer. Interactive IO can be used to access any serial port that is properly configured.
You can use the Agilent IO Config utility to configure your serial ports. See Figure9 on page29. Using Agilent IO Config, configure the settings for your serial port.
28 Agilent T&M Toolkit
Using Instrument Explorer 3
Figure 9 Configuration dialogdialog from the Agilent IO Config Utility
From the Visual Studio main menu, select T&M Toolkit >
Interactive IO . Using Interactive IO, connect to the instrument and then query it with an *IDN.
Agilent T&M Toolkit 29
3 Using Instrument Explorer
Setting Instrument Properties
Once you have discovered the instruments connected to your computer, they appear as either a list of “New Instrument” or they are identified by name. If you right click on an instrument, you will see the pop-up menu in Figure10. If you select
Instrument Properties , you see the dialog box in Figure11. Using the Instrument Properties dialog box, you can set the instrument’s name, description, and resource name.
Figure 10 Instrument Right Click Pop-Up Menu
30
Figure 11 Setting Instrument Properties
Agilent T&M Toolkit
Using Instrument Explorer 3
Managing Instrument Configurations
The instrument configuration database for Instrument Explorer is stored in a Master Configuration File. This file is the default configuration and is loaded whenever you start Instrument
Explorer.
Opening a Different Configuration File
You can open a different configuration file by selecting the open configuration file icon (see Figure12) and selecting Open
Configuration File.
Use the dialog box that appears to choose a file.
Open
Configuration
File Icon
Figure 12 Opening a Different Configuration File
Changing the Default Configuration File
You can load a different configuration file at startup without changing the Master Configuration File. This is a very useful feature when you have a short-term task with a different instrument configuration. To use this feature, select the options icon ( ). Figure13 shows the dialog box that appears. Click
Alternate configuration file and either enter a fully qualified path to a different configuration file or browse to its location. Click
OK when you are done.
Agilent T&M Toolkit 31
3 Using Instrument Explorer
32
Figure 13 Selecting a Default Configuration File
Creating New Configuration Files
Suppose you have a configuration file loaded and remove several devices. You want to save this new configuration and use it later. You can select the save configuration icon (see
Figure14 ) and save the configuration file with its current name or with a different name.
Save
Configuration
Icon
Figure 14 Saving a Configuration
Changing or Adding to the Instrument Configuration
Instrument Explorer is an active instrument configuration manager. It not only reads existing configurations, but it can be used to add or delete items to configurations. You can add more instruments to the database by right clicking an interface (such as GPIB6), by right clicking the Master Configuration, or by clicking the add instrument icon.
Agilent T&M Toolkit
Master
Configuration
Add Instrument
Icon
Interface
Using Instrument Explorer 3
Agilent T&M Toolkit
Figure 15 Adding an Instrument
NOTE
I f
If you plan to use the configuration, be sure you save it. There is a visual cue to remind you that you have unsaved changes. This appears as a pink icon ( ) next to the Master Configuration file.
CAUTION
Deleting an Instrument
You can also delete an instrument from the Instrument
Explorer configuration.
If you delete an instrument and save the configuration, the
IviConfigurationStore.xml file and the Instrument Explorer configuration file are updated.
33
3 Using Instrument Explorer
Using the Instrument Session Wizard
An instrument session is the communication connection that
Instrument Explorer creates between the instruments in the current configuration and your source code.
There are two types of sessions: a Driver session and a DirectIO session. Driver sessions create a session for a driver type specified by you. The supported types are VXI plug&play ,
IVI-COM, and IVI-C. You can also choose a DirectIO session that allows you to directly communicate with your instrument using a command language such as SICL.
NOTE
DirectIO does not support VXIplug&play.
Adding or Creating an Instrument Session
You can generate code and insert it into your existing source code using the instrument session wizard. If you plan to do this, be sure you have a project open before you create the instrument session. To add a new instrument session do the following:
Starting an Instrument Session
Step
1 Highlight an instrument
Action
Right Click the highlighted instrument
2 You see a context sensitive pop-up menu
From the pop-up menu, select Add
Instrument Session
3 Study the Wizard’s overview Select Next to proceed
Notes
• This starts the Instrument Session
Wizard
34 Agilent T&M Toolkit
Using Instrument Explorer 3
Starting an Instrument Session (continued)
Step
4 Decide between using an instrument driver or DirectIO
Action
a To help make that decision, review the matching drivers found by the Wizard.
If no matches are found, the following message appears, “No matches may be found if the instrument cannot be identified (*IDN isn’t returned). In some cases, the instrument may be turned off.”
Notes
Figure 16 An Installed Driver Could Not be Found
Agilent T&M Toolkit 35
3 Using Instrument Explorer
5 Select the driver or DirectIO
b Review the list appearing under
“Select from All Installed Drivers”. The
Wizard defaults to the first matching driver. Select from the matching drivers.
• There may be no matching drivers.
See c.
c If no driver is available, you may wish to browse the Agilent website to look for a driver for your instrument.
d If you do not want to do b) or c), you can still communicate with your instrument directly. This requires you to be familiar with an instrument command language supported by the instrument.
• SCPI is an example of a command language supported by many instruments.
• More help is available about selecting the proper strategy by selecting Help on Selecting a
Driver
a If you choose the driver option, select the appropriate driver
b Press Next when done
Generating Code
As you finish a pass through the Instrument Session Wizard, you may choose to generate code. The generated code establishes a DirectIO object or a Driver object. All generated code includes fully qualified pathnames. If you choose to reference the libraries by using an Imports statement in VB.NET or a Using statement in C#, you do not need to use fully qualified pathnames.
There are other ways to generate code such as using the pop-up menu or dragging and dropping an instrument object into your source code. Of course, if you would prefer to write the code yourself, you can.
36 Agilent T&M Toolkit
Using Instrument Explorer 3
Generating Code Using the Instrument Session Wizard
Step
1 Specify options
2 Preview the generated code
3 Confirm your selections
4 Select a location in your code
5 Paste the generated code
Action
Select the options you want invoked when the code is generated
Notes
• There is a preview process, so you can reverse your choices later if you do not like them
a Toggle the checkbox to see how the code looks with different options on or off
b When you have decided on your options, select Next
a Review the Summary screen
b Select Back to make changes
c Select Finish to proceed
a The wizard cannot know the correct place to put the generated code. Only you can place the cursor at the correct insertion point.
b If you are not sure where to put the code, click the Where do I paste my
code? link.
Use CTRL-C to copy and CTRL-V to paste or use the Paste button in the paste tool
• It may be easier to paste the generated code into your source code and then move it as needed.
This could work particularly well if an open section is set aside for this purpose.
• The generated code is placed at the cursor insertion point in your source code.
• The source code comments are kept at your discretion
Agilent T&M Toolkit 37
3 Using Instrument Explorer
Drag and Drop Instrument Objects or Sessions
Another way to create an Instrument Session and generate code is to drag-and-drop an instrument from the Instrument
Explorer into your source code. This launches the full version of the Instrument Session Wizard.
Once a session is created, it appears in the tree view as a branch beneath the parent instrument. You can drag and drop a session into your source code, and an abbreviated version of the
Instrument Session Wizard runs. In the abbreviated version, you go directly to the Select Code Generation Options dialog.
See Figure17.
Figure 17 The Abbreviated Version of the Instrument Session Wizard.
38 Agilent T&M Toolkit
NOTE
Using Instrument Explorer 3
Once you set your options, you go directly to the summary screen. If you are satisfied with the options you selected, you choose Finish and the generated code is immediately dropped into your source code. Note that the paste tool is not used because when you dragged-and-dropped the Instrument Session into your source code, you also established the insertion point for the generated code.
When you drop the session into your source code, you are establishing the insertion point for the generated code.
CAUTION
You can drag-and-drop a session into your source code. However, generated code always includes instrument initialization code. You probably do not want to initialize your instrument more than once. If you drag-and-drop Instrument Sessions, be sure to remove the instrument initialization code if you do not want it.
Instruments Session Icons
Instrument sessions are represented iconically in Instrument
Explorer as follows:
VXI plug&play Instrument Session
IVI Instrument Session
DirectIO Instrument Session
Unknown Instrument Sessions
Agilent T&M Toolkit 39
3 Using Instrument Explorer
V
40 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
4
Using Interactive IO
Quick and Simple Instrument Control 42
How Instrument Control is Presented 44
This chapter describes how to use the Interactive IO tool to quickly and easily control instruments.
Agilent Technologies 41
4 Using Interactive IO
Quick and Simple Instrument Control
Why Control Instruments?
The world of test and measurement revolves around the need to make and evaluate measurements. Typically, making a measurement requires setting up the conditions for the measurement, making the measurement, and evaluating the results. This requires regular interaction with instruments.
What Happens if There is a Problem Controlling an Instrument?
What if the instrument being controlled fails to respond correctly, or not at all? You may know that something failed to work, but you may not know why. To troubleshoot this kind of problem, start with simple communication before attempting more complex interaction. Simple communication may be nothing more than sending a few commands to the instrument and verifying its responses. In many cases, it is useful to send and receive these commands without having to create a formal software application.
How Can You Quickly and Simply Control Instruments?
The Interactive IO tool is a standalone software tool that lets you:
• Send a command to an instrument in an industry-standard instrument control language
• Read a response from an instrument
• Send & Read a command in one step
• Quickly recall previously used commands from a list
• View the history of commands and responses
42 Agilent T&M Toolkit
Agilent T&M Toolkit
Using Interactive IO 4
NOTE
To begin quick and simple instrument control
Step
1 Run the Interactive
I/O tool.
2 Specify which instrument to connect to.
3 Create a command.
4 Execute the command or query.
Notes
• Select T&M Toolkit from the main menu and select Interactive IO from there.
• Click the Interactive IO icon.
• Choose Connect > Resource Name from
Interactive IO’s menu bar. Then specify which instrument to use.
• Type a command in the Command field or choose a command from the typing aid.
• Click the Send Command, Read Response, or
Send & Read button, as appropriate.
When specifying which instrument to use, you must type the address of the instrument into the Resource Name field. If you do not know the instrument’s address, you can use Instrument Explorer to find the address.
If you are using a Serial connection, you must first establish this connection through the Agilent I/O Config tool before starting Interactive IO.
43
4 Using Interactive IO
How Instrument Control is Presented
The Interactive IO tool contains several areas of interest, as shown in Figure 18.
Typing Aid
Command
Action
History
Figure 18 The Interactive IO Main Display
Table2 lists the areas of the Interactive IO tool and their purpose.
Table 2 Areas of the Interactive IO Tool
Command
Action
History
Typing Aid
Type your command or query here.
Click whichever button is needed to send the command, read the response, or send and read the response.
List of commands/queries/responses sent to or read from the instrument for the current session.
A list of generic commands you can quickly access.
44 Agilent T&M Toolkit
Using Interactive IO 4
Your interaction with the instrument is shown in the Instrument
Session History for the current session, as shown in Figure19 .
Figure 19 History for a Session
Commands sent to the instrument are preceded by
->
.
Responses from the instrument are preceded by
<-
. For example,
-> *IDN?
sends a command that asks the instrument to identify itself.
And
<- HEWLETT-PACKARD,54600B,0,A.01.35
is the response returned by the instrument.
Commands and Responses vs. Queries
The Interactive IO tool lets you send commands, read responses, or combine the send and read into a single operation. A command is a string sent to an instrument. A response read from an instrument returns data from the instrument.
Shortcuts When Using the Interactive IO Tool
Recall List of Commands
When you type commands or queries, the Interactive IO tool remembers them. You can recall them at any time by dropping down the list, as shown in Figure20.
Agilent T&M Toolkit 45
4 Using Interactive IO
Figure 20 Command History
Typing Aid for Commands
Clicking the button to the right of the drop-down list where you type commands invokes a shortcut menu that contains frequently used commands, as shown in Figure21 . Selecting an item in the menu adds it to the command field and saves you some typing.
Figure 21 The Typing Aid
46 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
5
Using the IO Monitor
Monitoring Interaction with Instruments 48
How I/O Data is Presented 51
Tracing the API Call Stack of an I/O Library 54
This chapter describes how to use the IO Monitor tool to trace, debug, and optimize I/O programs.
Agilent Technologies 47
5 Using the IO Monitor
Monitoring Interaction with Instruments
Why Monitor Interaction with Instruments?
An application you write that communicates with an instrument or other hardware may not work correctly at first.
The complex nature of the communication between the application and the instrument—e.g., commands sent via APIs that migrate through layers of software such as I/O libraries—can make it difficult to decide where and how problems arise. What would be helpful is a means to monitor that communication and, ideally, be able to interact with it in a way that helps you debug your application.
How Can You Monitor Interaction with Instruments?
The IO Monitor provides .NET programmers with an easy way to trace and debug I/O programs. The IO Monitor is a standalone software tool that lets you:
• Trace the API call stack of an I/O library
• Selectively enable and disable I/O library layers
• Filter the reported data to control what you see
• Log trace information to a file (for review later or for sending to support personnel)
48 Agilent T&M Toolkit
Using the IO Monitor 5
The IO Monitor keeps track of a sequence of events. An event can be an entry into or exit from an API and an occurrence of an asynchronous interrupt. The IO Monitor filters and formats the events it receives and presents them in several panels. See
Figure22 .
List of events
List of parameters in the I/O call
Agilent T&M Toolkit
Details for the selected parameter
Figure 22 The Presentation of I/O Data
The IO Monitor also displays the details of a selected event. This additional information includes:
• Application name
49
5 Using the IO Monitor
• Host PC name
• Contents of the output (write) and input (read) buffers
• Selectable data display format
• Elapsed time in the API (for profiling the performance of I/O applications)
Getting Started Monitoring Interaction with Instruments
When you run the IO Monitor, it automatically attaches itself to the stream of I/O data between an application making I/O calls via Agilent VISA-COM, Agilent VISA/SICL libraries and the instrument being called.
NOTE
You can run the IO Monitor at any time while debugging an application so long as your applicatio n uses the Agilent VISA-COM and Agilent VISA/SICL libraries to access instruments.
To begin monitoring interaction with instruments
Step Notes
1 Run the application that makes I/O calls you wish to monitor.
2 Run the IO Monitor.
IO Monitor supports both Agilent and National Instrument interface cards.
From the main menu, select T&M
Toolkit > IO Monitor or Click the IO
Monitor icon .
3 Tell the IO Monitor to begin monitoring
I/O information.
Choose Start from the Monitor menu (Monitor > Start) in the IO
Monitor’s menu bar.
4 Switch between your application and the IO Monitor as needed.
Use your application to send I/O data and then use the IO Monitor to examine the data.
50 Agilent T&M Toolkit
Using the IO Monitor 5
How I/O Data is Presented
An Overall View of I/O Data
The uppermost panel lists the I/O events that occur while monitoring I/O operations.
Figure 23 Events Traced by IO Monitor
Table3 shows the kinds of I/O data associated with events.
Table 3 I/O Data Associated with Events
Time Stamp When the event began
Program Which application caused the event
Address
Source
The I/O bus address used by the event
Which I/O library (API) handled the event
Function Call The function call sent during the event
IO Data The buffered I/O data (if any) sent during the event displayed in
ASCII format
Ret Val
Time (ms)
The value (if any) returned by the event
How long, in milliseconds, the event took
Agilent T&M Toolkit 51
5 Using the IO Monitor
If the event results in an I/O error, the line where that event appears is preceded by a red warning icon and the event is presented in red, as shown in Figure24 .
Figure 24 An Event That Generated an Error
A View of Parameters Passed in I/O Data
When you select an event in the uppermost panel, the lower left panel lists the parameters passed in the I/O call to the instrument. Figure25 shows an output parameter that was passed.
52
Figure 25 Parameters Passed in the I/O Call Associated with an Event
Table4 shows the details of the list of parameters.
Table 4 Details of the Parameters Passed in an I/O Call
Name
Type
Value
Name of the parameter
Data type of the parameter (* denotes an array of bytes)
Value of the parameter
Agilent T&M Toolkit
Agilent T&M Toolkit
Using the IO Monitor 5
A View of I/O Data in a Buffer
If a parameter has an asterisk (*) preceding its name, it means the parameter passed an array of bytes in a buffer during the
I/O call. To examine the contents of the buffer, you must select that parameter and look in the bottom right panel. Figure26 shows an example of data in an input buffer.
Figure 26 Example of Data in a Buffer
The details of buffer information are shown in Table5.
Table 5 Details of Buffer Information
Offset
Hex
ASCII
Offset from the start of the buffer
The value in the buffer expressed in hexadecimal format
The value in the buffer expressed in ASCII format
53
5 Using the IO Monitor
Tracing the API Call Stack of an I/O Library
The list of events displayed by the IO Monitor shows calls to
APIs in the order that they occur, as well as the data associated with them. This provides you with a view of the call stack, as shown in Figure 27.
1
2
3
Figure 27 An Ordered List of Calls to the Call Stack
Similarly, the parameters passed to the call stack in a function call are passed in sequence, as shown in Figure28
54
Figure 28 An Ordered List of Parameters Passed in a Function Call
Selectively Enabling/Disabling I/O Library Layers
The IO Monitor lets you choose which I/O library layers to monitor, as shown in Figure29 on page 55. If a particular I/O library is not of interest to you, simply deselect it in the list.
Agilent T&M Toolkit
Using the IO Monitor 5
Agilent T&M Toolkit
Figure 29 Enabling/Disabling I/O Layers to Monitor
You select I/O layers based upon the entry point your program is using or upon the entry point being used by an instrument driver you are employing. VISA-COM, VISA, and SICL are all valid entry points for accessing your instruments. SICL Details offers you a look at the lowest level of activity. See Figure30 for a diagram of where the trace points are located.
You can change these setting from another location. From the main menu, select View > View by IO Layers. This selection process is identical to the selection process you see in
Figure29 ’s Options > Monitor tab.
55
5 Using the IO Monitor
56
Figure 30 The Location of Trace Points in IO Monitor
Optimizing the Performance of I/O Operations
As shown in Figure 31, the Time column associated with each
I/O event shows how long (in milliseconds) the event took. You can examine the Time values to determine where bottlenecks exist in your I/O code. For example, if one I/O operation takes much longer than the others, that operation may be a good place to begin optimizing your code. After you have optimized the code, you can rerun the I/O application and examine its events to verify improvements.
Figure 31 Identifying the Time Spent in I/O Events
Agilent T&M Toolkit
Using the IO Monitor 5
Controlling How Many Events are Displayed
You can control the amount of data being presented as shown in
Figure32 . The more events you choose to display, the more data you see.
Figure 32 Filtering Data by the Number of Events
Agilent T&M Toolkit 57
5 Using the IO Monitor
Logging Trace Information
If desired, you can save the trace information accumulated by the IO Monitor to a file. This information is saved in XML format. Later, you can open the file and examine its contents.
Figure33 shows the options you can specify when logging to a file. These options include the location of the file, its maximum size, and what action to take if that size is exceeded.
58
Figure 33 Specifying the Options for Logging to a File
Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
6
Using the Driver Wrapper Wizard
Expanding the Driver Possibilities 60
Which Drivers are Supported? 60
Starting and Using the Wizard 61
Troubleshooting 63
This chapter describes the Driver Wrapper Wizard, how to use it, the drivers supported by it, and some of the typical problems with wrapped drivers.
Agilent Technologies 59
6 Using the Driver Wrapper Wizard
Using the Driver Wrapper Wizard
Expanding the Driver Possibilities
There are hundreds of existing instrument drivers. These drivers were written to meet industry standards, such as
VXI plug&play, that existed before .NET and the T&M Toolkit.
The Driver Wrapper Wizard is for the programmer who is comfortable with VXI plug&play drivers and wants to quickly capture VXI plug&play functionality for T&M Toolkit. With the
Driver Wrapper Wizard, you can create a .NET and Agilent T&M
Toolkit-compliant wrapper around the same standards- compliant drivers that you have relied upon for years. This gives you the extra power of the latest software development tools without limiting your access to legacy technology.
If you are new to VXI plug&play or want to start quickly with your instruments, T&M Toolkit’s Instrument Explorer offers similar functionality through the Driver Session Wizard. The
Instrument Explorer rapidly identifies your instrument configuration and provides quick communication with a variety of drivers including VXI plug&play.
It is a great tool to use while you build your expertise with device drivers.
Which Drivers are Supported?
The Driver Wrapper Wizard wraps VXI plug&play and IVI-C drivers. The IVI-C wrapper is based on the IVI Foundation’s
IVI-C Driver standard, version 1.0, approved in 2002. There are some IVI-C drivers available that are based on an earlier draft standard. Due to the significant changes between this earlier draft standard and the final standard, Agilent T&M Toolkit recognizes these drivers as VXI plug&play drivers.
The VXI plug&play wrapper is based on the most recent version of the VXI plug&play driver standard. Because VXI plug&play is a mature standard, Agilent is shipping more than a hundred of these drivers with the T&M Toolkit; many of these are already wrapped.
60 Agilent T&M Toolkit
Using the Driver Wrapper Wizard 6
Starting and Using the Wizard
NOTE
Before discussing the Driver Wrapper Wizard, it is important to draw a distinction between the wrapper and the driver. The wrapper does not replace the driver. The wrapper exists separately, and your source code indirectly uses the driver.dll file by using the wrapper assembly. If the driver is uninstalled, the wrapper does not work.
The Driver Wrapper Wizard takes you through several steps as you create the wrapper. There is no set procedure for the Driver
Wrapper Wizard because the steps adjust dynamically depending upon the driver you have selected. In general, the steps are as follows:
1 A welcome screen explaining what you are about to do and what you are required to provide.
2 Choose from a list of VXI plug&play or IVI-C drivers installed on your machine. You can also download additional drivers from the Web. See Figure 34.
Agilent T&M Toolkit 61
6 Using the Driver Wrapper Wizard
62
Figure 34 Selecting a VXIplug&play or IVI-C Driver to Wrap
3 Customize the wrapper generation process by choosing to generate XML. The XML is generated automatically and is used later to create IntelliSense documentation for the wrapper.
4 The driver is parsed and wrapped. You can review lists of errors or warnings generated by the parsing or compilation.
5 At this point, you have the option to have the Driver Wrapper
Wizard include the necessary Project References and generate sample code. This step is optional but strongly recommended.
Agilent T&M Toolkit
Using the Driver Wrapper Wizard 6
6 Project References are added to your project and sample code is available from a Code Paste Tool for you to paste into your project.
Troubleshooting
When the Driver Wrapper Wizard finishes parsing and compiling the wrapper, a screen similar to Figure35 appears.
Using the tabs, you can review any messages, warnings, or errors that were generated during the parse and/or compile processes.
Figure 35 Troubleshooting Wrapper Creation
Agilent T&M Toolkit 63
6 Using the Driver Wrapper Wizard
The Driver Wrapper Wizard translates the driver’s function names to .NET-compatible method names. It is common to see many of these translations on the Parse Information tab textbox.
The Driver Wrapper Wizard also verifies that all of the driver functions exist in both the driver’s .h
and .fp
files. If a function does not exist in both locations, the driver vendor probably did not intend the function to be visible. In this case, the Driver
Wrapper Wizard does not wrap the function. The list of functions that were not wrapped is shown in the Parse Warnings tab text box. Most of these warnings are also normal.
Parse Errors and Compile Errors
As the Driver Wrapper Wizard parses a driver to create a wrapper, the driver is verified for compliance with the standards set by its governing body. If a driver fails any of these tests, the Driver Wrapper Wizard refuses to create a wrapper and, in almost all instances, tells you why the driver failed. For an example of how this screen might look, see Figure35 on page63. Contact the driver manufacturer for help in this situation.
You are also prompted to send the failure information to
Agilent. While Agilent cannot resolve issues with drivers, problems with the Driver Wrapper Wizard are of great interest and every effort is made to resolve them.
If the driver wrapper is created and fails when you use it, this is almost always a problem with the instrument setup or configuration. The most common error is
VI_ERROR_RSRC_NFOUND , which is generated by VISA and is usually caused by an incorrect address or hardware setup. This error appears as an exception when the program is run.
If the physical connections all appear to be correct and the addressing also looks accurate, other errors may be found in either the VISA.h
or the < PREFIX > .h driver specific file.
64 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
7
Using the DirectIO Class to Control an
Instrument
Describing the DirectIO Class 66
Low-Level Access through DirectIO.Gpib 71
Low-Level Access through DirectIO.Serial 73
Low-Level Access through DirectIO.TCPIP 75
Low-Level Access through DirectIO.USB 76
This chapter describes the features of the Direct IO class library found in Agilent.TMFramework.InstrumentIO.
Agilent Technologies 65
7 Using the DirectIO Class to Control an Instrument
Describing the DirectIO Class
The DirectIO class provides easy ways to move data between your instruments and your PC. In this chapter, almost all of the properties and methods of the DirectIO class are discussed.
Reading and Writing Data
The many read and write methods of the DirectIO class convert instrument data formats into programmatic data types while reading and writing between the instrument and your PC. These methods have, as most T&M Toolkit methods, to be as similar to the .NET syntax as possible, so your .NET learning is easily transferred to the T&M Toolkit environment.
There are three instrument formats: a Number, a List, and an
IEEE Block.
• A Number is a numeric value.
• A List is a set of delimited values.
• The IEEE Block is an IEEE 488.2 definite binary block.
Table6 shows a conversion matrix. For any listed data type, you can look at the instrument format columns and determine if there is a DirectIO Read or Write method that does a conversion.
Table 6 A Conversion Matrix for Instrument Formats and Data Types
Instrument Format
List IEEE Block Data Type
Byte
Double
Int16
Int32
Single (float)
String
Number
Read/Write
Read/Write
Read/Write
Read/Write
Read/Write
Read Read/Write
66 Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Table 6 A Conversion Matrix for Instrument Formats and Data Types
Data Type
Object
ObjectArray
ByteArray
DoubleArray
Int16Array
Int32Array
SingleArray
StringArray
Number
Write
Instrument Format
List
Write
Read/Write
Read/Write
Read/Write
Read/Write
Read/Write
Read/Write
IEEE Block
Read/Write
Read/Write
Read/Write
Read/Write
Read/Write
Read/Write
The DirectIO class also supports the Write and WriteLine methods, the UnbufferedRead method, and the UnbufferedWrite method. The Write and WriteLine methods vary from other write methods because they provide string formatting. WriteLine also appends a newline. The Newline property defaults to an ASCII linefeed (LF).
The UnbufferedRead and UnbufferedWrite methods transmit and receive data directly between the instrument and the PC without the use of system buffers.
Reads can be terminated with a character. You can define the character using the TerminationCharacter property. However, the termination character is not active until you set the
TerminationCharacterEnabled property to True .
Controlling the Instrument Session
The DirectIO class includes many properties and methods for controlling and configuring your instrument session. Some of these are gateways to low-level control of the instrument.
Agilent T&M Toolkit 67
7 Using the DirectIO Class to Control an Instrument
68
NOTE
Buffer Management
By default, the AutoFlush property is True , which automatically flushes the buffer after every write. If you want finer control of the buffers, you can call the FlushRead or FlushWrite methods to clear the read and write buffers.
The size of the buffers is controlled by the SetReadBufferSize and
SetWriteBufferSize . The default size is 1,000 bytes.
Instrument Session Management
The DirectIO class has several properties and methods that can be used to set instrument configurations and control their behavior.
Table 7 DirectIO Properties for Instrument Session Management
Property Name
Address
Description
Gets the address of the current instrument
HardwareInterfaceType Gets the hardware interface type such as GPIB or
ASRL
InstrumentByteOrder Sets the instrument byte order to either big endian or little endian
Locked Gets the status of the session. If the session is locked, the status is True waitForLockTimeout Gets or sets the millisecond value for the I/O timeout during the creation of the instrument object
The Address, Locked, and waitForLockTimeout properties can be set when the instrument is first created as an object. At all other times, these properties get the assigned value.
Table 8 DirectIO Instrument Session Management
Method Name
AssertTrigger()
Description
Sends a trigger to the instrument.
Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Table 8 DirectIO Instrument Session Management (continued)
Method Name
ReadStatusByte() Reads the status byte of instruments.
Clear() Clears an instrument.
Lock()
Description
Unlock()
Locks an instrument session and does not allow other session to access the instrument.
Disables exclusive access to an instrument.
The VISA Support Class
The VISA Support Class contains a comprehensive but not complete listing of VISA properties, enumerations, and methods. It is also used to validate whether a VISA Resource
Name is well formed.
NOTE
While the VISA Support Class tests whether a VISA Resource Name is well formed, it does not verify whether the address is valid or not.
W h i l e
Using Low Level Gpib, Serial, Tcpip, and USB
DirectIO provides the basic features needed for interacting with your instruments. If you work within the DirectIO class, the interface for the instrument becomes transparent. For example, suppose you have written some source code for an oscilloscope.
If you use DirectIO to interact with the oscilloscope, it does not matter what type of interface you are using. However, if you use the lower-level methods by accessing the Gpib, Serial, Tcpip, or
USB properties, your source code is tied to a specific interface and has to be edited whenever the interface changes. This reduces the source code’s reusability and your efficiency.
The Gpib, Serial, Tcpip, and USB properties are access points to low-level instrument control that you sometimes need to use. In the following code snippet, the Gpib property is used to access the GpibInstr subclass.
Agilent T&M Toolkit 69
7 Using the DirectIO Class to Control an Instrument
Module Module1
Sub Main()
Dim scope As New DirectIO(“GPIB0::22::INSTR”) scope.Gpib.SendLocalLockOut()
End Sub
End Module
70 Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Low-Level Access through DirectIO.Gpib
You can access several properties and methods through the
DirectIO.Gpib property. These properties and methods simplify the low-level configuration and control of instruments accessed through the GPIB protocol. The connect string for a instrument with a GPIB connection is:
GPIB[ board ] ::primary address [ ::secondary address ][::INSTR]
Items in square brackets, [], are optional and items in italics are supplied by you. All other entries are required.
Addressing
There are several addressing related properties.
Table 9 Properties Related to Addressing
Property Name Description
HardwareInterfaceNumber Gets the zero based number of the GPIB board.
PrimaryAddress
RepeatAddressing
Gets the primary address of the GPIB board.
Gets whether the same address should be used for the next read or write operation.
SecondaryAddress
UnAddressing
Gets the secondary address of the GPIB board.
Gets whether the same address is not used for the next read or write operation.
Remote Operation
There are several methods and one property that affect remote operations.
• RenState is a property that gets the status of the Remote
Enable Line.
Agilent T&M Toolkit 71
7 Using the DirectIO Class to Control an Instrument
Table 10 Methods for Remote Operations
Method Name
ControlRen
Description
Controls the state of the Remote Enable Line as well as the local lockouts.
SendGoToLocal Configures the instrument to assume local front panel control.
SendLocalLockout Locks the front panel of the current instrument.
72 Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Low-Level Access through DirectIO.Serial
There are many properties and methods that simplify the low-level configuration and control of instruments accessed through the serial protocol. The connect string for a instrument with a serial connection is:
ASRL[ board ][::INSTR]
Items in square brackets, [], are optional and items in italics are supplied by you. All other entries are required.
Data Flow Control
There are many properties that support several different serial transmission flow control techniques.
Table 11 Properties for Flow Control
Property Name
BaudRate
BytesAvailable
Description
Gets or sets the rate at which data bits are transmitted and received.
Gets the number of bytes available in the global receive buffer.
Gets the current status of the clear to send line.
CleartoSendState
DataBits
DataCarrierDetectState
EndOut
Gets or sets the number of data bits sent in each data frame.
Gets the current status of the data carrier detect line.
Gets the current state of the data set ready line.
DataSetReadyState
DataTerminalReadyState Gets the current state of the data terminal ready line.
EndIn Gets or sets the terminator for serial read operations.
Gets or sets the terminator for serial write operations.
Agilent T&M Toolkit 73
7 Using the DirectIO Class to Control an Instrument
Table 11 Properties for Flow Control (continued)
Property Name
FlowControl
Parity
ReplacementCharacter
RequestToSendState
RingIndicatorState
StopBits
XoffCharacter
XonCharacter
Description
Gets or sets the serial flow control technique.
Gets or sets the type of parity being used in the flow control technique.
Gets or sets a character used to replace a damaged incoming character.
Gets or sets the request to send output signal.
Gets the current state of the ring indicator input signal.
Gets or sets the number of stop bits used to indicate the end of a signal.
Gets or sets the XOFF character.
Gets or sets the XON character.
There are also two methods that support flow control.
• Flush is a method used to clear the read and write buffers.
• SetBufferSize is a method used to define the read and write buffer size
74 Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Low-Level Access through DirectIO.TCPIP
Many Agilent instruments support network connectivity and, for those that do not, there are converter boxes now available that make this connectivity quick and easy. The connect string for an instrument with a TCPIP connection is:
TCPIP[ board ]:: host address [ ::LAN Device Name ]::INSTR
Items in square brackets, [], are optional and items in italics are supplied by you. All other entries are required.
Table 12 Tcpip Properties
Property Name
DeviceName
HostName
IPAddress
Description
Gets the LAN device name used during the connection.
Gets the hostname of the instrument.
Gets the TCPIP address of this instrument.
Agilent T&M Toolkit 75
7 Using the DirectIO Class to Control an Instrument
Low-Level Access through DirectIO.USB
Several Agilent instruments support USB connectivity and, for those that do not, there are converter boxes now available that make this connectivity quick and easy. The connect string for an instrument with a USB connection is:
USB[ board ]:: Manufacturer ID : :Model Code::Instrument Serial
Number::[USB Interface Number ]::INSTR
Items in square brackets, [], are optional and items in italics are supplied by you. All other entries are required.
Table 13 USB Properties
Property Name
Is4882Compliant
ManufacturerID
ManufacturerName
ModelCode
ModelName
HardwareInterfaceNumber
UsbInterfaceNumber
UsbSerialNumber
Description
Device supports 488.2 standard.
The identification number of the manufacturer.
The manufacturers name.
The model number for the device.
The name of the model.
The interface number for the device.
The USB interface number.
The serial number of the USB device.
Table 14 USB Methods
Method Name Description
SendLocalLockOut Disables the front panel controls of the device.
SendGoToLocal Enables the front panel of the device and passes control to it.
76 Agilent T&M Toolkit
Using the DirectIO Class to Control an Instrument 7
Table 14 USB Methods
Method Name
ControlRen
Description
Controls the state of the GPIB REN interface line and, optionally, the remote/local state of the device.
Agilent T&M Toolkit 77
7 Using the DirectIO Class to Control an Instrument
78 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
8
Analyzing Instrument Data
The Complex Data Type 80
Digital Signal Processing Capabilities 84
Bessel Functions 86
Statistical Functions 87
Engineering Math 89
Regression Techniques 91
This chapter describes the complex data type, the digital signal processing abilities, the statistical functions, mathematical tools, and regression techniques that are available in the
Agilent.TMFramework, Agilent.TMFramework.DataAnalysis, and Agilent.TMFramework.DataAnalysis.DSP class libraries.
Agilent Technologies 79
8 Analyzing Instrument Data
The Complex Data Type
Visual Studio .NET does not have a native complex data type, yet the complex data type is essential for your work. To meet this need, a complex data type is included with T&M Toolkit and implemented within .NET as an object. The T&M Toolkit includes complex mathematics, comparers, and a data type converter.
The Complex Class
The Complex class has many useful features. In the following tables, the properties, methods, and conversions are discussed.
The Complex Class Properties
Table 15 Properties of the Complex Class
Property Name
Real
Imaginary
Conjugate
Description
Gets or sets the real part of a complex number.
Gets or sets the imaginary part of a complex number.
Gets the Complex Conjugate of this complex number.
ImaginaryComparer Create a new instance of ImaginaryComparer.
MagnitudeComparer Create a new instance of MagnitudeComparer.
PhaseComparer Create a new instance of PhaseComparer.
The Complex Class Methods
Table 16 Methods of the Complex Class
Method Name
Add
Divide
Description
Adds two complex values.
Divides two complex values.
80 Agilent T&M Toolkit
Agilent T&M Toolkit
Analyzing Instrument Data 8
Table 16 Methods of the Complex Class (continued)
Method Name
Equals
FromPolarComplex
GetMagnitude
GetPhase
Description
Determines whether two instances of complex are equal.
Creates a new complex number from a given phase and magnitude and expresses it in radians.
The magnitude, or absolute value, of this complex number.
The phase, or argument, of this complex number expressed in radians.
IComparable.CompareTo
Compares the current instance with another object of the same type.
IsInfinity A value indicating if either the real or the imaginary part of the specified complex number evaluates to either negative or positive infinity.
IsNaN
IsNegativeInfinity
A value indicating if either the real or the imaginary part of the specified complex number evaluates to
Not-a-Number (NaN).
A value indicating if either the real or the imaginary part of the specified complex number evaluates to negative infinity.
IsPositiveInfinity
Multiply
Negate
Parse
A value indicating if either the real or the imaginary part of the specified complex number evaluates to positive infinity.
Multiplies two specified complex values.
Negates the value of a specified complex number.
Subtract
ToString
Converts the specified string representation of a complex number to its complex equivalent.
Subtracts two complex values.
Converts the value of this instance to its equivalent string representation using the specified format and culture-specific format information.
81
8 Analyzing Instrument Data
The Complex Type Conversion
The T&M Toolkit Complex data type can only be converted to a string.
However, the real portion of the Complex data type can also be converted to a double but, when this is done, the imaginary portion is set to zero. Likewise, when converting a double to a complex number, the double is converted to the real portion and the imaginary number is set to zero.
Comparers
The complex class supports three comparers. These comparers are accessed through the ImaginaryComparer , MagnitudeComparer , and PhaseComparer properties.
The ImaginaryComparer , MagnitudeComparer , and PhaseComparer properties are access points to comparer methods for imaginary numbers. In the following code snippet, the ImaginaryComparer property is used to access the ImaginaryComparer subclass.
Module Module1
Sub Main()
Dim d As Object
Dim result As New _
Agilent.TMFramework.ImaginaryComparer()
Dim a As Complex = New Complex(2, 2)
Dim b As Complex = New Complex(3, 1) d = result.Compare(a, b)
Console.WriteLine(d)
End Sub
End Module
These subclasses can also be used with the Array.Sort
method to specify array sorting based on imaginary values.
The Imaginary Comparer Subclass
Compares two complex numbers and returns a value indicating whether one complex is less than, equal to, or greater than the second complex.
82 Agilent T&M Toolkit
Analyzing Instrument Data 8
The Magnitude Comparer Subclass
Compares two complex numbers and returns a value indicating whether the magnitude of one complex is less than, equal to, or greater than the magnitude of the second complex.
The Phase Comparer Subclass
Compares two complex numbers and returns a value indicating whether the phase of one complex is less than, equal to, or greater than the phase of the second complex.
Agilent T&M Toolkit 83
8 Analyzing Instrument Data
Digital Signal Processing Capabilities
The Agilent T&M Toolkit includes a strong set of digital signal processing (DSP) methods. FFT and IFFT using double and complex numbers are supported. There are also five data filters
Bartlett, Blackman, Hamming, Hanning, Rectangular, and two other DSP processing functions Convolution and
CrossCorrelation.
Fast Fourier and Inverse Fast Fourier Transforms
The FFT and the IFFT methods accept an array of complex numbers or doubles. Additionally, FFT provides parameters for the input of a time interval and the return of a start frequency and a stop frequency. IFFT provides parameters for the input of frequency interval and the return of a start time and a stop time. These extra parameters make it very easy to graph the resulting data set using the T&M Toolkit’s 2D Graphing Objects.
NOTE
The execution time for FFT and IFFT depends upon the length of the transform. It is fastest for powers of two. It is almost as fast for lengths that have only small prime factors. It is typically several times slower for lengths that are prime or which have large prime factors.
Windowing Functions
Five of the data filters accept the same parameters. The Bartlett,
Blackman, Hamming, Hanning, and Rectangular windows all accept arrays of doubles and arrays of complex numbers.
For each of these filters, you can set the window to narrow, wide, or fixed. A narrow window is useful for narrow band measurements. When the narrow window is used, the peak value at a given on-bin frequency is preserved. For wide band measurements, use the wide window. When the wide window is used, the energy within a given frequency band is preserved.
Finally, when looking at windowed time domain data and when
84 Agilent T&M Toolkit
Analyzing Instrument Data 8 windowing the coefficients of a FIR filter, the fixed window should be used. This scaling preserves the peak value of the input data.
When submitting data sets to these windows, you can also submit a portion of an array by specifying how many array elements to use. The starting point for these subsets is always the first element of the array.
Data Set Comparison Functions
There are two methods for data set comparison. The Convolve method filters a data array by multiplying it with another data array. While the two data sets can be of different lengths, they must contain equally spaced data. The CrossCorrelate method also filters a data array by multiplying it against another but uses a different process for determining which values to multiply together.
Agilent T&M Toolkit 85
8 Analyzing Instrument Data
Bessel Functions
The Agilent T&M Toolkit has a modified Bessel function, a
Bessel function of the first kind, and a Bessel function of the second kind. These Digital Signal Processing filters are used to smooth waveform data.
The I0 Bessel Function
The I0 Bessel function is a modified version of the Bessel function of the first kind. It accepts values less than 700 or greater than negative 700. Values outside this range return an exception.
The J0 and J1 Bessel Functions
The J0 Bessel function computes the Bessel function of the first kind of order zero (J0) of the vector array. The J1 Bessel function computes the Bessel function of the first kind of order one (J1) of the vector array.
The Y0 and Y1 Bessel Functions
For both the Y0 and the Y1 Bessel functions, inputs that are less than or equal to 0 return a zero. The Y0 Bessel function computes the Bessel function of the first kind of order zero (Y0) of the vector array. The Y1 Bessel function computes the Bessel function of the first kind of order one (Y1) of the vector array.
86 Agilent T&M Toolkit
Analyzing Instrument Data 8
Statistical Functions
The Agilent T&M Toolkit has three groups of statistical functions available for your use: Discrete Mathematics,
Probability, and Special Functions.
Discrete Mathematics
The discrete mathematical functions included with T&M Toolkit are contained in the following table.
Table 17 Discrete Mathematics
Method Name
Beta
Binomial
Combination
Factorial
Gamma
Permutation
Description
Calculates the beta of x.
Calculates the number of combinations of n taken b at a time.
Calculates how many combinations of n things taken r at a time.
Calculates the number of ways that n objects can be permuted.
Calculates the gamma function for doubles.
Calculates the permutations of n numbers taken r at a time.
Probability
The probability functions included with T&M Toolkit are contained in the following table.
Table 18 Probability
Method Name
RMS (Root Mean
Squared)
Standard
Deviation
Description
A standard way of calculating the effective voltage or current of an AC wave.
Calculates how far a data point is from the mean value of the data set.
Agilent T&M Toolkit 87
8 Analyzing Instrument Data
Table 18 Probability (continued)
Method Name
Variance
Description
Calculates the spread of a distribution.
Special Statistical Functions
The special statistical functions included with T&M Toolkit are contained in the following table.
Table 19 Special Statistical Functions
Method Name
Mean
Mode
Median
Description
Calculates the average value for a set of data.
Returns the most commonly found value within the data set.
Returns the middle value of a data set.
88 Agilent T&M Toolkit
Analyzing Instrument Data 8
Engineering Math
Agilent T&M Toolkit
Your engineering math needs are easily met by the EngMath class. This class is a super-set of System.Math and is found in the Agilent.TMFramework class library. In the following table, the methods are described. Many of these methods also have overloads that accept the complex data type.
Table 20 Engineering Math Methods
Method Names Description
Abs Returns the absolute value of a number.
Acos
Acosh
Returns the angle whose cosine is the specified number
Returns the hyperbolic arccosine of c.
.
Acot
Acoth
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Conjugate
Cos
Cosh
Cot
Coth
Exp
Returns the angle whose cotangent is x.
Returns the hyperbolic arctangent of d.
Returns the angle whose sine is the specified number.
Returns the hyperbolic arcsine of d.
Returns the angle whose tangent is the specified number.
Returns the angle that corresponds to the inverse tangent of the quotient of two specified numbers.
Returns the hyperbolic arctangent of d.
Returns the smallest whole number greater than or equal to the specified number.
Returns the conjugate of a number.
Returns the cosine of the number.
Returns the hyperbolic cosine of the specified angle.
Returns the cotangent of d.
Returns the hyperbolic cotangent of d.
Returns the natural antilogarithm of a number.
89
8 Analyzing Instrument Data
Table 20 Engineering Math Methods (continued)
Sign
Sin
Sinh
Sqrt
Tan
Tanh
ToDegrees
ToRadians
Method Names Description
Floor Returns the largest whole number that is less than or equal to the number passed to the method.
IEEERemainder Returns the remainder resulting from the division of a specified number by another specified number. Note, see the
Microsoft documentation for more detail.
Imaginary Computes the imaginary portion of a complex number input in phase and magnitude.
Log
Log10
Magnitude
Max
Min
Phase
Pow
Real
Returns the natural logarithm of a number.
Returns the common logarithm of a number.
Returns the Magnitude of a complex number.
Returns the larger of the two parameters.
Returns the smaller of the two parameters.
Returns the phase of a complex number in radians.
A number raised to a power.
Computes the real portion of a complex number that has been input as phase and magnitude.
Round Returns a number nearest the number passed in the parameter.
For a number X, return (X / ABS(X))
Returns the sine of the number.
Returns the hyperbolic sine of the specified angle.
The square root of a specified number.
Returns the tangent of the number.
Returns the hyperbolic tangent of the specified angle.
Converts radians to degrees.
Converts degrees to radians.
90 Agilent T&M Toolkit
Analyzing Instrument Data 8
Regression Techniques
Agilent T&M Toolkit supports four regression methods: Linear,
Logarithmic, Exponential, and Power. The Logarithmic,
Exponential, and Power regression methods throw exceptions if they are passed values less than or equal to zero.
The regression methods accept the following data sets:
• A one-dimensional array of Y values, the X start value, and the X interval.
• A one-dimensional array of XY values where X is always the first value and the pattern is XYXYXY.
• A one-dimensional array of X values and a one-dimensional array of Y values.
• A two-dimensional array of XY values where the array can be dimensioned [n,2].
The Linear regression method produces both coefficients, the goodness of fit, and Y fitted data. All of the other regression methods produce both coefficients, the goodness of fit, Y fitted data, and X fitted data.
Agilent T&M Toolkit 91
8 Analyzing Instrument Data
92 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
9
Using the 2D Graph Objects
What Types of Graphs are Available? 95
Using Traces to Get Data to the Graph 101
How can I Modify the Appearance of the Graph? 106
Panning, Zooming, and the Context Menu 108
This chapter provides an overview of the available graphs, of how to get data to the graph, and categories of properties that are used to configure a graph’s appearance. All of these features are found in the Agilent.TMFramework.DataVisualization class library.
Agilent Technologies 93
9 Using the 2D Graph Objects
Using the 2D Graph Objects
Where are the 2D Graph Controls?
From the Windows Forms Designer, open the Toolbox by selecting View > Toolbox or enter
ALT-CTL-X
. The Toolbox appears on the left side of your display. You should have already created a T&M Toolkit Tab and added the Agilent components to it. However, if you have not, review the “How Do
I Add the T&M Toolkit Tab to the Toolbox?” topic in the
Frequently Asked Questions book of the online Help.
The T&M Toolkit tab looks like:
94
Figure 36 The Agilent T&M Toolkit Toolbox Tab
To use a graph control such as the Complex Graph, just drag and drop it onto the upper left corner of your form.
Agilent T&M Toolkit
What Types of Graphs are Available?
There are seven types of graphs.
XY Graph
Using the 2D Graph Objects 9
Agilent T&M Toolkit
NOTE
Figure 37 XY Graph
The XY Graph displays traces fed by dual-channel data (X and Y data) which can be arbitrarily or functionally related to each other. In Figure37 , there are two traces. Each trace consists of a one-dimensional array of X,Y pairs. The XY Graph also accepts two-dimensional arrays.
Whenever X,Y data pairs are loaded into an array of any size, the 2D Graph
Object always assumes the first value read is the X value of the X,Y pair.
95
9 Using the 2D Graph Objects
Waveform Graph
96
Figure 38 Waveform Graph
The Waveform Graph displays time domain data given Y values and a start time/stop time for the Y values.
There is a tutorial in online help entitled “Using the 2D Graph
Objects”. The tutorial uses the Waveform Graph to describe traces. Every graph has at least one trace, the DefaultTrace, as well as others that you may add.
Traces, such as the one displayed in Figure38, visually represent your data. They are the fundamental building block to graphing with the T&M Toolkit. Traces are discussed in more detail later in this chapter.
Agilent T&M Toolkit
Y Graph
Using the 2D Graph Objects 9
Agilent T&M Toolkit
Figure 39 Y Graph
The Y graph displays traces fed by a single-channel Y data source, where X data is the index for the data point.
The Y graph in Figure 39 shows two different traces and two different markers. The markers appear as a diamond shape near the end of the trace with the shorter cycle time and an upside-down triangle about one-third of the way along the other trace. Markers move from data point to data point along the trace.
97
9 Using the 2D Graph Objects
StripChart
98
NOTE
Figure 40 Strip Chart
A Strip Chart displays live, continuous traces fed by single-channel Y data with TimeSpan as the X axis. The data is accumulated in a user-configurable internal buffer.
The recommended way to manage the Strip Chart time interval is to connect it directly to the system timer. In your source code, this looks like
StripChart1.TimeInterval =
System.Windows.Forms.Timer1.Interval.
You then manipulate the Timer properties to control the StripChart time interval.
Agilent T&M Toolkit
Complex Graph
Using the 2D Graph Objects 9
Agilent T&M Toolkit
Figure 41 Complex Graph
A Complex Graph is a special-purpose graph for complex numbers where the real portion of the complex number is the X axis, and the imaginary portion of the complex number is the Y axis.
The Complex Graph in Figure 41 has two markers. These markers are linked so that when the marker on the outside trace is moved, the marker on the inner trace moves in unison with it.
There are no limits to the number of linked markers on a graph, and you can link one marker to an infinite number of other markers. However, the links are always unidirectional. For example, if you move the marker on the inner trace in Figure41, there is no corresponding movement from the marker on the outer trace.
99
9 Using the 2D Graph Objects
Magnitude Spectrum Graph
100
Figure 42 Magnitude Spectrum Graph
A Magnitude Spectrum Graph displays one-dimensional, complex data of a frequency domain. When the data is prepared, a method in the Agilent T&M Framework is used to capture the real portion (the magnitude) of the complex number. The magnitude is then displayed on the Y axis and frequency is displayed on the X axis.
Agilent T&M Toolkit
Phase Spectrum Graph
Using the 2D Graph Objects 9
Figure 43 Phase Spectrum Graph
A Phase Spectrum Graph displays one-dimensional, complex data based on a phase angle. When the data is prepared, a method in the Agilent T&M Framework is used to capture the imaginary portion (the phase) of the complex number. The phase is then displayed on the Y axis and frequency is displayed on the X axis.
Using Traces to Get Data to the Graph
As has been mentioned, traces are the fundamental building block for the 2D Graph Object. Every graph has at least one trace, called the DefaultTrace, and usually several others which you have added.
The trace holds the data points you have generated. This could be a continuous stream of data plotted on the Y axis with time on the X axis (a Strip Chart), a two-dimensional array of X,Y
Agilent T&M Toolkit 101
9 Using the 2D Graph Objects pairs (an XY Graph), or a large array of complex numbers (a
Complex Graph). In each of these cases, traces function in the same way and with the same descriptive properties.
The Default Trace
Every graph object in the 2D Graph Object starts with one
DefaultTrace. You can delete the DefaultTrace, but, should you also delete all other traces, a DefaultTrace is automatically re-created.
The DefaultTrace is designed for situations where you want a quick, single trace plot. The PlotDefaultTrace() method supports the use of the DefaultTrace for single trace plots. The
PlotDefaultTrace() method loads and plots the DefaultTrace in a single step. The other plotting method is designed for multiple traces and requires a separate step to load data into the trace.
Defining New Traces and Markers
Figure 44 Trace Representations
102 Agilent T&M Toolkit
Using the 2D Graph Objects 9
To create traces, you need to access the Trace Collection. See
Figure45 for an example of how the Graph Appearance category looks. Since Traces is the default property for all of the
2D Graph Objects, you can also just click the graph and click the ellipsis to go to the Trace Collection Editor.
Agilent T&M Toolkit
Figure 45 Locating the Traces Collection in the Property Listing
103
9 Using the 2D Graph Objects
104
Figure 46 The Trace Collection Editor for the SpectrumTrace
All traces are listed in the left column and, by choosing one of the traces, you can set the properties for it from the property listing in the right column. As you change the properties, your changes are reflected on the trace representation as seen in
Figure44 .
Notice in Figure 46 that the Marker Collection is accessible from the Trace Collection Editor. To create markers or change their properties do the following:
Accessing the Markers Collection Editor
Step
1
Description
Launch the Trace Collection Editor
Agilent T&M Toolkit
Agilent T&M Toolkit
Using the 2D Graph Objects 9
Step
2
3
4
Accessing the Markers Collection Editor (continued)
Description
Select the trace that contains the marker you want to edit
Select the Marker Collection
Select and edit the marker
Markers, however, do not appear on the trace representations seen in Figure44.
Setting and Plotting Data
You have created all the traces and markers you need for your graph. The properties are set so that the appearance and behavior of your graph is going to be just what you want. All that remains is to generate the data and then programmatically connect your graph with the data set. To accomplish this within the 2D Graph Object Set, there are just three simple methods you need to know.
• The PlotDefaultTrace Method is only used for the DefaultTrace.
It loads data from a source you have provided and plots it directly to the DefaultTrace. One data source connected to one trace gives you a quick, simple graph.
• Whenever you have multiple data sets, which means multiple traces, the SetData Method is used to load data into each trace.
The SetData Method is always used in conjunction with the
PlotAll Method .
• The PlotAll Method is always used as the final step in a series of SetData Methods. It plots all of the traces that have been loaded, supports multiple data types, one-dimensional arrays, and a two-dimensional array for the XY graph.
105
9 Using the 2D Graph Objects
How can I Modify the Appearance of the Graph?
The appearance of your graph is modified by the extensive property set within the Microsoft .NET Form Designer and the features of the 2D Graph Objects provided by the Agilent T&M
Toolkit.
Agilent T&M Toolkit 2D Graph Property Categories
The 2D Graph Objects are made available through the seven graph objects previously mentioned and the three graph property categories used to control their appearance. A description of these three categories follows:
• The Graph Appearance Category
• The Bottom , Left , Right , and Top Margin property settings control the distance, in pixels, between the plot area and edge of the graph control. The plot area is the area where your traces appear.
• The Marker Display is a legend for the markers. Using this group of properties, you can define how the Marker
Display appears.
NOTE
The Marker Display not only presents an example of each marker’s appearance, it also captures the relationships between markers that are linked.
• The Plot Area is the area where your traces appear. You can control its appearance with this property set.
• The Smoothing Mode property specifies the rendering quality for the graphic.
• The main Title for the graph control. You can control its appearance with this property set.
• The Trace Legend displays the trace’s name, color, whether fill bars are visible, and whether the data points are visible.
• The Graph Axes Category
106 Agilent T&M Toolkit
Agilent T&M Toolkit
NOTE
Using the 2D Graph Objects 9
• The Graticule group of properties includes the creation and configuration of a grid for your graph. You can also set a property called TickStyle . TickStyle is used to define which of the plot area boundaries have tick marks.
• The XAxis and YAxis groups of properties are identical in nature. You can control the appearance of the axis, major ticks, and minor ticks; or the caption text and appearance.
You can also control the scaling by adjusting the minimum and maximum values; and several other items such as
CoordStyle(Linear,Log) .
There is an item of particular interest on the XAxis and YAxis property subsets. The AutomaticScaling property defaults to automatically scaling both axes (except in the Strip Chart) and is used for design-time work. For run time, the AutoScaling method is strongly recommended. The
AutoScaling method supports the UndoZoom feature of the context menu whereas the AutomaticScaling property does not.
• The Graph Behavior Category
• The 2D Graph Objects have a very useful context menu that is activated by placing the cursor in the plot area and right clicking. This feature is discussed in more detail in
“The Context Menu" on page110.
• The KeyboardEnabled property activates several handy shortcut keys for zooming and panning. This feature is discussed in more detail in “Keyboard Shortcuts " on page 108.
• The MouseEnabled property activates the mouse wheel. The mouse wheel, used in conjunction with the keyboard, can provide the full range of zooming and panning. This feature is discussed in more detail in “Mouse
Shortcuts" on page108.
107
9 Using the 2D Graph Objects
Panning, Zooming, and the Context Menu
Once your graph is drawn, you may want to zoom-in on specific areas and pan from location to location. There are several ways to do this with the 2D Graph Objects. You can use your keyboard, mouse, or a context menu, whichever is the most convenient for you.
Keyboard Shortcuts
To use keyboard shortcuts, hold the CTRL or ALT key down
(depending upon whether you are panning or zooming) and then hold down the second key until you have achieved the desired result. See the following table for key combinations and their corresponding action.
Table 21 Keyboard Shortcuts for Panning and Zooming
Key Combination
CTRL-RightArrow
CTRL-LeftArrow
CTRL-UpArrow
CTRL-DownArrow
ALT-RightArrow
ALT-LeftArrow
ALT-UpArrow
ALT-DownArrow
Action
Pans right
Pans left
Pans upward
Pans downward
Zooms in on the X axis
Zooms out on the X axis
Zooms in on the Y axis
Zooms out on the Y axis
Mouse Shortcuts
When using the mouse shortcuts, the action is not completed until after you release the buttons.
108 Agilent T&M Toolkit
Agilent T&M Toolkit
Using the 2D Graph Objects 9
Table 22 Mouse Shortcuts for Panning and Zooming
Key / Mouse Combination
Hold down the left mouse button and draw a rectangle inside the plot area.
Action
Zooms the area within the rectangle.
(Press the
ESC
key before releasing the mouse’s left button to cancel the zoom.)
Pans the graph display in the direction you drag the mouse.
Hold down the
CTRL
key and the left mouse button simultaneously. Drag the mouse.
Hold down the
X
key and move the mouse wheel forward or backward.
Hold down the
Y
key and move the mouse wheel forward or backward.
Hold down the
Z
key and move the mouse wheel forward or backward.
Hold down the mouse wheel forward or backward.
Hold down the
H
key and move the
V
key and move the mouse wheel forward and backward.
Hold down the mouse wheel forward and backward.
Hold down the
E
key and move the
W
key and move the mouse wheel forward and backward.
Zooms the X axis in (mouse wheel forward) or out (mouse wheel backward).
Zooms the Y axis in (mouse wheel forward) or out (mouse wheel backward).
Zooms the X and Y axis in (mouse wheel forward) or out (mouse wheel backward).
Pans the display to the left (mouse wheel forward) or to the right (mouse wheel backward).
Pans the display up (mouse wheel forward) or down (mouse wheel backward).
Pans the display towards the upper right corner (mouse wheel forward) or the lower right corner (mouse wheel backward).
Pans the display to the upper left corner (mouse wheel forward) or to the lower left corner (mouse wheel backward)
109
9 Using the 2D Graph Objects
The Context Menu
There is also a context menu available that provides quick access to several useful features. To access this menu, place your mouse pointer in the plot area and right click.
Figure 47 Context Menu - AutoScale
• If the current graph has already been AutoScaled, the
AutoScale menu option is greyed out. If you choose
AutoScale, a sub-menu containing entries for each axis or both axes appears. AutoScale tells the graph object to automatically scale the chosen axis(es) to match the minimum and maximum values of the traces.
• Choosing Zoom also initiates a sub-menu containing entries for the axis or axes and an additional sub-menu that prompts for a zoom factor.
110
Figure 48 Context Menu - Zoom
Agilent T&M Toolkit
Agilent T&M Toolkit
Using the 2D Graph Objects 9
• UndoZoom is disabled until you have done a Zoom operation.
At that point, choosing UndoZoom reverses the zoom process by returning to the previous zoom point.
• If a marker is not defined for a trace on the graph object, the
ViewMarker menu choice is disabled. If you have a marker defined, choosing ViewMarker brings a marker back into the display area. For example, suppose you had a trace with a marker defined for it. You zoomed the trace several times and the marker was now on a part of the trace that was no longer in the display area. By choosing this menu option, the marker would be moved to the edge of the display area.
• Choosing the Copy option places a copy of the graph control
(not the Forms Designer form) onto the Windows Clipboard.
• Choosing Save initiates a File Save dialog box. You can save a copy of the graph control (not the Forms Designer form) in a
.jpg, .bmp, or .gif format.
111
9 Using the 2D Graph Objects
112 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
10
Virtual Waveforms, Timing Classes,
Number Formatting, and Engineering
Math
Generating Waveforms 114
Timing Classes 119
The EngineeringFormatter Class 121
The Engineering Math Class 124
This chapter describes a component and several additional classes that are very useful to engineers. All of these classes are found in the Agilent.TMFramework class library.
Agilent Technologies 113
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
Generating Waveforms
Have you ever been in a situation where you just need to create a simple sine wave to test some source code you have written, but you don’t want to start up the instruments? The T&M
Toolkit’s FunctionWaveformGenerator is made-to-order.
The FunctionWaveformGenerator creates data for six different waveform functions: sine, cosine, triangle, square, positive ramp, and negative ramp. The properties for each of these functions are fully configurable by you, so you can control the characteristics of the waveform and match it directly to your needs.
Of course, it is nice to have a tool that creates fully configurable data sets that can be used to simulate different waveforms, but the FunctionWaveformGenerator has a great deal more convenience to offer. You can drag and drop it right onto your
Windows Form, adjust its properties at design time, and run your program. The FunctionWaveformGenerator is only visible at design time.
114 Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
In Figure49 you see a YGraph with a
FunctionWaveformGenerator that has been dragged from the
T&M Toolkit tab of the Forms Designer Toolbox and dropped onto the form. No programming has been done yet.
Agilent T&M Toolkit
Figure 49 A YGraph with FunctionWaveformGenerator Component
115
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
In Figure50 you see the properties for the
FunctionWaveformGenerator. Notice that the name has been changed to FWG1 to simplify typing later. At this point, you are still in the Windows Forms Designer and, due to the unique features of the FunctionWaveformGenerator, you are able to control the data for your graph as well as its appearance.
116
Figure 50 Properties for the FunctionWaveformGenerator
The graph is ready, but it does require some programming to take advantage of the FunctionWaveformGenerator and create a graph of the sine wave. Switch to the code window by double- clicking on the “Graph Me!” button. You should find yourself in the Button1_Click event. Enter the following line of code:
YGraph1.PlotDefaultTrace(FWG1.GenerateYData)
Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
Run the program and click Graph Me!
to produce the graph shown in Figure 51.
Agilent T&M Toolkit
Figure 51 Graphed Sine Wave Using Data from FWG1
Properties
Table 23 FunctionWaveformGenerator Properties
Property Name
Amplitude
DCOffset
Frequency
FunctionType
Description
Gets or sets the amplitude of the generated waveform.
Gets or sets the DC offset of the waveform.
Gets or sets the frequency of the generated waveform.
Gets the wave type. Sets the wave type to Sine, Cosine,
Square, Triangle, PositiveRamp, or NegativeRamp.
117
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
Table 23 FunctionWaveformGenerator Properties
Property Name
NumberOfPoints Gets or sets the number of points in the generated waveform.
Phase
Description
Gets or sets the phase (in degrees) of the generated waveform.
StartTime
StopTime
Gets or sets the start time of the waveform.
Gets or sets the stop time of the waveform.
Methods
Table 24 FunctionWaveformGenerator Methods
Method Name
GenerateXData
GenerateYData
Description
Generates the X axis values.
Generates the Y axis values.
118 Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
Timing Classes
The Timing Class
Most computers have high-resolution counters. These counters are very useful when you need precise timing measurements. To test if your computer supports this type of counter, call the
HiResCounterSupported method.
The Timing class provides two sets of functionality designed to take full advantage of a high-resolution counter. First, the
CounterValue property and the CalculateElapsedSeconds method allow you to make precise timing measurements. To determine the amount of timing resolution available from your computer's high-resolution performance counter, use the CounterResolution property.
The following C# example demonstrates this usage.
using System; using Agilent.TMFramework; using Agilent.TMFramework.InstrumentIO; public class App { public static void Main() {
DirectIO dio = new DirectIO("GPIB0::7"); double elapsed; dio.WriteLine("*IDN?"); long start = Timing.CounterValue; string response = dio.Read(); long stop = Timing.CounterValue; elapsed = Timing.CalculateElapsedSeconds(start, stop);
Console.WriteLine("Elapsed time was: {0:E4}", elapsed);
}
}
Secondly, you can use the Delay method from this class to provide delays, in the microsecond range, for gating I/O with an instrument.
NOTE
The Delay method guarantees the requested amount of time passes before it returns. However, due to the preemptive, multitasking nature of the Windows operating system, there is no guarantee the delay is not longer.
Agilent T&M Toolkit 119
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
ProgressUpdater
The ProgressUpdater class is quite useful in at least two instances. If you are programmatically building a driver wrapper with T&M Toolkit’s Wrapper Generator and want notification of the progress, the ProgressUpdater properties can do this for you. You can also use this class for any program you are developing where you want to monitor the progress of an event.
The ProgressUpdater class has two properties:
• Message is a property that gets the message associated with this event.
• PercentComplete is a property that gets the percent complete value for this event.
120 Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
The EngineeringFormatter Class
CAUTION
The EngineeringFormatter class addresses the number formatting needs of engineers. It converts any number into engineering format and, for numbers with exponent values between E+024 and E-024 (inclusive), it can substitute the abbreviated or full SI prefix for the exponent.
Any formatting method you use that takes an IFormatProvider as a parameter can also use the EngineeringFormatter to format numbers. For example, the System.String.Format
method can accept a FormatProvider (an object that implements
IFormatProvider ). This method is used as follows for C#: string result =
String.Format(EngineeringFormatter.Default,
"{0:M6}", 123456);
The result of this operation is "123.456E+003". If you had used the standard .NET number format provider with the format code of "E5", the result would have been "1.23456E+005". Note how the EngineerFormatter adjusts the position of the decimal point so the exponent is always a multiple of three. This is true even when you display the exponent value as an SI prefix instead of a number.
The general format for an engineering format specifier is:
<formatCharacters><significantDigits>. The significant digits portion of the format specifier is optional. If the significant digits are not specified, a default of four significant digits is used.
When specifying the number of significant digits, use at least 3 in your format specifier. For example, the code snippet
String.Format("{0:mt5}", 123456)
specifies five significant digits and produces the string "123.46e3". If only one significant digit is specified using "
{0:mt1}
", the result is "100e3", which is not very informative.
Agilent T&M Toolkit 121
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
The following table describes the different format specifiers used to apply different engineering formats. Any format specifier that is not recognized is passed through to the default
.NET FormatProvider . The description of each of the following format codes shows an example of the format based on the number 123456.
Table 25 Format Specifiers and Their Action
Format Specifier Description
M or m Engineering Multiple Mode. Exponent value is always a multiple of three. Exponent character is displayed in either upper case (E) or lower case (e) depending on the case of the format character. M displays "123.5E+003". m displays
"123.5e+003".
Mt or mt Engineering Multiple Terse Mode. Same as M and m except that extraneous exponent characters are removed to make the display as terse as possible. Leading zeros in the exponent are removed as well as the "+" character. In the case of a negative exponent, the "-" character is displayed.
Mt displays "123.5E3". m displays "123.5e3". If the number were 0.123456, then M would yield "123.5E-3". In all cases, the t must be in lower case.
A
At
S
St
SI Abbreviation Mode. Exponents between E+024 and
E-024 are replaced with the appropriate SI prefix abbreviation. Exponent values that fall outside of this range are not changed since there are no SI prefixes for these values. A displays "123.5 k".
SI Abbreviation Terse Mode. Same as A except that the space between the number and the SI prefix abbreviation is removed. At displays "123.5k". In all cases, the t must be in lower case.
SI Prefix Mode. Same as A except that the full SI prefix name is used instead of the abbreviation. S displays “123.5 kilo".
SI Prefix Terse Mode. Same as S except that the space between the number and the SI prefix is removed. St displays "123.5kilo". In all cases, the t must be in lower case.
122 Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
A Visual Basic .NET sample for each formatting code appears in the following list.
Dim formatProvider as IFormatProvider = EngineeringFormatter.Default
Console.WriteLine(String.Format(formatProvider, "Case 1:{0:M}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 2:{0:m3}", 3.123456E+001))
Console.WriteLine(String.Format(formatProvider, "Case 3:{0:Mt}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 4:{0:mt3}", 3.123456E+001))
Console.WriteLine(String.Format(formatProvider, "Case 5:{0:A}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 6:{0:S}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 7:{0:At}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 8:{0:St}", 3.123456E-001))
Console.WriteLine(String.Format(formatProvider, "Case 9:{0:A5}S", 3.123456E-001))
/* Outputs:
Case 1: 312.3E-003
Case 2: 31.2e+000
Case 3: 312.3E-3
Case 4: 31.2e0
Case 5: 312.3 m
Case 6: 312.3 milli
Case 7: 312.3m
Case 8: 312.3milli
Case 9: 312.35 mS
*/
Agilent T&M Toolkit 123
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
The Engineering Math Class
The Engineering Math class is a superset of math functions consisting of the Microsoft Math class and some additional methods provided by Agilent that are specific to test and measurement users.
The Microsoft library is well documented within Microsoft’s help, so those methods are not discussed. Additionally, Agilent has added a Complex data type method to many of the Microsoft methods. Since the nature of the method is identical, these methods are not discussed here either.
The following table contains a list of methods Agilent has provided to enhance the Engineering Math Class.
Table 26 Table of Engineering Math Methods
Method
Asinh
Acosh
Acoth
Atanh
Atan2
Conjugate
Description
Returns the hyperbolic sine of the parameter passed to the method. This is an overload supporting the complex and double data types.
Returns the hyperbolic cosine of the parameter passed to the method. This is an overload supporting the complex and double data types.
Returns the hyperbolic cotangent of the parameter passed to the method. This is an overload supporting the complex and double data types.
Returns the hyperbolic tangent of the parameter passed to the method. This is an overload supporting the complex and double data types.
Returns the angle (the inverse tangent), as measued in radians, that is equal to the first parameter passed to the method divided by the second parameter passed to the method. This is an overload supporting the complex and double data types.
This is accomplished by negating the imaginary portion of the complex number. This is an overload supporting the complex and double data types.
124 Agilent T&M Toolkit
Agilent T&M Toolkit
Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math 10
Table 26 Table of Engineering Math Methods
Method
Magnitude
Phase
Real
Imaginary
ToRadians
ToDegrees
Description
The absolute value of the parameter passed to the method.
This is an overload supporting the complex and double data types.
Returns the argument of a Complex number expressed in radians. This is an overload supporting the complex and double data types.
Computes the real portion of a Complex number that is input as phase and magnitude
Computes the imaginary portion of a Complex number that is input as phase and magnitude
Converts Degrees to Radians
Converts Radians to Degrees
125
10 Virtual Waveforms, Timing Classes, Number Formatting, and Engineering Math
126 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
11
Using Agilent VEE with .NET
Using the VEE Wrapper Wizard 128
How do VEE and .NET Communicate? 131
Can Legacy VEE Code be Adapted to .NET? 134
NOTE
This chapter describes how to use the VEE Wrapper Wizard and offers many tips and techniques for making new and old VEE source code work well with .NET.
The VEE Wrapper Wizard only works with VEE versions 6.03 or higher. If you are using version 6.0, the VEE support page on the WWW
(www.agilent.com/find/vee) provides a free 6.0 to 6.01 update under the
VEE Support category, Update Patches link. A version 6.01 to 6.03 update is included with the Agilent T&M Toolkit product. Versions of VEE earlier than 6.0 require an upgrade.
Agilent Technologies 127
11 Using Agilent VEE with .NET
Using Agilent VEE with .NET
Using the VEE Wrapper Wizard
Agilent VEE is a a powerful graphical programming environment for fast measurement analysis results. The VEE
Wrapper Wizard is designed to allow the VEE programmer to continue working in the VEE environment but be able to use
Agilent T&M Toolkit and Visual Studio .NET as well.
Using the VEE Wrapper Wizard
Step
1 Launch the Wrapper Wizard
2 Point the VEE Wrapper Wizard to your .vee file.
3 The Wrapper Wizard parses the file.
Action
a From the Visual Studio .NET main menu, select T&M Toolkit.
b From the T&M Toolkit menu, select
VEE Wrapper Wizard.
c Click Next to continue or Cancel to quit the wizard.
Notes
• Before starting the VEE Wrapper
Wizard, start VEE and open your
VEE project.
a Either browse to or type in the full path to the .vee file you are using.
b Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
• Warnings may appear. These are typically related to mismatches between the variable naming conventions of .NET and the more relaxed standards of VEE.
• The VEE Wrapper Wizard automatically converts naming differences between the VEE and
.NET. You should review each warning.
128 Agilent T&M Toolkit
Using Agilent VEE with .NET
11
Figure 52 Selecting User Functions
Using the VEE Wrapper Wizard (continued)
Steps
4 Select the User Functions to include in your VEE Wrapper.
Actions Notes
a Review the list of available VEE User
Functions and select the ones you want to include and clear the ones you do not want to include.
b Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
• The VEE Wrapper Wizard only includes User Functions.
• The description that appears in the
User Function Description text box comes directly from the VEE
Description text box for the User
Function.
Agilent T&M Toolkit 129
11 Using Agilent VEE with .NET
Figure 53 Specify .NET Wrapper Settings
Using the VEE Wrapper Wizard (continued)
Steps Actions
5 Specify the .NET Wrapper settings. a Enter the fully qualified class name for the generated wrapper class.
b Select a file name for the .NET wrapper assembly.
c Select whether to automatically generate XML. It is recommended that you do generate XML.
d Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
6 Compile the .NET Wrapper
Assembly.
Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
Notes
130 Agilent T&M Toolkit
Using Agilent VEE with .NET
11
Using the VEE Wrapper Wizard (continued)
Steps
7 Select code generation options.
8 Generate code
9 Paste Code
Actions
a Select whether to add the new
References to the project and select the project.
b Select whether to launch the Code
Paste Tool.
a Click Next to continue, Cancel to quit the wizard, or Back to return to the previous screen.
Click Next to continue, Cancel to quit the wizard, Back to return to the previous screen, or Finish.
If you chose to launch the Code Paste
Tool, paste the code from the Code Paste
Tool into your source code.
Notes
How do VEE and .NET Communicate?
VEE Pro provides an ActiveX Automation Server that makes VEE
UserFunctions available for use by other applications. Those
UserFunctions are stored in a
.vee
file. The Agilent T&M Toolkit provides classes, methods, and properties that enable communication with the Automation Server in VEE. These VEE communication tools are available when you add a GeneratedWrapper class to your .NET application. The GeneratedWrapper class is created when you run the
VEE Wrapper Wizard.
Several classes are involved withVEE Pro’s communication. An overview of the most important classes follows:
• The VeeLibrary object knows the name and location of your
.vee
program file. It has a collection of all the UserFuctions available in that program. It creates and owns an instance of the
VeeCallServer
to handle the actual communication with VEE Pro.
• The VeeCallServer object controls VEE's configuration (such as the window geometry).
Agilent T&M Toolkit 131
11 Using Agilent VEE with .NET
132
• The GeneratedWrapper is the principal object you use to write code that communicates with VEE Pro. For programming convenience, the GeneratedWrapper presents each VEE UserFunction as a separate method, complete with
IntelliSense help. Because the GeneratedWrapper class inherits from the VeeLibrary class, it also provides a way to access all the public members of VeeLibrary and
VeeCallServer.
Configuring and Using the Callable VEE Server
VEE’s Callable VEE Server is an ActiveX Automation Server available in version 6.x and greater. Some helpful hints for configuring and using the Callable VEE Server follow.
For the Server Host, either the VEE Pro development environment or VEE Pro RunTime can host the Callable VEE
Server. If VEE Pro RunTime is installed on a system without the development environment, VEE Pro RunTime registers itself as the Callable VEE Server. On systems containing both VEE Pro
RunTime and the development environment, you can change the Callable VEE Server host from the command line. To make
VEE Pro RunTime the Callable VEE Server, execute:
< vee_run_install_dir >
\veerun.exe /regserver
To make the VEE Pro development environment the Callable
VEE Server, execute:
< vee_pro_install_dir >
\vee.exe /regserver
When in the operator mode, the Callable VEE Server does not always display a VEE window. In many cases, the VEE server performs its tasks without displaying a window. The following conditions cause the VEE server to display a window when it runs:
• The DebugEnabled property is
True
.
• The called UserFunction uses a Panel view as its operator interface and specifies Show Panel on Execute.
• A dialog box (from the Data menu) executes, requesting operator input.
Agilent T&M Toolkit
Agilent T&M Toolkit
NOTE
Using Agilent VEE with .NET
11
There are some I/O configuration items you should consider:
• The Callable VEE Server does not support loading embedded
I/O configurations. This means that the Callable VEE Server only uses the global I/O configuration file. VEE searches for the global I/O configuration file as follows:
1 If an environment variable named HOME exists, VEE always looks for the I/O configuration file there. A blank
I/O configuration file is created if one doesn’t exist in the
%HOME% directory.
2 If no HOME environment variable is defined, then VEE looks for the I/O configuration file in:
< %USERPROFILE% > \Local Settings\Application Data\Agilent \ VEE Pro
• The remote instance of the Callable VEE Server is also affected if HOME is not defined as an environment variable.
In this case, the "Identity" selection of the “dcomcnfg” utility affects which I/O configuration file is used.
• When using "The interactive user" setting as the Identity
Selection, the current user’s I/O configuration file is used.
For example, if JDoe is logged on at the time the Callable
VEE Server started, the Callable VEE Server looks for the
I/O configuration file:
..\JDoe\Local Settings\Application Data\Agilent\VEE Pro\vee.io
• If you use "The launching user" setting or "This user" as the
Identity Selection, Windows NT normally loads the
"Default User" profile. If you use either of these settings, you should copy the “vee.io” and “vee.rc” files from your profile directory:
< %USERPROFILE% > \Local Settings\Application Data\Agilent\VEE Pro to
..\Default User\Local Settings\Application Data\Agilent\VEE Pro\vee.io
If you are using VEE Pro RunTime to host the Callable VEE Server, change all directory references above to VEE Pro RunTime.
133
11 Using Agilent VEE with .NET
134
To verify your configuration settings, install VEE Pro 6.03 or higher on the client computer. Then, using a command prompt window, change directory to:
< vee_pro_install_dir > \examples\CallableVEE\VBScript and execute: cscript GetServerInfo.vbs \\
< remote_host_name >
If this script fails, see the Troubleshooting section of online
Help.
Can Legacy VEE Code be Adapted to .NET?
Absolutely! The T&M Toolkit can generate a wrapper that lets you access the UserFunctions in any (Version 6.03 or greater)
VEE Pro program, without requiring you to modify the VEE program. However, if you are willing to revisit your legacy VEE programs, there are some steps you can take to enhance the interaction between your VEE code and your Visual Studio .NET applications.
What can be Accessed in VEE?
Keep in mind that the Callable VEE Server cannot access the
"Main" portion of a VEE program. Only UserFunctions and things embedded within UserFunctions are accessible when calling VEE from a .NET application. Structure your VEE program so that all the features you want to access are built as
UserFunctions.
Naming UserFunctions and Parameters
When naming UserFunctions and their input and output terminals, follow the .NET naming rules. In summary: the first character of a name should be a letter, and a name should contain only letters, numbers, and underscores. It is also helpful to use meaningful names. The VEE Wrapper Wizard automatically alters names that do not conform to .NET naming rules. You are not required to change non-conforming names, but you might prefer your own alterations to the automatic alterations.
Agilent T&M Toolkit
Using Agilent VEE with .NET
11
If you know the expected data type for your input parameters, it is helpful to make those constraints part of your program. In
VEE, double-click the input terminal to open the Input Terminal
Information dialog. Set the Required Type and Required Shape to the expected values. This lets your .NET application see the actual data type. Without this constraint, .NET applications see the terminals as the generic type "object."
Agilent T&M Toolkit 135
11 Using Agilent VEE with .NET
136 Agilent T&M Toolkit
Agilent T&M Programmers Toolkit for Visual Studio .NET
Getting Started
12
Product Support
Help Sources 138
Agilent Developer Network 143
Support Service Contracts and Options 144
This chapter describes the sources of help within Agilent T&M
Toolkit, the Agilent Developer Network, and the support options.
Agilent Technologies 137
12 Product Support
Help Sources
Online Help
Agilent T&M Toolkit has an extensive set of Help files. These files include tutorials, samples, and documentation for all of the class libraries and stand-alone products.
The Agilent T&M Toolkit Help follows the Visual Studio .NET help guidelines, have the same look-and-feel, and are tightly integrated into the .NET help system. See Figure54 on page139.
138 Agilent T&M Toolkit
Product Support 12
Agilent T&M Toolkit
Figure 54 Agilent T&M Toolkit Help Contents
139
12 Product Support
Dynamic Help
With Visual Studio .NET, Microsoft has released a new help feature, Dynamic Help. This feature is both powerful and simple to use. Dynamic Help is typically docked in the lower right corner of your display. If it is not there, go to the .NET main menu, select Help > Dynamic Help .
Dynamic Help contains a list of help references for the features you are currently using. In Figure55 on page141, you see a
Dynamic Help window with three books, Help, Samples, and
Getting Started. Under the Help book is a reference to the 2D
Graph Control, DataVisualization.StripChart. The cursor was on this control and, since a help topic is available for this control, dynamic help provides quick access to it. As the cursor shifts to a different control, feature, or word, Dynamic Help dynamically changes.
140 Agilent T&M Toolkit
Product Support 12
Agilent T&M Toolkit
Figure 55 Visual Studio .NET Dynamic Help
141
12 Product Support
F1 Help
Agilent T&M Toolkit supports F1 help. This means you can press F1 and, if a help topic exists for the control, word, phrase, etc., the help topic is displayed. See Figure56 .
Figure 56 With XYGraph Active, F1 is Pressed
142 Agilent T&M Toolkit
Product Support 12
Agilent Developer Network
The Agilent Developer Network (ADN) gives you access to the connectivity resources you need, in one place, easily accessible, available 24 hours a day, 7 days a week. You'll find drivers, tools, sample code, documentation, and expertise, as well as a
Web-based community of T&M professionals to help you get your job done. You save time, maintain your productivity, and get results.
You can register for a FREE membership in ADN at http://www.agilent.com/find/adn.
Agilent T&M Toolkit 143
12 Product Support
Support
Support Included with All T&M Toolkit Products
Installation
Agilent ensures the software is correctly installed.
Activation - Product Key
Agilent ensures the software is correctly activated.
Start Up
Agilent ensures that, once the software is installed and activated, it works correctly subject to the terms of the
Warranty enclosed with your software.
Where You can Find Support
If you do not know where the nearest support center is, use the
World Wide Web to go to http://www.agilent.co/find/assist.
144 Agilent T&M Toolkit
Index
A
Accessing low-level instrument commands , 69 adapting legacy VEE code for .NET
, 134 adding a new trace , 103 a waveform to your program , 114 markers to traces , 104
ADN , 143
Agilent Developer Network , 143 arrays
X,Y pairs , 95
ASRL connect string , 73
B
Bartlett window , 84
Bessel function
I0 , 86
J0 , 86
J1 , 86 modified version of the first kind , 86 of the first kind , 86 of the second kind , 86
Y0 , 86
Y1 , 86
Blackman window , 84
C changing or adding instruments to a configuration , 32 changing the default configuration file , 31 collection editor markers , 104 traces , 104 complex converting to other data types , 82 imaginary comparer , 82 magnitude comparer , 83 methods , 80 not native to .NET
, 80 phase comparer , 83 properties , 80
Complex graph , 99 context menu , 108, 110 controlling instruments , 42 steps to , 43 creating a DLL using the New Project wizard , 17 creating a new instrument session , 38 creating a new project , 16 creating new projects using the wizard , 16 creating traces , 103 creating waveforms , 114
D default trace , 102
PlotDefaultTrace method , 102 diagnosing instrument connection problems , 42 digital signal processing filters , 84 various windows , 84
DirectIO buffer management , 68 converting instrument formats to data types , 66 defined , 66 instrument formats , 66 instrument session management
API methods, 68
API properties, 68 instrument sessions , 68
DirectIO session , 34
DirectIO.GPIB
properties , 71
DirectIO.Gpib
remote operation , 71
DirectIO.Serial
, 69 connect string , 73 data flow control , 73 methods, 74 properties, 73
DirectIO.Tcpip
, 69 properties , 75, 76 discovering instruments , 24 discrete mathematics , 87 beta , 87 binomial , 87 combination , 87 factorial , 87 gamma , 87 permutation , 87 displaying I/O traces , 49 drag and drop an instrument session , 38 dragging and dropping an instrument , 38 driver session , 34
Driver Wrapper Wizard checking for standards compliance , 64 reviewing any parse or compile errors , 64 steps to create a wrapper , 61 supported driver standards , 60 supported drivers , 60 troubleshooting , 63
DSP filters , 84 dynamic help , 140 graphic , 141
E editing markers , 104 engineering formatter format specifiers , 122 general format , 121 significant digits , 121 engineering math
API methods , 89 examples accessing the DirectIO.Gpib
, 82 engineering number formatting , 123 function waveform generator properties , 116 using the high resolution timer , 119 exponential regression , 91 exponents , 121
F
F1 help , 142
Fast Fourier Transform , 84
FFT and IFFT performance , 84 formatting numbers , 121
Fourier , 84
FREE ADN , 143
Function Waveform Generator methods , 118 properties , 117
Agilent T&M Toolkit 145
G generating code , 36 generating waveforms , 114
GPIB connection string , 71 remote operation , 71 graph appearance , 106 a marker legend, 106 a trace legend, 106 axes, 107 grid, 107 margins, 106 plot area, 106 ticks, 107 title, 106 keyboard shortcuts , 108 min/max values , 107 mouse shortcuts , 109 smoothing mode , 106
H
Hamming window , 84
Hanning window , 84 hardware requirements , 13 help dynamic , 140
F1 , 142 online , 138 removing , 12 technical support , 144 high resolution counters , 119
I
I/O layers choosing what to monitor , 54
I/O streams
SICL , 50
VISA , 50
VISA-COM , 50
I0 in the Bessel function , 86 imaginary comparer , 82 installing how to , 11
Agilent T&M Toolkit
Index instrument configuration changing or adding to , 32 deleting from , 33 instrument control , 42
Instrument Explorer and RS-232 , 27 defined , 22 generating code , 36 icon key , 39 instrument discovery , 24 key tasks of , 22 setting instrument properties , 30 starting , 22 with Interactive IO , 28
Instrument IO history window , 45 specifying the resource name , 43 using to control instruments , 43
Instrument Session Wizard , 34 abbreviated version , 38 generating code , 36 instrument sessions adding or creating , 34 managing , 68
Interactive IO main display , 44 what it does , 42
Inverse Fast Fourier Transform , 84
IO Monitor choosing an I/O layer to monitor , 54 defining the main display , 51 displaying results , 49 events , 49
I/O streams monitored , 50 improving I/O performance , 56 trace points , 56 using , 50 viewing data details , 53
IVI-C using in .NET
, 60
IVIplug&play using in .NET
, 60
J
J0 in the Bessel function , 86
J1 in the Bessel function , 86
K keyboard shortcuts enabling , 107 graphs , 108
L linear regression , 91 logarithmic regression , 91
M magnitude comparer , 83
Magnitude Spectrum graph , 100 managing instrument configuratoins , 31 markers introduction to , 97 linking , 99 mean , 88 median , 88 mode , 88 monitoring the call stack , 48 mouse shortcuts enabling , 107
N
New Project Wizard how to use , 16, 17 when one compiler is installed , 17 number formats , 121 number formatting specifiers , 122
O online help
T&M Toolkit , 139 online help, about , 138
P panning , 108 keyboard shortcuts , 108 mouse shortcuts , 109 phase comparer , 83
Phase Spectrum graph , 101
PlotAll method , 105
PlotDefaulttTrace method , 102
146
power curve regression , 91 probability functions , 87
Root Mean Squared , 87 standard deviation , 87 variance , 88 progress updater , 120 how to use , 120 properties , 120 project types defined , 18
R
Rectangular window , 84 regression exponential , 91 linear , 91 logarithmic , 91 power curve , 91
RMS - See Probability, Root Mean
Squared , 87
S
SetData method , 105 setting and plotting data , 105 setting instrument properties , 30 smoothing mode , 106 software requirements , 14 statistics , 87
Strip Chart , 98 setting the timing interval , 98 support , 144 system requirements hardware requirements , 11 software requirements , 14
T
T&M Toolkit defined , 8 installing , 11 reasons to use , 8 uninstalling , 11 what it contains , 8 technical support all products , 144
Agilent T&M Toolkit timing delay , 119 limits of delay , 119 precision of , 119 progress updater , 120 traces collection editor , 104 creating , 103 default trace , 102 full description , 101 introduction to , 96
PlotDefaultTrace method , 102 representations , 102 setting properties , 104 tracing and debugging I/O , 48 transferrable learning , 66 troubleshooting driver wrappers , 63
U uninstalling , 11 using existing drivers , 60
V
VEE adapting legacy code for .NET
, 134 communication basics , 131 configuring the callable VEE server , 132 verifying your communication configuration , 134
VEE Wrapper Wizard avoiding naming problems , 134 how to use , 128
I/O configuration concerns for
.NET
, 133 what can be read by .NET
, 134
W
Waveform graph , 96 waveforms creating programatically , 114 windowing functions data set comparison , 85 convolve, 85 cross correlate, 85 types
Bartlett, 84
Blackman, 84
Hamming, 84
Hanning, 84
Rectangular, 84 window size, 84 wizards
Instrument Session , 34 the Driver Wrapper Wizard , 60 the New Project Wizard , 16 the VEE Wrapper Wizard , 128
X
X,Y data and arrays , 95
XY graph , 95
Y
Y graph , 97
Y0 in the Bessel function , 86
Y1 in the Bessel function , 86
Z zooming , 108 keyboard shortcuts , 108 mouse shortcuts , 109
Index
147
Index
148 Agilent T&M Toolkit
advertisement
Related manuals
advertisement