NI-488.2M User Manual for Windows 95 and Windows NT

NI-488.2M User Manual for Windows 95 and Windows NT
NI-488.2M™ User
Manual for Windows 95
and Windows NT
December 1996 Edition
Part Number 321037C-01
© Copyright 1995, 1996 National Instruments Corporation.
All Rights Reserved.
Internet Support
[email protected]
E-mail: [email protected]
FTP Site: ftp.natinst.com
Web Address: http://www.natinst.com
Bulletin Board Support
BBS United States: (512) 794-5422
BBS United Kingdom: 01635 551422
BBS France: 01 48 65 15 59
Fax-on-Demand Support
(512) 418-1111
Telephone Support (U.S.)
Tel: (512) 795-8248
Fax: (512) 794-5678
International Offices
Australia 02 9874 4100, Austria 0662 45 79 90 0, Belgium 02 757 00 20,
Canada (Ontario) 905 785 0085, Canada (Québec) 514 694 8521, Denmark 45 76 26 00,
Finland 09 527 2321, France 01 48 14 24 24, Germany 089 741 31 30,
Hong Kong 2645 3186, Israel 03 5734815, Italy 02 413091, Japan 03 5472 2970,
Korea 02 596 7456, Mexico 5 520 2635, Netherlands 0348 433466,
Norway 32 84 84 00, Singapore 2265886, Spain 91 640 0085, Sweden 08 730 49 70,
Switzerland 056 200 51 51, Taiwan 02 377 1200, U.K. 01635 523545
National Instruments Corporate Headquarters
6504 Bridge Point Parkway
Austin, TX 78730-5039
Tel: (512) 794-0100
Important Information
Warranty
The media on which you receive National Instruments software are warranted not to fail to execute programming
instructions, due to defects in materials and workmanship, for a period of 90 days from date of shipment, as evidenced by
receipts or other documentation. National Instruments will, at its option, repair or replace software media that do not
execute programming instructions if National Instruments receives notice of such defects during the warranty period.
National Instruments does not warrant that the operation of the software shall be uninterrupted or error free.
A Return Material Authorization (RMA) number must be obtained from the factory and clearly marked on the outside of
the package before any equipment will be accepted for warranty work. National Instruments will pay the shipping costs of
returning to the owner parts which are covered by warranty.
National Instruments believes that the information in this manual is accurate. The document has been carefully reviewed
for technical accuracy. In the event that technical or typographical errors exist, National Instruments reserves the right to
make changes to subsequent editions of this document without prior notice to holders of this edition. The reader should
consult National Instruments if errors are suspected. In no event shall National Instruments be liable for any damages
arising out of or related to this document or the information contained in it.
EXCEPT AS SPECIFIED HEREIN, NATIONAL INSTRUMENTS MAKES NO WARRANTIES, EXPRESS OR
IMPLIED, AND SPECIFICALLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. CUSTOMER’S RIGHT TO RECOVER DAMAGES CAUSED BY FAULT OR
NEGLIGENCE ON THE PART OF NATIONAL INSTRUMENTS SHALL BE LIMITED TO THE AMOUNT
THERETOFORE PAID BY THE CUSTOMER. NATIONAL INSTRUMENTS WILL NOT BE LIABLE FOR
DAMAGES RESULTING FROM LOSS OF DATA, PROFITS, USE OF PRODUCTS, OR INCIDENTAL OR
CONSEQUENTIAL DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. This limitation of the
liability of National Instruments will apply regardless of the form of action, whether in contract or tort, including
negligence. Any action against National Instruments must be brought within one year after the cause of action accrues.
National Instruments shall not be liable for any delay in performance due to causes beyond its reasonable control. The
warranty provided herein does not cover damages, defects, malfunctions, or service failures caused by owner’s failure to
follow the National Instruments installation, operation, or maintenance instructions; owner’s modification of the product;
owner’s abuse, misuse, or negligent acts; and power failure or surges, fire, flood, accident, actions of third parties, or other
events outside reasonable control.
Copyright
Under the copyright laws, this publication may not be reproduced or transmitted in any form, electronic or mechanical,
including photocopying, recording, storing in an information retrieval system, or translating, in whole or in part, without
the prior written consent of National Instruments Corporation.
Trademarks
NI-488®, NI-488.2™, NI-488.2M™, and TNT4882C™ are trademarks of National Instruments Corporation.
Product and company names listed are trademarks or trade names of their respective companies.
WARNING REGARDING MEDICAL AND CLINICAL USE OF NATIONAL INSTRUMENTS PRODUCTS
National Instruments products are not designed with components and testing intended to ensure a level of reliability
suitable for use in treatment and diagnosis of humans. Applications of National Instruments products involving medical or
clinical treatment can create a potential for accidental injury caused by product failure, or by errors on the part of the user
or application designer. Any use or application of National Instruments products for or involving medical or clinical
treatment must be performed by properly trained and qualified medical personnel, and all traditional medical safeguards,
equipment, and procedures that are appropriate in the particular situation to prevent serious injury or death should always
continue to be used when National Instruments products are being used. National Instruments products are NOT intended
to be a substitute for any form of established process, procedure, or equipment used to monitor or safeguard human health
and safety in medical or clinical treatment.
Table
of
Contents
About This Manual
How to Use the Manual Set......................................................................................... xiii
Organization of This Manual ...................................................................................... xiv
Conventions Used in This Manual .............................................................................. xv
Related Documentation ............................................................................................... xvi
Customer Communication........................................................................................... xvi
Chapter 1
Introduction
GPIB Overview ........................................................................................................... 1-1
Talkers, Listeners, and Controllers ............................................................... 1-1
Controller-In-Charge and System Controller................................................ 1-1
GPIB Addressing .......................................................................................... 1-2
Sending Messages across the GPIB .............................................................. 1-2
Data Lines....................................................................................... 1-2
Handshake Lines............................................................................. 1-3
Interface Management Lines........................................................... 1-3
Setting up and Configuring Your System ..................................................... 1-4
Controlling More Than One Board................................................. 1-5
Configuration Requirements........................................................... 1-5
The NI-488.2M Software for Windows 95 ................................................................. 1-6
NI-488.2M Software for Windows 95 Components ..................................... 1-6
NI-488.2M Driver and Driver Utilities........................................... 1-6
16-Bit Windows Support Files ....................................................... 1-7
DOS Support Files.......................................................................... 1-7
Microsoft C/C++ Language Interface Files .................................... 1-7
Borland C/C++ Language Interface Files ....................................... 1-8
Microsoft Visual Basic Language Interface Files........................... 1-8
Sample Application Files................................................................ 1-8
How the NI-488.2M Software Works with Windows 95 ............................. 1-8
© National Instruments Corporation
v
NI-488.2M User Manual for Windows 95/Windows NT
Table of Contents
Uninstalling the GPIB Hardware from Windows 95.....................................1-9
Uninstalling the GPIB Software for Windows 95 .........................................1-11
The NI-488.2M Software for Windows NT ................................................................1-13
NI-488.2M Software for Windows NT Components ....................................1-13
NI-488.2M Driver and Driver Utilities ...........................................1-13
DOS and 16-Bit Windows Support Files ........................................1-13
Microsoft C/C++ Language Interface Files.....................................1-14
Borland C/C++ Language Interface Files .......................................1-14
Microsoft Visual Basic Language Interface Files ...........................1-14
Sample Application Files ................................................................1-14
How the NI-488.2M Software Works with Windows NT.............................1-15
Unloading and Reloading the NI-488.2M Driver for Windows NT .............1-16
Chapter 2
Application Examples
Example 1:
Example 2:
Example 3:
Example 4:
Example 5:
Example 6:
Example 7:
Example 8:
Example 9:
Basic Communication..............................................................................2-2
Clearing and Triggering Devices.............................................................2-4
Asynchronous I/O....................................................................................2-6
End-of-String Mode.................................................................................2-8
Service Requests......................................................................................2-10
Basic Communication with IEEE 488.2-Compliant Devices ..................2-14
Serial Polls Using NI-488.2 Routines......................................................2-16
Parallel Polls ............................................................................................2-18
Non-Controller Example .........................................................................2-20
Chapter 3
Developing Your Application
Choosing Your Programming Methodology ...............................................................3-1
Choosing a Method to Access the NI-488.2M Driver...................................3-1
NI-488.2M Language Interfaces .....................................................3-1
Direct Entry Acess ..........................................................................3-1
Choosing between NI-488 Functions and NI-488.2 Routines.......................3-2
Using NI-488 Functions: One Device for Each Board...................3-2
NI-488 Device Functions..................................................3-3
NI-488 Board Functions ...................................................3-3
Using NI-488.2 Routines: Multiple Boards and/or
Multiple Devices..........................................................................3-3
Checking Status with Global Variables .......................................................................3-4
Status Word – ibsta........................................................................................3-4
Error Variable – iberr ....................................................................................3-5
Count Variables – ibcnt and ibcntl ................................................................3-6
NI-488.2M User Manual for Windows 95/Windows NT
vi
© National Instruments Corporation
Table of Contents
Using Win32 Interactive Control to Communicate with Devices ............................... 3-6
Programming Model for NI-488 Applications ............................................................ 3-7
Items to Include............................................................................................. 3-7
NI-488 Program Shell ................................................................................... 3-8
NI-488 General Program Steps and Examples.............................................. 3-9
Step 1. Open a Device ................................................................... 3-9
Step 2. Clear the Device ................................................................ 3-9
Step 3. Communicate with the Device........................................... 3-9
Step 4. Place the Device Offline Before Exiting Your
Application.................................................................................. 3-10
Programming Model for NI-488.2 Applications ......................................................... 3-11
Items to Include............................................................................................. 3-11
NI-488.2 Program Shell ................................................................................ 3-12
NI-488.2 General Program Steps and Examples........................................... 3-13
Step 1. Initialization....................................................................... 3-13
Step 2. Determine the GPIB Address of Your Device................... 3-13
Step 3. Initialize the Device ........................................................... 3-14
Step 4. Communicate with the Device........................................... 3-14
Step 5. Place the Device Offline Before Exiting Your
Application.................................................................................. 3-15
Language-Specific Programming Instructions ............................................................ 3-15
Microsoft Visual C/C++ (Version 2.0 or Higher)......................................... 3-15
Borland C/C++ (Version 4.0 or Higher) ....................................................... 3-15
Visual Basic (Version 4.0 or Higher)............................................................ 3-16
Direct Entry with C ....................................................................................... 3-16
gpib-32.dll Exports ......................................................................... 3-16
Directly Accessing the gpib-32.dll Exports .................................... 3-17
Windows 95: Running Existing GPIB Applications .................................................. 3-19
Running Existing Win16 GPIB Applications ............................................... 3-19
Running Existing DOS GPIB Applications .................................................. 3-19
Windows NT: Running Existing GPIB Applications................................................. 3-20
Chapter 4
Debugging Your Application
Debugging with GPIB Spy.......................................................................................... 4-1
Debugging with the Global Status Variables .............................................................. 4-1
Debugging with Win32 Interactive Control ................................................................ 4-1
GPIB Error Codes ....................................................................................................... 4-2
Configuration Errors ................................................................................................... 4-3
Timing Errors .............................................................................................................. 4-3
© National Instruments Corporation
vii
NI-488.2M User Manual for Windows 95/Windows NT
Table of Contents
Communication Errors.................................................................................................4-4
Repeat Addressing.........................................................................................4-4
Termination Method ......................................................................................4-4
Other Errors .................................................................................................................4-4
Chapter 5
GPIB Spy Utility
Overview......................................................................................................................5-1
Starting GPIB Spy .......................................................................................................5-1
Starting GPIB Spy Under Windows 95.........................................................5-1
Starting GPIB Spy Under Windows NT .......................................................5-1
Using the Online GPIB Spy Help ................................................................................5-2
Locating Errors with GPIB Spy...................................................................................5-2
Viewing Properties for Recorded Calls .......................................................................5-2
Exiting GPIB Spy ........................................................................................................5-4
Performance Considerations ........................................................................................5-4
Chapter 6
Win32 Interactive Control Utility
Overview......................................................................................................................6-1
Getting Started with Win32 Interactive Control ..........................................................6-1
Win32 Interactive Control Syntax ...............................................................................6-4
Number Syntax..............................................................................................6-4
String Syntax .................................................................................................6-4
Address Syntax..............................................................................................6-5
Win32 Interactive Control Commands ........................................................................6-5
Status Word .................................................................................................................6-9
Error Information.........................................................................................................6-10
Count Information .......................................................................................................6-10
Chapter 7
GPIB Programming Techniques
Termination of Data Transfers.....................................................................................7-1
High-Speed Data Transfers (HS488)...........................................................................7-2
Enabling HS488 ............................................................................................7-2
System Configuration Effects on HS488.......................................................7-3
Waiting for GPIB Conditions ......................................................................................7-4
Asynchronous Event Notification in Win32 GPIB Applications ................................7-4
Calling the ibnotify Function.........................................................................7-4
ibnotify Programming Example ....................................................................7-6
NI-488.2M User Manual for Windows 95/Windows NT
viii
© National Instruments Corporation
Table of Contents
Writing Multithreaded Win32 GPIB Applications...................................................... 7-9
Device-Level Calls and Bus Management .................................................................. 7-11
Talker/Listener Applications ....................................................................................... 7-11
Serial Polling ............................................................................................................... 7-12
Service Requests from IEEE 488 Devices .................................................... 7-12
Service Requests from IEEE 488.2 Devices ................................................. 7-12
Automatic Serial Polling ............................................................................... 7-13
Stuck SRQ State ............................................................................. 7-13
Autopolling and Interrupts.............................................................. 7-14
SRQ and Serial Polling with NI-488 Device Functions................................ 7-14
SRQ and Serial Polling with NI-488.2 Routines .......................................... 7-15
Example 1: Using FindRQS .......................................................... 7-16
Example 2: Using AllSpoll ............................................................ 7-16
Parallel Polling ............................................................................................................ 7-17
Implementing a Parallel Poll ......................................................................... 7-17
Parallel Polling with NI-488 Functions .......................................... 7-17
Parallel Polling with NI-488.2 Routines......................................... 7-18
Chapter 8
GPIB Configuration Utility
Overview ..................................................................................................................... 8-1
Windows 95: Configuring the NI-488.2M Software.................................................. 8-2
Windows NT: Configuring the NI-488.2M Software ................................................ 8-4
Appendix A
Status Word Conditions
ERR (dev, brd) ............................................................................................................ A-2
TIMO (dev, brd).......................................................................................................... A-2
END (dev, brd)............................................................................................................ A-2
SRQI (brd)................................................................................................................... A-3
RQS (dev).................................................................................................................... A-3
CMPL (dev, brd) ......................................................................................................... A-3
LOK (brd).................................................................................................................... A-3
REM (brd) ................................................................................................................... A-4
CIC (brd) ..................................................................................................................... A-4
ATN (brd).................................................................................................................... A-4
TACS (brd).................................................................................................................. A-4
LACS (brd).................................................................................................................. A-5
DTAS (brd) ................................................................................................................. A-5
DCAS (brd) ................................................................................................................. A-5
© National Instruments Corporation
ix
NI-488.2M User Manual for Windows 95/Windows NT
Table of Contents
Appendix B
Error Codes and Solutions
EDVR (0).....................................................................................................................B-2
ECIC (1).......................................................................................................................B-2
ENOL (2) .....................................................................................................................B-3
EADR (3).....................................................................................................................B-4
EARG (4).....................................................................................................................B-4
ESAC (5) .....................................................................................................................B-5
EABO (6).....................................................................................................................B-5
ENEB (7) .....................................................................................................................B-5
EDMA (8)....................................................................................................................B-6
EOIP (10).....................................................................................................................B-6
ECAP (11) ...................................................................................................................B-7
EFSO (12)....................................................................................................................B-7
EBUS (14) ...................................................................................................................B-7
ESTB (15)....................................................................................................................B-8
ESRQ (16) ...................................................................................................................B-8
ETAB (20) ...................................................................................................................B-9
Appendix C
Windows 95: Troubleshooting and Common Questions
Troubleshooting EDVR Error Conditions ...................................................................C-1
EDVR Error with ibcntl Set to 0xE028002C ................................................C-1
EDVR Error with ibcntl Set to 0xE0140025 .................................................C-1
EDVR Error with ibcntl Set to 0xE0140035 .................................................C-1
EDVR Error with ibcntl Set to 0xE0320029 or 0xE1050029 .......................C-2
EDVR Error with ibcntl Set to 0xE0140004 .................................................C-2
EDVR Error with ibcntl Set to 0xE1030043 .................................................C-2
Troubleshooting Windows 95 Device Manager Status Codes ....................................C-2
Common Questions......................................................................................................C-3
Appendix D
Windows NT: Troubleshooting and Common Questions
Using Windows NT Diagnostic Tools.........................................................................D-1
Examining NT Devices to Verify the NI-488.2M Installation ......................D-1
Examining the NT System Log Using the Event Viewer..............................D-2
Common Questions......................................................................................................D-2
NI-488.2M User Manual for Windows 95/Windows NT
x
© National Instruments Corporation
Table of Contents
Appendix E
Customer Communication
Glossary
Index
Figures
Figure 1-1.
Figure 1-2.
Figure 1-3.
Figure 1-4.
Figure 1-5.
Figure 1-6.
Figure 1-7.
Figure 1-8.
GPIB Address Bits ............................................................................. 1-2
Linear and Star System Configuration ............................................... 1-4
Example of Multiboard System Setup................................................ 1-5
How the NI-488.2M Software Works with Windows 95................... 1-9
Selecting an Interface to Remove from Windows 95......................... 1-10
Add/Remove Programs Properties Dialog Box in Windows 95 ........ 1-11
Uninstallation Results in Windows 95 ............................................... 1-12
How the NI-488.2M Software Works with Windows NT ................. 1-16
Figure 2-1.
Figure 2-2.
Figure 2-3.
Figure 2-4.
Figure 2-5.
Figure 2-6.
Figure 2-7.
Figure 2-8.
Figure 2-9.
Program Flowchart for Example 1 ..................................................... 2-3
Program Flowchart for Example 2 ..................................................... 2-5
Program Flowchart for Example 3 ..................................................... 2-7
Program Flowchart for Example 4 ..................................................... 2-9
Program Flowchart for Example 5 ..................................................... 2-12
Program Flowchart for Example 6 ..................................................... 2-15
Program Flowchart for Example 7 ..................................................... 2-17
Program Flowchart for Example 8 ..................................................... 2-20
Program Flowchart for Example 9 ..................................................... 2-22
Figure 3-1.
Figure 3-2.
General Program Shell Using NI-488 Device Functions ................... 3-8
General Program Shell Using NI-488.2 Routines .............................. 3-13
Figure 5-1.
Figure 5-2.
Figure 5-3.
GPIB Spy Main Window ................................................................... 5-2
GPIB Spy Input Tab for Device-Level ibwrt.................................. 5-3
GPIB Spy Output Tab for Device-Level ibrd ................................. 5-3
Figure 8-1.
Figure 8-2.
Figure 8-3.
NI-488.2M Settings Tab for the AT-GPIB/TNT (PnP)...................... 8-3
Device Templates Tab for the Logical Device Templates ................. 8-4
Main Dialog Box in the GPIB Configuration Utility for
Windows NT................................................................................... 8-5
© National Instruments Corporation
xi
NI-488.2M User Manual for Windows 95/Windows NT
Table of Contents
Tables
Table 1-1.
Table 1-2.
GPIB Handshake Lines.......................................................................1-3
GPIB Interface Management Lines ....................................................1-3
Table 3-1.
Status Word Layout ............................................................................3-5
Table 4-1.
GPIB Error Codes...............................................................................4-3
Table 6-1.
Syntax for Device-Level NI-488 Functions in Win32
Interactive Control ..........................................................................6-6
Syntax for Board-Level NI-488 Functions in Win32
Interactive Control ..........................................................................6-7
Syntax for NI-488.2 Routines in Win32 Interactive Control..............6-8
Auxiliary Functions in Win32 Interactive Control .............................6-9
Table 6-2.
Table 6-3.
Table 6-4.
NI-488.2M User Manual for Windows 95/Windows NT
xii
© National Instruments Corporation
About
This
Manual
This manual describes the features and functions of the NI-488.2M
software for both Windows 95 and Windows NT. The NI-488.2M
software for Windows 95 is meant to be used with the Microsoft
Windows 95 operating system. The NI-488.2M software for
Windows NT is meant to be used with the Microsoft Windows NT
(version 3.5.1 and later) operating system. This manual assumes that you
are already familiar with the appropriate Microsoft operating system.
How to Use the Manual Set
Getting Started
Manual
Installation and
Configuration
Novice
Users
NI-488.2M User
Manual for
Windows 95
and Windows NT
Application
Development
and Examples
Experienced
Users
NI-488.2M Function
Reference Manual
for Win32
Function
and Routine
Descriptions
© National Instruments Corporation
xiii
NI-488.2M User Manual for Windows 95/Windows NT
About This Manual
Use the getting started manual to install and configure your GPIB
hardware and software for Windows 95 or Windows NT.
Use this NI-488.2M User Manual for Windows 95 and Windows NT to
learn the basics of GPIB and how to develop an application program. The
user manual also contains debugging information and detailed examples.
Use the NI-488.2M Function Reference Manual for Win32 for specific
NI-488 function and NI-488.2 routine information, such as format,
parameters, and possible errors.
Organization of This Manual
This manual is organized as follows:
•
Chapter 1, Introduction, gives an overview of GPIB and the
NI-488.2M software.
•
Chapter 2, Application Examples, contains nine sample applications
designed to illustrate specific GPIB concepts and techniques that can
help you write your own applications.
•
Chapter 3, Developing Your Application, explains how to develop a
GPIB application using NI-488 functions and NI-488.2 routines.
•
Chapter 4, Debugging Your Application, describes several ways to
debug your application.
•
Chapter 5, GPIB Spy Utility, introduces you to GPIB Spy, the
application monitor you can use to monitor NI-488 and NI-488.2
calls.
•
Chapter 6, Win32 Interactive Control Utility, introduces you to
Win32 Interactive Control, the interactive control utility that you can
use to communicate with GPIB devices interactively.
•
Chapter 7, GPIB Programming Techniques, describes techniques for
using some NI-488 functions and NI-488.2 routines in your
application.
•
Chapter 8, GPIB Configuration Utility, contains a description of the
GPIB Configuration utility you can use to configure your NI-488.2M
software.
•
Appendix A, Status Word Conditions, gives a detailed description of
the conditions reported in the status word, ibsta.
•
Appendix B, Error Codes and Solutions, lists a description of each
error, some conditions under which it might occur, and possible
solutions.
NI-488.2M User Manual for Windows 95/Windows NT
xiv
© National Instruments Corporation
About This Manual
•
Appendix C, Windows 95: Troubleshooting and Common Questions,
describes how to troubleshoot problems and lists some common
questions for Windows 95 users.
•
Appendix D, Windows NT: Troubleshooting and Common
Questions, describes how to troubleshoot problems and lists some
common questions for Windows NT users.
•
Appendix E, Customer Communication, contains forms you can use
to request help from National Instruments or to comment on our
products and manuals.
•
The Glossary contains an alphabetical list and description of terms
used in this manual, including abbreviations, acronyms, metric
prefixes, mnemonics, and symbols.
•
The Index contains an alphabetical list of key terms and topics in this
manual, including the page where you can find each one.
Conventions Used in This Manual
The following conventions are used in this manual.
<>
Angle brackets enclose the name of a key on the keyboard—for example,
<Esc>.
-
A hyphen between two or more key names enclosed in angle brackets
denotes that you should simultaneously press the named keys—for
example, <Ctrl-Alt-Delete>.
»
The » symbol leads you through nested menu items and dialog box
options to a final action. The sequence File»Page Setup»Options»
Substitute Fonts directs you to pull down the File menu, select the
Page Setup item, select Options, and finally select the Substitute Fonts
options from the last dialog box.
bold
Bold text denotes the names of menus, menu items, parameters, dialog
boxes, dialog box buttons or options, icons, windows, Windows 95 tabs,
or LEDs.
bold italic
Bold italic text denotes a note, caution, or warning.
bold
monospace
Bold text in this font denotes the messages and responses that the
computer automatically prints to the screen. This font also emphasizes
lines of code that are different from the other examples.
© National Instruments Corporation
xv
NI-488.2M User Manual for Windows 95/Windows NT
About This Manual
italic
italic
monospace
Italic text denotes emphasis, a cross reference, or an introduction to a key
concept. This font also denotes text for which you supply the appropriate
word or value, as in Windows 3.x.
Italic text in this font denotes that you must supply the appropriate words
or values in the place of these items.
monospace
Text in this font denotes text or characters that you should literally enter
from the keyboard, sections of code, programming examples, and syntax
examples. This font is also used for the proper names of disk drives,
paths, directories, programs, subprograms, subroutines, device names,
functions, operations, variables, filenames and extensions, and for
statements and comments taken from programs.
IEEE 488 and
IEEE 488.2
IEEE 488 and IEEE 488.2 refer to the ANSI/IEEE Standard 488.1-1987
and the ANSI/IEEE Standard 488.2-1992, respectively, which define
the GPIB.
The Glossary lists abbreviations, acronyms, metric prefixes, mnemonics,
symbols, and terms.
Related Documentation
The following document contains information that you may find helpful
as you read this manual:
•
ANSI/IEEE Standard 488.1-1987, IEEE Standard Digital Interface
for Programmable Instrumentation
•
ANSI/IEEE Standard 488.2-1992, IEEE Standard Codes, Formats,
Protocols, and Common Commands
•
Microsoft Windows 95 Online Help
•
Microsoft Windows NT Online Help
•
Microsoft Win32 Software Development Kit for Microsoft Windows
Customer Communication
National Instruments wants to receive your comments on our products
and manuals. We are interested in the applications you develop with our
products, and we want to help if you have problems with them. To make
it easy for you to contact us, this manual contains comment and
configuration forms for you to complete. These forms are in Appendix E,
Customer Communication, at the end of this manual.
NI-488.2M User Manual for Windows 95/Windows NT
xvi
© National Instruments Corporation
Chapter
1
Introduction
This chapter gives an overview of GPIB and the NI-488.2M software.
GPIB Overview
The ANSI/IEEE Standard 488.1-1987, also known as GPIB (General
Purpose Interface Bus), describes a standard interface for communication
between instruments and controllers from various vendors. It contains
information about electrical, mechanical, and functional specifications.
The GPIB is a digital, 8-bit parallel communications interface with data
transfer rates of 1 Mbytes/s and above, using a 3-wire handshake. The
bus supports one System Controller, usually a computer, and up to
14 additional instruments. The ANSI/IEEE Standard 488.2-1992 extends
IEEE 488.1 by defining a bus communication protocol, a common set of
data codes and formats, and a generic set of common device commands.
Talkers, Listeners, and Controllers
GPIB devices can be Talkers, Listeners, or Controllers. A Talker sends
out data messages. Listeners receive data messages. The Controller,
usually a computer, manages the flow of information on the bus. It
defines the communication links and sends GPIB commands to devices.
Some devices are capable of playing more than one role. A digital
voltmeter, for example, can be a Talker and a Listener. If your personal
computer has a National Instruments GPIB interface board and
NI-488.2M software installed, it can function as a Talker, Listener, and
Controller.
© National Instruments Corporation
1-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
Controller-In-Charge and System Controller
You can have multiple Controllers on the GPIB, but only one Controller
at a time can be the active Controller, or Controller-In-Charge (CIC). The
CIC can either be active or inactive (Standby) Controller. Control can
pass from the current CIC to an idle Controller, but only the System
Controller, usually a GPIB interface board, can make itself the CIC.
GPIB Addressing
All GPIB devices and boards must be assigned a unique GPIB address. A
GPIB address is made up of two parts: a primary address and an optional
secondary address.
The primary address is a number in the range 0 to 30. The GPIB
Controller uses this address to form a talk or listen address that is sent
over the GPIB when communicating with a device.
A talk address is formed by setting bit 6, the TA (Talk Active) bit of the
GPIB address. A listen address is formed by setting bit 5, the LA (Listen
Active) bit of the GPIB address. For example, if a device is at address 1,
the Controller sends hex 41 (address 1 with bit 6 set) to make the device
a Talker. Because the Controller is usually at primary address 0, it sends
hex 20 (address 0 with bit 5 set) to make itself a Listener. Figure 1-1
shows the configuration of the GPIB address bits.
Bit
Position
Meaning
7
6
5
4
3
2
1
0
0
TA
LA
GPIB Primary Address (range 0-30)
Figure 1-1. GPIB Address Bits
With some devices, you can use secondary addressing. A secondary
address is a number in the range hex 60 to hex 7E. When secondary
addressing is in use, the Controller sends the primary talk or listen
address of the device followed by the secondary address of the device.
Sending Messages across the GPIB
Devices on the bus communicate by sending messages. Signals and lines
transfer these messages across the GPIB interface, which consists of
16 signal lines and eight ground return (shield drain) lines. The 16 signal
lines are discussed in the following sections.
NI-488.2M User Manual for Windows 95/Windows NT
1-2
© National Instruments Corporation
Chapter 1
Introduction
Data Lines
Eight data lines, DIO1 through DIO8, carry both data and command
messages.
Handshake Lines
Three hardware handshake lines asynchronously control the transfer of
message bytes between devices. This process is a three-wire interlocked
handshake, and it guarantees that devices send and receive message bytes
on the data lines without transmission error. Table 1-1 summarizes the
GPIB handshake lines.
Table 1-1. GPIB Handshake Lines
Line
Description
NRFD
(not ready for data)
Listening device is ready/not ready to receive a
message byte. Also used by the Talker to
signal high-speed GPIB transfers.
NDAC
(not data accepted)
Listening device has/has not accepted a
message byte.
DAV
(data valid)
Talking device indicates signals on data lines
are stable (valid) data.
© National Instruments Corporation
1-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
Interface Management Lines
Five GPIB hardware lines manage the flow of information across the bus.
Table 1-2 summarizes the GPIB interface management lines.
Table 1-2. GPIB Interface Management Lines
Line
Description
ATN
(attention)
Controller drives ATN true when it sends
commands and false when it sends data messages.
IFC
(interface clear)
System Controller drives the IFC line to initialize
the bus and make itself CIC.
REN
(remote enable)
System Controller drives the REN line to place
devices in remote or local program mode.
SRQ
Any device can drive the SRQ line to
(service request) asynchronously request service from the
Controller.
EOI
(end or identify)
Talker uses the EOI line to mark the end of a data
message. Controller uses the EOI line when it
conducts a parallel poll.
Setting up and Configuring Your System
Devices are usually connected with a cable assembly consisting of a
shielded 24-conductor cable with both a plug and receptacle connector at
each end. With this design, you can link devices in a linear configuration,
a star configuration, or a combination of the two. Figure 1-2 shows the
linear and star configurations.
NI-488.2M User Manual for Windows 95/Windows NT
1-4
© National Instruments Corporation
Chapter 1
Introduction
Device A
Device A
Device D
Device B
Device C
Device B
Device C
a. Linear Configuration
b. Star Configuration
Figure 1-2. Linear and Star System Configuration
Controlling More Than One Board
Figure 1-3 shows an example of a multiboard system configuration.
gpib0 is the access board for the voltmeter, and gpib1 is the access
board for the plotter and printer. The control functions of the devices
automatically access their respective boards.
© National Instruments Corporation
1-5
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
One
GPIB
Digital
Voltometer
gpib0
Plotter
Another
GPIB
gpib1
Printer
Figure 1-3. Example of Multiboard System Setup
Configuration Requirements
To achieve the high data transfer rate that the GPIB was designed for,
you must limit the physical distance between devices and the number of
devices on the bus. The following restrictions are typical:
•
A maximum separation of four meters between any two devices and
an average separation of two meters over the entire bus.
•
A maximum total cable length of 20 m.
•
A maximum of 15 devices connected to each bus, with at least
two-thirds powered on.
For high-speed operation, the following restrictions apply:
•
All devices in the system must be powered on.
•
Cable lengths as short as possible up to a maximum of 15 m of cable
for each system.
•
With at least one equivalent device load per meter of cable.
If you want to exceed these limitations, you can use bus extenders to
increase the cable length or expander to increase the number of device
loads. Extenders and expanders are available from National Instruments.
NI-488.2M User Manual for Windows 95/Windows NT
1-6
© National Instruments Corporation
Chapter 1
Introduction
The following sections describe the NI-488.2M software, which controls
the flow of communication on the GPIB.
The NI-488.2M Software for Windows 95
NI-488.2M Software for Windows 95 Components
The following section highlights important components of the
NI-488.2M software for Windows 95 and describes the function of each
component.
NI-488.2M Driver and Driver Utilities
The distribution disk contains the following driver and utility files:
•
A documentation file, readme.txt, that contains important
information about the NI-488.2M software and a description of any
new features. Before you use the software, read this file for the most
recent information.
•
Native, 32-bit NI-488.2M driver components: A collection of
dynamically loadable, Plug and Play aware, and multitasking aware
virtual device drivers and dynamic link libraries. They are installed
into the Windows System directory.
•
A Win32 dynamic link library, gpib-32.dll, that acts as the
interface between all Windows 95 GPIB applications and the
NI-488.2M driver components.
•
Win32 Interactive Control is a utility that you use to communicate
with the GPIB devices interactively using NI-488.2 functions and
routines. It helps you to learn the NI-488.2 routines and to program
your instrument or other GPIB devices.
•
GPIB Spy is the GPIB application monitor program. It is a
debugging tool that you can use to monitor the NI-488.2 calls your
GPIB applications make.
•
The GPIB Configuration utility is integrated into the Windows 95
Device Manager. You use this utility to modify the configuration
parameters of the NI-488.2M software.
•
Diagnostic is a utility that you use to verify that the GPIB hardware
and software have been installed properly.
© National Instruments Corporation
1-7
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
16-Bit Windows Support Files
•
A 16-bit Windows dynamic link library, gpib.dll, used when you
run an existing NI-488.2 application for Windows in the
Windows 95 environment. This file replaces the GPIB DLL that you
used in the Windows 3 environment for Win16 applications.
•
A 32-bit Windows dynamic link library, gpib32ft.dll, that helps
gpib.dll thunk 16-bit GPIB calls to 32-bit GPIB calls that address
the standard 32-bit dynamic link library, gpib-32.dll.
DOS Support Files
•
A Virtual Device Driver (VxD), gpibdosk.vxd, that serves as the
DOS device driver, to trap NI-488 function calls and NI-488.2
routine calls made by DOS applications and route them to the
standard 32-bit dynamic link library, gpib-32.dll. This file
replaces the real-mode DOS device driver that would be loaded from
your config.sys file if you were using the DOS environment for
DOS GPIB applications.
•
A Win32 executable, gpibdos.exe, that helps gpibdosk.vxd
thunk DOS GPIB calls to 32-bit calls that address the standard 32-bit
dynamic link library, gpib-32.dll.
Microsoft C/C++ Language Interface Files
•
A documentation file, readme.txt, that contains information about
the C language interface.
•
A 32-bit include file, decl-32.h, that contains NI-488 function and
NI-488.2 routine prototypes and various predefined constants.
•
A 32-bit C language interface file, gpib-32.obj, that an application
links with in order to access the 32-bit DLL.
Borland C/C++ Language Interface Files
•
A documentation file, readme.txt, that contains information about
the C language interface.
•
A 32-bit include file, decl-32.h, that contains NI-488 function and
NI-488.2 routine prototypes and various predefined constants.
•
A 32-bit C language interface file, borlandc_gpib-32.obj, that
an application links with in order to access the 32-bit DLL.
NI-488.2M User Manual for Windows 95/Windows NT
1-8
© National Instruments Corporation
Chapter 1
Introduction
Microsoft Visual Basic Language Interface Files
•
A documentation file, readme.txt, that contains information about
the Visual Basic language interface.
•
A Visual Basic global module, niglobal.bas, that contains certain
predefined constant declarations.
•
A Visual Basic source file, vbib-32.bas, that contains NI-488.2
routine and NI-488 function prototypes.
Sample Application Files
The NI-488.2M software includes nine sample applications along with
source code for each language supported by the NI-488.2M software. For
a detailed description of the sample application files, refer to Chapter 2,
Application Examples.
How the NI-488.2M Software Works with Windows 95
The NI-488.2M software for Windows 95 includes a multi-layered
device driver that consists of DLL pieces that run in user mode and VxD
pieces that run in kernel mode. User applications access this device driver
from user mode through gpib-32.dll, a 32-bit Windows 95 dynamic
link library.
GPIB applications access the NI-488.2M software through
gpib-32.dll as follows:
•
A Win32 application can either link with the language interface or
directly access the functions exported by the DLL.
•
A Win16 application uses the 16-bit thunking DLL (gpib.dll) and
32-bit thunking DLL (gpib32ft.dll) to access the GPIB driver.
•
A DOS application uses the DOS support VxD and application to
access the GPIB driver.
Figure 1-4 shows the interaction between various types of GPIB
applications (shaded sections) and the NI-488.2M software components.
© National Instruments Corporation
1-9
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
Win16 Application
gpib.dll
Win32 Application
Win32 Application
Language Interface
gpib32ft.dll
DOS Support
Application
gpib-32.dll
DOS Application
gpibmngr.dll
User Mode
Kernal Mode
VxD Class Driver
DOS Support VxD
VxD Port Driver
GPIB Hardware
Figure 1-4. How the NI-488.2M Software Works with Windows 95
Uninstalling the GPIB Hardware from Windows 95
Before physically removing the GPIB hardware from the computer, you
must remove the hardware information from the Windows 95 Device
Manager.
To remove the hardware information from Windows 95, double-click on
the System icon in the Control Panel, which can be opened from the
Settings selection of the Start menu. Select the Device Manager tab in
the System Properties dialog box that appears, click on the View
devices by type button at the top of the Device Manager tab, and
double-click on the National Instruments GPIB Interfaces icon.
To remove an interface, select it from the list of interfaces under
National Instruments GPIB Interfaces as shown in Figure 1-5, and
click on the Remove button.
NI-488.2M User Manual for Windows 95/Windows NT
1-10
© National Instruments Corporation
Chapter 1
Introduction
Figure 1-5. Selecting an Interface to Remove from Windows 95
After you remove the appropriate interface information from the Device
Manager, you should physically remove the interface from your
computer.
Uninstalling the GPIB Software for Windows 95
Before uninstalling the software, you should remove all GPIB interface
information from the Windows 95 Device Manager, as described in the
previous section. You do not need to shut down Windows 95 before
uninstalling the software.
© National Instruments Corporation
1-11
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
Complete the following steps to remove the GPIB software.
1.
Run the Add/Remove Programs applet from the Control Panel,
which can be opened from the Settings selection of the Start menu.
A dialog box similar to the one in Figure 1-6 appears. This dialog
box lists the software available for removal.
Figure 1-6. Add/Remove Programs Properties Dialog Box in Windows 95
2.
Select the GPIB software you want to remove, and click on the
Add/Remove... button. The uninstall program runs and removes all
folders, programs, VxDs, DLLs, and registry entries associated with
the GPIB software. Figure 1-7 shows the results of a successful
uninstallation.
NI-488.2M User Manual for Windows 95/Windows NT
1-12
© National Instruments Corporation
Chapter 1
Introduction
Figure 1-7. Uninstallation Results in Windows 95
If you have interfaces other than PCMCIA cards and you have not
physically removed them from your computer, you should shut down
Windows 95, power off your computer, and remove the interfaces now.
You may remove PCMCIA cards without powering off your computer.
If you want to reinstall the hardware and software, refer to the getting
started manual.
The NI-488.2M Software for Windows NT
NI-488.2M Software for Windows NT Components
The following section highlights important elements of the NI-488.2M
software for Windows NT and describes the function of each element.
© National Instruments Corporation
1-13
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
NI-488.2M Driver and Driver Utilities
The distribution disk contains the following driver and utility files:
•
A documentation file, readme.txt, that contains important
information about the NI-488.2M software and a description of any
new features. Before you use the software, read this file for the most
recent information.
•
Native Windows NT kernel driver components.
•
A Win32 dynamic link library, gpib-32.dll, that acts as the
interface between all applications and the kernel mode GPIB driver.
•
Win32 Interactive Control utility that you use to communicate with
the GPIB devices interactively using NI-488.2 functions and
routines. It helps you to learn the NI-488.2 routines and to program
your instrument or other GPIB devices.
•
GPIB Spy is the GPIB application monitor program. It is a
debugging tool that you can use to monitor the NI-488.2 calls your
GPIB applications make.
•
The GPIB Configuration utility, a control panel application that you
use to modify the software configuration parameters of the
NI-488.2M software.
•
Diagnostic is a utility you can use to verify that the GPIB hardware
and software have been installed properly.
DOS and 16-Bit Windows Support Files
•
A documentation file, readme.txt, that contains information about
using existing DOS and 16-bit Windows applications under
Windows NT.
•
A Virtual device driver, gpib-vdd.dll, that allows existing
NI-488.2 for DOS and 16-bit Windows applications to access the
NI-488.2M software.
•
A DOS device driver, gpib-nt.com. When you run an existing
NI-488.2 application for DOS in the Windows NT environment, this
file replaces the gpib.com driver that you used in the DOS
environment.
•
A Windows dynamic link library, gpib.dll. When you run an
existing NI-488.2 application for Windows in the Windows NT
environment, this file replaces the GPIB DLL that you used in the
Windows (16-bit) environment.
NI-488.2M User Manual for Windows 95/Windows NT
1-14
© National Instruments Corporation
Chapter 1
Introduction
Microsoft C/C++ Language Interface Files
•
A documentation file, readme.txt, that contains information about
the C language interface.
•
A 32-bit include file, decl-32.h, that contains NI-488 function and
NI-488.2 routine prototypes and various predefined constants.
•
A 32-bit C language interface file, gpib-32.obj, that an application
links with in order to access the 32-bit DLL.
Borland C/C++ Language Interface Files
•
A documentation file, readme.txt, that contains information about
the C language interface.
•
A 32-bit include file, decl-32.h, that contains NI-488 function and
NI-488.2 routine prototypes and various predefined constants.
•
A 32-bit C language interface file, borlandc_gpib-32.obj, that
an application links with in order to access the 32-bit DLL.
Microsoft Visual Basic Language Interface Files
•
A documentation file, readme.txt, that contains information about
the Visual Basic language interface.
•
A Visual Basic global module, niglobal.bas, that contains certain
predefined constant declarations.
•
A Visual Basic source file, vbib-32.bas, that contains NI-488.2
routine and NI-488 function prototypes.
Sample Application Files
The NI-488.2M software includes nine sample applications along with
source code for each language supported by the NI-488.2M software. For
a detailed description of the sample application files, refer to Chapter 2,
Application Examples.
© National Instruments Corporation
1-15
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
How the NI-488.2M Software Works with Windows NT
The main components of the NI-488.2M software are a dynamic link
library that runs in user mode and a layered NT device driver that runs in
kernel mode. The layered NT device driver consists of three drivers: a
device class driver that handles device-level calls, a board class driver
that handles board-level calls, and a GPIB port driver that uses the
Hardware Abstraction Layer (HAL) to communicate with the GPIB
hardware. The top two layers of the layered NT device driver are
accessed from user mode by gpib—32.dll, a 32-bit Windows NT
dynamic link library.
GPIB applications access the NI-488.2M software through
gpib-32.dll as follows:
•
A Win32 application can either link with the language interface or
directly access the functions exported by the DLL.
•
A Win16 application uses the 16-bit DLL (gpib.dll) to access the
GPIB virtual device driver (gpib-vdd.dll).
•
A DOS application uses the DOS device driver (gpib—nt.com) to
access the GPIB virtual device driver.
Figure 1-8 shows the interaction between various types of GPIB
applications and the NI-488.2M software components.
NI-488.2M User Manual for Windows 95/Windows NT
1-16
© National Instruments Corporation
Chapter 1
Win16 Application
DOS Application
gpib.dll
gpib-nt.com
Applications
Win32 Application
Win32 Application
Language Interface
Introduction
gpib-vdd.dll
gpib-32.dll
Protected
Subsystem
Win32 Subsystem
User Mode
Kernel Mode
System Services
I/O Manager
NT Executive
Kernel
gpibclsd.sys
gpibclsb.sys
gpibxxxx.sys
Hardware Abstraction Layer (HAL)
GPIB Hardware
Figure 1-8. How the NI-488.2M Software Works with Windows NT
© National Instruments Corporation
1-17
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 1
Introduction
Unloading and Reloading the NI-488.2M Driver for Windows NT
You can unload and restart the NI-488.2M driver using the GPIB
Configuration utility.
To run this utility in Windows NT 3.51, double-click on the GPIB icon
in the Control Panel, which is located in the Main group of the
Program Manager. To run this utility in Windows NT 4.0 or later,
select Start»Settings»Control Panel, and double-click on the GPIB
icon.
The main window has an Unload button and a Restart button. If you
click on the Unload button, the NI-488.2M driver is unloaded. If you
click on the Restart button, the NI-488.2M driver is automatically
unloaded and then reloaded. Refer to Chapter 8, GPIB Configuration
Utility, for a more complete description.
NI-488.2M User Manual for Windows 95/Windows NT
1-18
© National Instruments Corporation
Chapter
2
Application Examples
This chapter contains nine sample applications designed to illustrate
specific GPIB concepts and techniques that can help you write your own
applications. The description of each example includes the programmer's
task, a program flowchart, and numbered steps which correspond to the
numbered blocks on the flowchart.
Use this chapter along with your NI-488.2M software, which includes the
C and Visual Basic source code for each of the nine examples. The
programs are listed in order of increasing complexity. If you are new to
GPIB programming, you might want to study the contents and concepts
of the first sample, simple.c, before moving on to more complex
examples.
The following example programs are included with your NI-488.2
software:
•
simple.c is the source code file for Example 1. It illustrates how
you can establish communication between a host computer and a
GPIB device.
•
clr_trg.c is the source code file for Example 2. It illustrates how
you can clear and trigger GPIB devices.
•
asynch.c is the source code file for Example 3. It illustrates how
you can perform non-GPIB tasks while data is being transferred over
the GPIB.
•
eos.c is the source code file for Example 4. It illustrates the concept
of the end-of-string (EOS) character.
•
rqs.c is the source code file for Example 5. It illustrates how you
can communicate with GPIB devices that use the GPIB SRQ line to
request service. This sample is written using NI-488 functions.
•
easy4882.c is the source code file for Example 6. It is an
introduction to NI-488.2 routines.
© National Instruments Corporation
2-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
•
rqs4882.c is the source code file for Example 7. It uses NI-488.2
routines to communicate with GPIB devices that use the GPIB SRQ
line to request service.
•
ppoll.c is the source code file for Example 8. It uses NI-488.2
routines to conduct parallel polls.
•
non_cic.c is the source code file for Example 9. It illustrates how
you can use the NI-488.2M driver in a non-Controller application.
Example 1: Basic Communication
This example focuses on the basics of establishing communication
between a host computer and a GPIB device.
A technician needs to monitor voltage readings using a GPIB multimeter.
His computer is equipped with an IEEE 488.2 interface board. The
NI-488.2M software is installed, and a GPIB cable runs from the
computer to the GPIB port on the multimeter.
The technician is familiar with the multimeter remote programming
command set. This list of commands is specific to his multimeter and is
available from the multimeter manufacturer.
He sets up the computer to direct the multimeter to take measurements
and record each measurement as it occurs. To do this, he has written an
application that uses some simple high-level GPIB commands. The
following steps correspond to the program flowchart in Figure 2-1.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application sends the multimeter an instruction, setting it up to
take voltage measurements in autorange mode.
3.
The application sends the multimeter an instruction to take a voltage
measurement.
4.
The application tells the multimeter to transmit the data it has
acquired to the computer.
The process of requesting a measurement and reading from the
multimeter (Steps 3 and 4) is repeated as long as there are readings
to be obtained.
5.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-2
© National Instruments Corporation
Chapter 2
Application Examples
GPIB Cable
Computer
Multimeter
1
INIT
2
Set Up Multimeter
to Take Voltages
3
Tell Multimeter to
Take Measurements
4
Read Measurement
From Multimeter
ibwrt
"VOLTS DC;AUTO"
ibwrt
"VOLTS?"
ibrd
No
"+ 5 volts"
Finished Getting
Measurements?
Yes
5
CLEAN UP
Figure 2-1. Program Flowchart for Example 1
© National Instruments Corporation
2-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 2: Clearing and Triggering Devices
This example illustrates how you can clear and trigger GPIB devices.
Two freshman physics lab partners are learning how to use a GPIB
digital oscilloscope. They have successfully loaded the NI-488.2M
software on a personal computer and connected their GPIB board to a
GPIB digital oscilloscope. Their current lab assignment is to write a
small application to practice using the oscilloscope and its command set
using high-level GPIB commands. The following steps correspond to the
program flowchart in Figure 2-2.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application sends a GPIB clear command to the oscilloscope.
This command clears the internal registers of the oscilloscope,
reinitializing it to default values and settings.
3.
The application sends a command to the oscilloscope telling it to
read a waveform each time it is triggered. Predefining the task in this
way decreases the execution time required. Each trigger of the
oscilloscope is now sufficient to get a new run.
4.
The application sends a GPIB trigger command to the oscilloscope
which causes it to acquire data.
5.
The application queries the oscilloscope for the acquired data. The
oscilloscope sends the data.
6.
The application reads the data from the oscilloscope.
7.
The application calls an external graphics routine to display the
acquired waveform.
Steps 4, 5, 6, and 7 are repeated until all of the desired data has been
acquired by the oscilloscope and received by the computer.
8.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-4
© National Instruments Corporation
Chapter 2
Application Examples
GPIB Cable
Computer
1
INIT
2
Clear Oscilloscope
Oscilloscope
ibclr
Clear Command
ibwrt
Define Task to Be Done
3
When Oscilloscope
Is Triggered
"WAV=TRIG"
ibtrg
4
Trigger Oscilloscope
to Get Reading
5
Request Data
From Oscilloscope
6
Read Data
From Oscilloscope
7
Display Waveform
Trigger Command
ibwrt
"CURV?"
ibrd
No
Data
Finished Reading?
Yes
8
CLEAN UP
Figure 2-2. Program Flowchart for Example 2
© National Instruments Corporation
2-5
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 3: Asynchronous I/O
This example illustrates how an application conducts data transfers with a
GPIB device and immediately returns to perform other non-GPIB related
tasks while GPIB I/O is occurring in the background. This asynchronous
mode of operation is particularly useful when the requested GPIB activity
may take some time to complete.
In this example, a research biologist is trying to obtain accurate CAT
scans of a lab animal’s liver. She will print out a color copy of each scan
as it is acquired. The entire operation is computer-controlled. The CAT
scan machine sends the images it acquires to a computer that has the
NI-488.2M software installed and is connected to a GPIB color printer.
The biologist is familiar with the command set of her color printer, as
described in the user manual provided by the manufacturer. She acquires
and prints images with the aid of an application she wrote using
high-level GPIB commands. The following steps correspond to the
program flowchart in Figure 2-3.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
An image is scanned in.
3.
The application sends the GPIB printer a command to print the new
image and immediately returns without waiting for the I/O operation
to be completed.
4.
The application saves the image obtained to a file.
5.
The application inquires as to whether the printing operation has
completed by issuing a GPIB wait command. If the status reported
by the wait command indicates completion (CMPL is in the status
returned) and more scans need to be acquired, Steps 2 through 5 are
repeated until the scans have all been acquired. If the status reported
by the wait command in Step 5 does not indicate that printing is
finished, statistical computations are performed on the scan obtained
and Step 5 is repeated.
6.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-6
© National Instruments Corporation
Chapter 2
Application Examples
GPIB Cable
Computer
1
INIT
2
Image Scan
3
Print Image
Asynchronously
Color Printer
ibwrta
4
Print Image
Non-GPIB Activity:
Save to Disk
ibwait
5
Is GPIB Printing
Done?
No
Non-GPIB Activity:
Compute Statistics
Yes
Yes
More Images?
No
8
CLEAN UP
Figure 2-3. Program Flowchart for Example 3
© National Instruments Corporation
2-7
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 4: End-of-String Mode
This example illustrates how to use the end-of-string modes to detect that
the GPIB device has finished sending data.
A journalist is using a GPIB scanner to scan some pictures into his
personal computer for a news story. A GPIB cable runs between the
scanner and the computer. He is using an application written by an intern
in the department who has read the scanner's instruction manual and is
familiar with the scanner's programming requirements. The following
steps correspond to the program flowchart in Figure 2-4.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application sends a GPIB clear message to the scanner,
initializing it to its power-on defaults.
3.
The scanner needs to detect a delimiter indicating the end of a
command. In this case, the scanner expects the commands to be
terminated with <CR><LF> (carriage return, \r, and linefeed, \n).
The application sets its end-of-string (EOS) byte to <LF>. The
linefeed code indicates to the scanner that no more data is coming,
and is called the end-of-string byte. It flags an end-of-string
condition for this particular GPIB scanner. The same effect could be
accomplished by asserting the EOI line when the command is sent.
4.
With the exception of the scan resolution, all the default settings are
appropriate for the task at hand. The application changes the scan
resolution by writing the appropriate command to the scanner.
5.
The scanner sends back information describing the status of the
change resolution command. This is a string of bytes terminated by
the end-of-string character to tell the application it is done changing
the resolution.
6.
The application starts the scan by writing the scan command to the
scanner.
7.
The application reads the scan data into the computer.
8.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-8
© National Instruments Corporation
Chapter 2
Application Examples
GPIB Cable
Computer
1
INIT
2
Reset Internal State
Scanner
ibclr
Clear Command
ibeos
3
Set EOS Mode
4
Change Scan
Resolution
5
Read Status
ibwrt
"RES:3\r\n"
ibrd
"OK"
ibwrt
6
Start Scan
7
Read Data
8
CLEAN UP
"scan\r\n"
ibrd
Scanned Data
Figure 2-4. Program Flowchart for Example 4
© National Instruments Corporation
2-9
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 5: Service Requests
This example illustrates how an application communicates with a GPIB
device that uses the GPIB service request (SRQ) line to indicate that it
needs attention.
A graphic arts designer is transferring digital images stored on her
computer to a roll of color film, using a GPIB digital film recorder. A
GPIB cable connects the GPIB port on the film recorder to the
IEEE 488.2 interface board installed in her computer. She has installed
the NI-488.2M software on the host computer and is familiar with the
programming instructions for the film recorder, as described in the user
manual provided by the manufacturer. She places a fresh roll of film in
the camera and launches a simple application she has written using
high-level GPIB commands. With the aid of the application, she records
a few images on film. The following steps correspond to the program
flowchart in Figure 2-5.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application brings the film recorder to a ready state by issuing a
device clear instruction. The film recorder is now set up for
operation using its default values. (The graphic arts designer has
previously established that the default values for the film recorder
are appropriate for the type of film she is using).
3.
The application advances the new roll of film into position so the
first image can be exposed on the first frame of film. This is done by
sending the appropriate instructions as described in the film recorder
programming guide.
4.
The application waits for the film recorder to signify that it is done
loading the film, by waiting for RQS (request for service). The film
recorder asserts the GPIB SRQ line when it has finished loading the
film.
5.
As soon as the film recorder asserts the GPIB SRQ line, the
application’s wait for the RQS event completes. The application
conducts a serial poll by sending a special command message to the
film recorder that directs it to return a response in the form of a serial
poll status byte. This byte contains information indicating what kind
of service the film recorder is requesting or what condition it is
flagging. In this example, it indicates the completion of a command.
NI-488.2M User Manual for Windows 95/Windows NT
2-10
© National Instruments Corporation
Chapter 2
6.
Application Examples
A color image transfers to the digital film recorder in three
consecutive passes—one pass each for the red, green and blue
components of the image. Sub-steps 6a, 6b, and 6c are repeated for
each of the passes:
6a. The application sends a command to the film recorder directing
it to accept data to create a single pass image. The film recorder
asserts the SRQ line as soon as a pass is completed.
6b. The application waits for RQS.
6c. When the SRQ line is asserted, the application serial polls the
film recorder to see if it requested service, as in Step 5.
7.
The application issues a command to the film recorder to advance
the film by one frame. The advance occurs successfully unless the
end of film is reached.
8.
The application waits for RQS, which completes when the film
recorder asserts the SRQ line to signal it is done advancing the film.
9.
As soon as the application's wait for RQS completes, the application
serial polls the film recorder to see if it requested service, as in
Step 5. The returned serial poll status byte indicates either of two
conditions—the film recorder finished advancing the film as
requested or the end of film was reached and it can no longer
advance. Steps 6 through 9 are repeated as long as film is in the
camera and more images need to be recorded.
10. As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
© National Instruments Corporation
2-11
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
GPIB Cable
Computer
1
Digital Film Recorder
INIT
ibclr
2
Clear Film Recorder
Clear Command
ibwrt
3
"FRM+"
Advance Film
ibwait
Request Service
Wait For the Film
Recorder to
Request Service
4
Did You
Request Service?
Yes
ibrsp
5
Read Response From
the Film Recorder
No
Response
Finished Loading
Film?
Yes
Exit Application and
Repair Film Recorder
(continues)
Figure 2-5. Program Flowchart for Example 5
NI-488.2M User Manual for Windows 95/Windows NT
2-12
© National Instruments Corporation
Chapter 2
Computer
Application Examples
Digital Film Recorder
ibwrt
6a
Create a Single
Pass Image
Data for Red,
Green, or Blue Pass
ibwait
Request Service
6
6b
These steps are
repeated three
times, once for
each color pass
6c
Wait For the Film
Recorder to
Request Service
Did You
Request Service?
Yes
ibrsp
Read Response From
the Film Recorder
Response
ibwrt
7
Advance Film
"ADV"
ibwait
Request Service
8
Wait For the Film
Recorder to
Request Service
Did You
Request Service?
Yes
ibrsp
9
No
Read Response From
the Film Recorder
Response
Reached End of
Film?
Yes
10
CLEAN UP
Figure 2-5. Program Flowchart for Example 5 (Continued)
© National Instruments Corporation
2-13
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 6: Basic Communication with
IEEE 488.2-Compliant Devices
This example provides an introduction to communicating with
IEEE 488.2-compliant devices.
A test engineer in a metal factory is using IEEE 488.2-compliant tensile
testers to find out the strength of metal rods as they come out of
production. There are several tensile testers and they are all connected to
a central computer equipped with an IEEE 488.2 interface board. These
machines are fairly voluminous and it is difficult for the engineer to reach
the address switches of each machine. For the purposes of his future
work with these tensile testers, he needs to determine what GPIB
addresses they have been set to. He can do so with the aid of a simple
application he has written. The following steps correspond to the
program flowchart in Figure 2-6.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application issues a command to detect the presence of listening
devices on the GPIB and compiles a list of the addresses of all such
devices.
3.
The application sends an identification query ("*IDN?") all of the
devices detected on the GPIB in Step 2.
4.
The application reads the identification information returned by each
of the devices as it responds to the query in Step 3.
5.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-14
© National Instruments Corporation
Chapter 2
GPIB Cable
GPIB Cable
Computer
1
Application Examples
GPIB Cable
Tensile Tester 2
Tensile Tester 1
Tensile Tester 3
INIT
FindLstn
Who's Listening?
2
Get a List of Devices
Present on GPIB
Device 1 Is Here
Device 2 Is Here
Device 3 Is Here
Send
3
Tell Device 1 to
Identify Itself
4
Read Response
From Device 1
3
Tell Device 2 to
Identify Itself
4
Read Response
From Device 2
3
Tell Device 3 to
Identify Itself
4
Read Response
From Device 3
5
CLEAN UP
"IDN?"
Receive
"MUTT 10383"
Send
"IDN?"
Receive
"MUTT 10426"
Send
"IDN?"
Receive
"MUTT 10528"
Figure 2-6. Program Flowchart for Example 6
© National Instruments Corporation
2-15
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 7: Serial Polls Using NI-488.2 Routines
This example illustrates how you can take advantage of the NI-488.2
routines to reduce the complexity of performing serial polls of multiple
devices.
A candy manufacturer is using GPIB strain gauges to measure the
consistency of the syrup used to make candy. The plant has four big
mixers containing syrup. The syrup has to reach a certain consistency to
make good quality candy. This is measured by strain gauges that monitor
the amount of pressure used to move the mixer arms. When a certain
consistency is reached, the mixture is removed and a new batch of syrup
is poured in the mixer. The GPIB strain gauges are connected to a
computer with an IEEE 488.2 interface board and the NI-488.2M
software installed. The process is controlled by an application that uses
NI-488.2 routines to communicate with the IEEE 488.2-compliant strain
gauges. The following steps correspond to the program flowchart in
Figure 2-7.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application configures the strain gauges to request service when
they have a significant pressure reading or a mechanical failure
occurs. They signal their request for service by asserting the SRQ
line.
3.
The application waits for one or more of the strain gauges to indicate
that they have a significant pressure reading. This wait event ends as
soon as the SRQ line is asserted.
4.
The application serial polls each of the strain gauges to see if it
requested service.
5.
Once the application has determined which one of the strain gauges
requires service, it takes a reading from that strain gauge.
6.
If the reading matches the desired consistency, a dialog window
appears on the computer screen and prompts the mixer operator to
remove the mixture and start a new batch. Otherwise, a dialog
window prompts the operator to service the mixer in some other
way.
Steps 3 through 6 are repeated as long as the mixers are in operation.
7.
After the last batch of syrup has been processed, the application
returns the interface board to its original state by taking it offline.
NI-488.2M User Manual for Windows 95/Windows NT
2-16
© National Instruments Corporation
Chapter 2
GPIB Cable
GPIB Cable
Computer
1
GPIB Cable
Strain Gauge 2
Strain Gauge 1
Application Examples
Strain Gauge 3
INIT
SendList
2
Configure Strain
Gauges to Request
Service When They
Have a Reading
3
Wait For 1 Or More
Strain Gauges to
Request Service
"SRQ=HI"
WaitSRQ
Request Service
FindRQS
Did You Request
Service?
4
Serial Poll Each Strain
Gauge Until One
Requesting Service
Is Located
No
Did You Request
Service?
Yes
Receive
5
No
Get a Reading From
Strain Gauge
Does the Gauge
Need Service?
No
6
No
Response
Yes
Provide Whatever
Service Is Required
Mixture Is Ready
Display "Remove
Mixture" Message
Done For the
Day?
Yes
7
CLEAN UP
Figure 2-7. Program Flowchart for Example 7
© National Instruments Corporation
2-17
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 8: Parallel Polls
This example illustrates how you can use NI-488.2 routines to obtain
information from several IEEE 488.2-compliant devices at once using a
procedure called parallel polling.
The process of manufacturing a particular alloy involves bringing three
different metals to specific temperatures before mixing them to form the
alloy. Three vats are used, each containing a different metal. Each is
monitored by a GPIB ore monitoring unit. The monitoring unit consists
of a GPIB temperature transducer and a GPIB power supply. The
temperature transducer is used to probe the temperature of each metal.
The power supply is used to start a motor to pour the metal into the mold
when it reaches a predefined temperature. The three monitoring units are
connected to the IEEE 488.2 interface board of a computer that has the
NI-488.2M software installed. An application using NI-488.2 routines
operates the three monitoring units. The application will obtain
information from the multiple units by conducting a parallel poll, and
will then determine when to pour the metals into the mixture tank. The
following steps correspond to the program flowchart in Figure 2-8.
1.
The application initializes the GPIB by bringing the interface board
in the computer online.
2.
The application configures the temperature transducer in the first
monitoring unit by choosing which of the eight GPIB data lines the
transducer uses to respond when a parallel poll is conducted. The
application also sets the temperature threshold. The transducer
manufacturer has defined the individual status (ist) bit to be true
when the temperature threshold is reached, and the configured status
mode of the transducer is assert the data line. When a parallel poll is
conducted, the transducer asserts its data line if the temperature has
exceeded the threshold.
3.
The application configures the temperature transducer in the second
monitoring unit for parallel polls.
4.
The application configures the temperature transducer in the third
monitoring unit for parallel polls.
5.
The application conducts non-GPIB activity while the metals are
heated.
6.
The application conducts a parallel poll of all three temperature
transducers to determine whether the metals have reached the
NI-488.2M User Manual for Windows 95/Windows NT
2-18
© National Instruments Corporation
Chapter 2
Application Examples
appropriate temperature. Each transducer asserts its data line during
the configuration step if its temperature threshold has been reached.
7.
If the response to the poll indicates that all three metals are at the
appropriate temperature, the application sends a command to each of
the three power supplies, directing them to power on. Then the
motors start and the metals pour into the mold.
If only one or two of the metals is at the appropriate temperature,
Steps 5 and 6 are repeated until the metals can be successfully
mixed.
8.
The application unconfigures all of the transducers so that they no
longer participate in parallel polls.
9.
As a cleanup step before exiting, the application returns the interface
board to its original state by taking it offline.
GPIB Cable
GPIB Cable
Computer
INIT
2
Configure Transducer 1
For Parallel Ports
3
Configure Transducer 2
For Parallel Ports
4
Configure Transducer 3
For Parallel Ports
5
Non-GPIB Activity
GPIB Cable
UNIT 1
Temperature
Transducer
1
GPIB Cable
GPIB Cable
GPIB Cable
UNIT 2
Power
Supply
Temperature
Transducer
UNIT 3
Power
Supply
Temperature
Transducer
Power
Supply
PPollConfig
Parallel Poll
Enable
PPollConfig
Parallel Poll
Enable
PPollConfig
Parallel Poll
Enable
PPoll
No
6
Parallel Poll
Are All Metals
Ready?
Yes
Yes
Yes
Yes
SendList
7
Start Power Supplies
8
PPoll Unconfigure
9
CLEAN UP
"MIX ON"
PPollUnconfig
Parallel Poll
Disable
Figure 2-8. Program Flowchart for Example 8
© National Instruments Corporation
2-19
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 2
Application Examples
Example 9: Non-Controller Example
This example illustrates how you can use the NI-488.2M software to
emulate a GPIB device that is not the GPIB Controller.
A software engineer has written firmware to emulate a GPIB device for a
research project and is testing it using an application that makes simple
GPIB calls. The following steps correspond to the program flowchart in
Figure 2-9.
1.
The application brings the device online.
2.
The application waits for any of three events to occur: the device to
become listen-addressed, become talk-addressed, or receive a GPIB
clear message.
3.
As soon as one of the events occurs, the application takes an action
based upon the event that occurred. If the device was cleared, the
application resets the internal state of the device to default values. If
the device was talk-addressed, it writes data back to the Controller. If
the device was listen-addressed, it reads in new data from the
Controller.
NI-488.2M User Manual for Windows 95/Windows NT
2-20
© National Instruments Corporation
Chapter 2
Application Examples
Controller
Device
1
INIT
ibwait
2
Wait To Be Talk
Addressed, Listen
Addressed, Or Cleared
3
Reset Internal
State
Yes
Is This the
Clear Event?
No
No
Is This the Talk
Addressed Event?
Yes
ibwrt
3
3
Write Out New Data
Data
ibrd
Read In New Data
Data
Figure 2-9. Program Flowchart for Example 9
© National Instruments Corporation
2-21
NI-488.2M User Manual for Windows 95/Windows NT
Chapter
3
Developing Your
Application
This chapter explains how to develop a GPIB application using NI-488
functions and NI-488.2 routines.
Choosing Your Programming Methodology
Based on your development environment, you can select a method for
accessing the driver, and based on your GPIB programming needs, you
can choose between the NI-488 functions and NI-488.2 routines.
Choosing a Method to Access the NI-488.2M Driver
Applications can access the NI-488.2M dynamic link library
(gpib-32.dll) either by using an NI-488.2M language interface or by
direct access.
NI-488.2M Language Interfaces
You can use a language interface if your program is written in Microsoft
Visual C/C++ (2.0 or higher), Borland C/C++ (4.0 or higher), or
Microsoft Visual Basic (4.0 or higher). Otherwise, you must access the
gpib-32.dll directly.
Direct Entry Access
You can directly access the DLL from any programming environment
that allows you to request addresses of variables and functions that a
DLL exports. The gpib-32.dll exports pointers to each of the global
variables and all of the NI-488 and NI-488.2 calls.
© National Instruments Corporation
3-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
Choosing between NI-488 Functions and NI-488.2 Routines
The NI-488.2M software includes two distinct sets of subroutines to meet
your application needs. Both of these sets, the NI-488 functions and the
NI-488.2 routines, are compatible across computer platforms and
operating systems, so you can port programs to other platforms with little
or no source code modification. For most applications, the NI-488
functions are sufficient. You should use the NI-488.2 routines if you
have a complex configuration with one or more interface boards and
multiple devices. Regardless of which option you choose, the driver
automatically addresses devices and performs other bus management
operations necessary for device communication.
The following sections discuss some differences between NI-488
functions and NI-488.2 routines.
Using NI-488 Functions: One Device for Each Board
If your system has only one device attached to each board, the NI-488
functions are probably sufficient for your programming needs. Some
other factors that make the NI-488 functions more convenient include the
following:
•
With NI-488 asynchronous I/O functions (ibcmda, ibrda, and
ibwrta), you can initiate an I/O sequence while maintaining control
over the CPU for non-GPIB tasks.
•
NI-488 functions include built-in file transfer functions (ibrdf and
ibwrtf).
•
With NI-488 functions, you can control the bus in non-typical ways
or communicate with non-compliant devices.
The NI-488 functions consist of high-level (or device) functions that hide
much of the GPIB management operations and low-level (or board)
functions that offer you more control over the GPIB than
NI-488.2 routines. The following sections describe these different
function types.
NI-488.2M User Manual for Windows 95/Windows NT
3-2
© National Instruments Corporation
Chapter 3
Developing Your Application
NI-488 Device-Level Functions
Device functions are high-level functions that automatically execute
commands to handle bus management operations such as reading from
and writing to devices or polling them for status. If you use device
functions, you do not need to understand GPIB protocol or bus
management. For information about device-level calls and how they
manage the GPIB, refer to the Device-Level Calls and Bus Management
section in Chapter 7, GPIB Programming Techniques.
NI-488 Board-Level Functions
Board functions are low-level functions that perform rudimentary GPIB
operations. Board functions access the interface board directly and
require you to handle the addressing and bus management protocol. In
cases when the high-level device functions might not meet your needs,
low-level board functions give you the flexibility and control to handle
situations such as the following:
•
Communicating with non-compliant (non-IEEE 488.2) devices
•
Altering various low-level board configurations
•
Managing the bus in non-typical ways
The NI-488 board functions are compatible with, and can be interspersed
within, sequences of NI-488.2 routines. When you use board functions
within a sequence of NI-488.2 routines, you do not need a prior call to
ibfind to obtain a board descriptor. You simply substitute the board
index as the first parameter of the board function call. With this
flexibility, you can handle non-standard or unusual situations that you
cannot resolve using NI-488.2 routines only.
Using NI-488.2 Routines: Multiple Boards and/or
Multiple Devices
When your system includes a board that must access multiple devices,
use the NI-488.2 routines. NI-488.2 routines can perform the following
tasks with a single call:
•
Find all of the Listeners on the bus
•
Find a device requesting service
•
Determine the state of the SRQ line, or wait for SRQ to be asserted
•
Address multiple devices to listen
© National Instruments Corporation
3-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
You can mix board-level NI-488 functions with the NI-488.2 routines to
have access to all of the NI-488.2 functionality.
Checking Status with Global Variables
Each NI-488 function and NI-488.2 routine updates four global variables
to reflect the status of the device or board that you are using. These
global status variables are the status word (ibsta), the error variable
(iberr) and the count variables (ibcnt and ibcntl). They contain
useful information about the performance of your application. Your
application should check these variables after each GPIB call. The
following sections describe each of these global variables and how you
can use them in your application.
Note:
If your application is a multithreaded application, refer to the
Writing Multithreaded Win32 GPIB Applications section in
Chapter 7, GPIB Programming Techniques.
Status Word – ibsta
All functions update a global status word, ibsta, which contains
information about the state of the GPIB and the GPIB hardware. The
value stored in ibsta is the return value of all of the NI-488 functions
except ibfind and ibdev. You can examine various status bits in
ibsta and use that information to make decisions about continued
processing. If you check for possible errors after each call using the
ibsta ERR bit, debugging your application is much easier.
ibsta is a 16-bit value. A bit value of one (1) indicates that a certain
condition is in effect. A bit value of zero (0) indicates that the condition
is not in effect. Each bit in ibsta can be set for NI-488 device calls
(dev), NI-488 board calls (brd) and NI-488.2 calls, or all (dev, brd).
Table 3-1 shows the condition that each bit position represents, the bit
mnemonics, and the type of calls for which the bit can be set. For a
detailed explanation of each of the status conditions, refer to
Appendix A, Status Word Conditions.
NI-488.2M User Manual for Windows 95/Windows NT
3-4
© National Instruments Corporation
Chapter 3
Developing Your Application
Table 3-1. Status Word Layout
Mnemonic
Bit
Pos.
Hex
Value
ERR
15
8000
dev, brd
GPIB error
TIMO
14
4000
dev, brd
Time limit exceeded
END
13
2000
dev, brd
END or EOS detected
SRQI
12
1000
brd
SRQ interrupt received
RQS
11
800
dev
Device requesting service
CMPL
8
100
dev, brd
I/O completed
LOK
7
80
brd
Lockout State
REM
6
40
brd
Remote State
CIC
5
20
brd
Controller-In-Charge
ATN
4
10
brd
Attention is asserted
TACS
3
8
brd
Talker
LACS
2
4
brd
Listener
DTAS
1
2
brd
Device Trigger State
DCAS
0
1
brd
Device Clear State
Type
Description
The language header file included on your distribution disk defines each
of the ibsta status bits. You can test for an ibsta status bit being set
using the bitwise and operator (& in C/C++). For example, the ibsta
ERR bit is bit 15 of ibsta. To check for a GPIB error, use the following
statement after each GPIB call as shown:
if (ibsta & ERR)
printf("GPIB error encountered");
Error Variable – iberr
If the ERR bit is set in ibsta, a GPIB error has occurred. When an error
occurs, the error type is specified by iberr. To check for a GPIB error,
use the following statement after each GPIB call:
if (ibsta &ERR)
printf("GPIB error %d encountered", iberr);
Note:
The value in iberr is meaningful as an error type only when the
ERR bit is set in ibsta, indicating that an error has occurred.
© National Instruments Corporation
3-5
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
For more information on error codes and solutions refer to Chapter 4,
Debugging Your Application, or Appendix B, Error Codes and Solutions.
Count Variables – ibcnt and ibcntl
The count variables are updated after each read, write, or command
function. In Win32 applications, ibcnt and ibcntl are 32-bit integers.
On some systems, like MS-DOS, ibcnt is a 16-bit integer, and ibcntl
is a 32-bit integer. For cross-platform compatibility, all applications
should use ibcntl. If you are reading data, the count variables indicate
the number of bytes read. If you are sending data or commands, the count
variables reflect the number of bytes sent.
In your application you can use the count variables to null-terminate an
ASCII string of data received from an instrument. For example, if data is
received in an array of characters, you can use ibcntl to null-terminate
the array and print the measurement on the screen as follows:
char rdbuf[512];
ibrd (ud, rdbuf, 20L);
if (!(ibsta & ERR)){
rdbuf[ibcntl] = '\0';
printf ("Read: %s\n", rdbuf);
}
else {
error();
}
Using Win32 Interactive Control to Communicate with
Devices
Before you begin writing your application, you might want to use the
Win32 Interactive Control utility. With Win32 Interactive Control, you
communicate with your instruments from the keyboard rather than from
an application. You can use Win32 Interactive Control to learn to
communicate with your instruments using the NI-488 functions or
NI-488.2 routines. For specific device communication instructions, refer
to the user manual that came with your instrument. For information about
using Win32 Interactive Control and for detailed examples, refer to
Chapter 6, Win32 Interactive Control Utility.
NI-488.2M User Manual for Windows 95/Windows NT
3-6
© National Instruments Corporation
Chapter 3
Developing Your Application
Programming Model for NI-488 Applications
This section discusses items you should include in your application,
general program steps, and an NI-488 example.
Items to Include
•
In a C application, include the header files windows.h and
decl-32.h. windows.h, the standard Windows header file,
contains definitions used by decl-32.h and decl-32.h contains
prototypes for the GPIB functions and constants that you can use in
your application.
•
Check for errors after each NI-488 function call.
•
Declare and define a function to handle GPIB errors. This function
takes the device offline and closes the application. If the function is
declared as:
void gpiberr (char * msg); /*function prototype*/
then your application invokes it as follows:
if (ibsta & ERR) {
gpiberr("GPIB error");
}
© National Instruments Corporation
3-7
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
NI-488 Program Shell
Figure 3-1 is a flowchart of the steps to create your application using
NI-488 functions. The flowchart is for device-level calls.
START
Open Device (ibdev)
Are All Devices
Open?
No
Yes
Make a Device Level Call
• Send Data to Device (ibwrt)
• Receive Data From Device (ibrd)
• Clear Device (ibclr)
• Serial Poll Device (ibrsp)
and so on
Finished GPIB
Programming?
No
Yes
Close Device (ibonl)
Closed All
Devices?
No
Yes
END
Figure 3-1. General Program Shell Using NI-488 Device Functions
NI-488.2M User Manual for Windows 95/Windows NT
3-8
© National Instruments Corporation
Chapter 3
Developing Your Application
NI-488 General Program Steps and Examples
The following steps demonstrate how to use the NI-488 device functions
in your application. The NI-488.2M software includes the source code
for an example written in C (devsamp.c) and the source code for the
example written to use direct entry to access the gpib-32.dll
(dlldev.c). The NI-488.2M software also includes a sample program
written in Visual Basic, devsamp.frm.
Step 1. Open a Device
Your first NI-488 function call should be a call to ibdev to open a
device. The ibdev function requires the following parameters:
•
Connect board index (typically set to 0, because your board is
GPIB0),
•
Primary address for the GPIB instrument (refer to the GPIB
instrument manual)
•
Secondary address for the GPIB instrument (0 if the GPIB
instrument does not use secondary addressing)
•
Timeout period (typically set to T10s which is 10 seconds)
•
End-of-transfer mode (typically 1 so that EOI is asserted with the
last byte of writes)
•
EOS detection mode (0 if the GPIB instrument does not use EOS
characters)
When you call ibdev, the driver automatically initializes the GPIB by
sending an Interface Clear (IFC) message and placing the device in
remote programming state. A successful ibdev call returns a unit
descriptor handle, ud, that is used for all NI-488 calls that communicate
with the GPIB instrument.
Step 2. Clear the Device
Use ibclr to clear the device before you configure the device for your
application. Clearing the device resets its internal functions to a default
state.
© National Instruments Corporation
3-9
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
Step 3. Communicate with the Device
After you open and clear the device, your GPIB instrument is ready to
receive instructions. If you want to acquire readings from your device,
you can do so in several ways . Each GPIB device has its own specific
instructions. You should refer to the documentation that came with your
GPIB device to learn how to properly communicate with it. For this
example, assume that the GPIB device can be programmed to acquire
readings whenever it is triggered. Furthermore, assume that the GPIB
device requests service when it has acquired a reading. Given these
assumptions, the following steps are necessary:
Step 3a.
Program the GPIB device to acquire a reading whenever it receives a
GPIB trigger using the ibwrt function. The buffer that you pass to
ibwrt is the command message that programs the device to behave
properly.
Step 3b.
Trigger the device using the ibtrg function.
Step 3c.
Wait for the device to acquire the reading using the ibwait function
with a mask value of RQS | TIMO because the event of interest is the
device’s ReQuest for Service (RQS). If the ibwait function times out
before the RQS event occurs, the timeout bit (TIMO) is set in the ibsta
value for the call.
Step 3d.
If the wait for the service request succeeded, get the device’s serial poll
response byte and verify that it indicates that the device obtained a good
measurement, using the ibrsp function.
Step 3e.
Read the measurement from the device using the ibrd function and
record it in a list of device measurements.
Repeat steps 3b through 3e for each measurement you want to acquire.
NI-488.2M User Manual for Windows 95/Windows NT
3-10
© National Instruments Corporation
Chapter 3
Developing Your Application
Step 4. Place the Device Offline Before Exiting
Your Application
Once you are finished accessing the GPIB device, take it offline using the
ibonl function before you exit your application.
Programming Model for NI-488.2 Applications
This section discusses items you should include in an application that
uses NI-488.2 routines, general program steps, and an NI-488.2 example.
Items to Include
•
In a C application, include the header files windows.h and
decl-32.h. windows.h, the standard Windows header file,
contains definitions used by decl-32.h and decl-32.h contains
prototypes for the GPIB routines and constants that you can use in
your application.
•
Check for errors after each NI-488.2 routine call.
•
Declare and define a function to handle GPIB errors. This function
takes the device offline and closes the application. If the function is
declared as:
void gpiberr (char * msg); /*function prototype*/
Then your application invokes it as follows:
if (ibsta & ERR) {
gpiberr("GPIB error");
}
© National Instruments Corporation
3-11
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
NI-488.2 Program Shell
Figure 3-2 is a flowchart of the steps to create your application using
NI-488.2 routines.
START
Initialize Specified GPIB
Interface (SendIFC)
Are All Boards
Initialized?
No
Yes
Low-Level
High-Level
Making High-Level
or Low-Level Call?
Make a Low-Level Call
• Address Devices to Listen (SendSetup)
• Send Data to Addressed Listener
(SendDataBytes)
• Address Device to Talk (ReceiveSetup)
• Receive Data From Addressed Talker
(RcvRespMsg)
and so on
Make a High-Level Call
• Send Data to Device (Send)
• Receive Data From Device (Receive)
• Clear Device (DevClear)
• Serial Poll Device (ReadStatusByte)
and so on
Finished GPIB
Programming?
No
Yes
Close Board (ibonl)
Are All Boards
Closed?
No
Yes
END
Figure 3-2. General Program Shell Using NI-488.2 Routines
NI-488.2M User Manual for Windows 95/Windows NT
3-12
© National Instruments Corporation
Chapter 3
Developing Your Application
NI-488.2 General Program Steps and Examples
The following steps demonstrate how to use the NI-488.2 routines in
your application. The NI-488.2M software includes the source code for
an example written in C (samp4882.c) and the source code for the
example written to use direct entry to access the gpib-32.dll
(dll4882.c). The NI-488.2M software also includes a sample program
written in Visual Basic, samp4882.frm.
Step 1. Initialization
Use the SendIFC routine to initialize the bus and the GPIB interface
board so that the GPIB board is Controller-In-Charge (CIC). The only
argument of SendIFC is the GPIB interface board number, typically 0 for
GPIB0.
Step 2. Determine the GPIB Address of Your
Device
If you do not know the address of your device, you can use the
FindLstn routine to find all the devices attached to the GPIB. The
FindLstn routine requires the following parameters:
•
Interface board number (typically set to 0, because your board is
GPIB0)
•
A list of primary addresses, terminated with the NOADDR constant
•
A list of GPIB addresses of devices found listening on the GPIB
•
Limit which is the number of the GPIB addresses to report
The FindLstn routine tests for the presence of all of the primary
addresses that are passed to it. If a device is present at a particular
primary address, then the primary address is stored in the GPIB addresses
list. Otherwise, all secondary addresses of the given primary address are
tested, and the GPIB address of any devices found are stored in the GPIB
addresses list. Once you have the list of GPIB addresses, you can
determine which one corresponds to your instrument and use it for
subsequent NI-488.2 calls.
Alternately, if you already know your GPIB device’s primary and
secondary address, you can create an appropriate GPIB address to use in
subsequent NI-488.2 calls as follows: a GPIB address is a 16-bit value
that contains the primary address in the low byte and the secondary
address in the high byte. If you are not using secondary addressing, the
© National Instruments Corporation
3-13
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
secondary address is 0. For example, if the primary address is 1, then the
word = 0x01; otherwise if the primary address is 1 and the secondary
address is 0x67, then the word = 0x6701.
Step 3. Initialize the Device
After you find the device, use the DevClear routine to clear it. The first
argument is the GPIB board number. The second argument is the GPIB
address as determined in Step 2.
Step 4. Communicate with the Device
After initialization, your GPIB instrument is ready to receive instructions.
If you want to acquire readings from your device, you do so in several
ways. Each GPIB device has its own specific instructions. You should
refer to the documentation that came with your GPIB device to learn how
to properly communicate with it. For this example, assume that the GPIB
device can be programmed to acquire readings whenever it is triggered.
Furthermore, assume that the GPIB device requests service when it has
acquired a reading. Given that, the following steps are necessary:
Step 4a.
Program the GPIB device to acquire a reading whenever it receives a
GPIB trigger using the Send command. The buffer that you pass to Send
is the command message that programs the device to behave properly.
Step 4b.
Trigger the device using the Trigger routine.
Step 4c.
Wait for the device to acquire the reading using the WaitSRQ routine.
Step 4d.
If the wait for the service request succeeded, read the serial poll status
byte and verify that it indicates that the device obtained a good
measurement using the ReadStatusByte routine.
NI-488.2M User Manual for Windows 95/Windows NT
3-14
© National Instruments Corporation
Chapter 3
Developing Your Application
Step 4e.
Read the measurement from the device using the Receive routine and
record it in a list of device measurements.
Steps 4b through 4e should be repeated for each measurement you want
to acquire.
Step 5. Place the Device Offline Before Exiting Your
Application
Once you are finished accessing the GPIB device, take it offline using the
ibonl function before you exit your application.
Language-Specific Programming Instructions
The following sections describe how to develop, compile, and link your
Win32 GPIB applications using various programming languages.
Microsoft Visual C/C++ (Version 2.0 or Higher)
Before you compile your Win32 C application, make sure that the
following lines are included at the beginning of your program:
#include <windows.h>
#include "decl-32.h"
To compile and link a Win32 console application named cprog in a
DOS shell, type the following on the command line:
cl cprog.c gpib-32.obj
Borland C/C++ (Version 4.0 or Higher)
Before you compile your Win32 C application, make sure that the
following lines are included at the beginning of your program:
#include <windows.h>
#include "decl-32.h"
To compile and link a Win32 console application named cprog in a
DOS shell, type the following on the command line:
bcc32 -w32 cprog.c borlandc_gpib-32.obj
© National Instruments Corporation
3-15
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
Visual Basic (Version 4.0 or Higher)
With Visual Basic, you can access the NI-488 functions as subroutines,
using the BASIC keyword CALL followed by the NI-488 function name,
or you can access the NI-488 functions using the il set of functions.
With some of the NI-488 functions and NI-488.2 subroutines (for
example ibrd or Receive) the length of the string buffer is
automatically calculated within the actual function or subroutine, which
eliminates the need to pass in the length as an extra parameter. Refer to
the online help or NI-488.2M Function Reference Manual for Win32 for
more information about function syntax for Visual Basic.
Before you run your Visual Basic application, include the files
niglobal.bas and vbib-32.bas in your application project file.
Direct Entry with C
The following sections describe how to use direct entry with C.
gpib-32.dll Exports
gpib-32.dll exports pointers to the global variables and all of the
NI-488.2 functions and subroutines. Pointers to the global variables
(ibsta, iberr, ibcnt, and ibcntl) are accessible through these
exported variables:
int *user_ibsta;
int *user_iberr;
int *user_ibcnt;
long *user_ibcntl;
Except for the functions ibbna, ibfind, ibrdf, and ibwrtf, all of the
NI-488.2 function and subroutine names are exported from
gpib-32.dll. What this means is that to use direct entry to access a
particular function all you need to do to get a pointer to the exported
function is to call GetProcAddress passing the name of the function as
a parameter. The parameters that you use when you invoke the function
are identical to those described in the online help and NI-488.2M
Function Reference Manual for Win32.
These functions all require an argument that is a name. ibbna requires a
board name, ibfind requires a board or device name, and ibrdf and
ibwrtf take a file name. Because Windows NT supports both normal
(8-bit) and Unicode (16-bit) characters, gpib-32.dll exports both
normal and Unicode versions of these functions. Because Windows 95
NI-488.2M User Manual for Windows 95/Windows NT
3-16
© National Instruments Corporation
Chapter 3
Developing Your Application
does not support 16-bit wide characters, use only the 8-bit ASCII
versions, named ibbnaA, ibfindA, ibrdfA, and ibwrtfA. The
Unicode versions are named ibbnaW, ibfindW, ibrdfW and ibwrtfW.
You can use either the Unicode or ASCII versions of these functions with
Windows NT, but only the ASCII versions with Windows 95.
In addition to pointers to the status variables and a handle to the loaded
gpib-32.dll, you must define the direct entry prototypes for the
functions you use in your application. The prototypes for each function
exported by gpib-32.dll can be found in the NI-488.2M Function
Reference Manual for Win32. The NI-488.2M direct entry sample
programs illustrate how to use direct entry to access gpib-32.dll. For
more information on direct entry, refer to the Win32 SDK (Software
Development Kit) online help.
Directly Accessing the gpib-32.dll Exports
Make sure that the following lines are included at the beginning of your
application:
#ifdef __cplusplus
extern "C"{
#endif
#include <windows.h>
#include "decl-32.h"
#ifdef __cplusplus
}
#endif
In your Win32 application, you first need to load gpib-32.dll. The
following code fragment illustrates how to call the LoadLibrary
function and check for an error:
HINSTANCE Gpib32Lib = NULL;
Gpib32Lib=LoadLibrary("GPIB-32.DLL");
if (Gpib32Lib == NULL) {
return FALSE;
}
Next, your Win32 application needs to use GetProcAddress to get the
addresses of the global status variables and functions your application
needs to use. The following code fragment illustrates how to get the
addresses of the pointers to the status variables and any functions it needs
to use:
© National Instruments Corporation
3-17
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
/* Pointers to NI-488.2 global status variables */
int *Pibsta;
int *Piberr;
long *Pibcntl;
static int(__stdcall *Pibdev)
(int ud, int pad, int sad, int tmo, int eot,
int eos);
static int(__stdcall *Pibonl)
(int ud, int v);
Pibsta = (int *) GetProcAddress(Gpib32Lib,
(LPCSTR)"user_ibsta");
Piberr = (int *) GetProcAddress(Gpib32Lib,
(LPCSTR)"user_iberr");
Pibcntl = (long *) GetProcAddress(Gpib32Lib,
(LPCSTR)"user_ibcnt");
Pibdev = (int (__stdcall *)
(int, int, int, int, int, int))
GetProcAddress(Gpib32Lib, (LPCSTR)"ibdev");
Pibonl = (int (__stdcall *)(int, int))
GetProcAddress(Gpib32Lib, (LPCSTR)"ibonl");
If GetProcAddress fails, it returns a NULL pointer. The following code
fragment illustrates how to verify that none of the calls to
GetProcAddress failed:
if ((Pibsta
(Piberr
(Pibcntl
(Pibdev
(Pibonl
==
==
==
==
==
NULL) ||
NULL) ||
NULL) ||
NULL) ||
NULL)) {
/* Free the GPIB library */
FreeLibrary(Gpib32Lib);
printf("GetProcAddress failed.");
}
Your Win32 application needs to dereference the pointer to access either
the status variables or function. The following code illustrates how to call
a function and access the status variable from within your application:
dvm = (*Pibdev) (0, 1, 0, T10s, 1, 0);
if (*Pibsta & ERR) {
printf("Call failed");
}
NI-488.2M User Manual for Windows 95/Windows NT
3-18
© National Instruments Corporation
Chapter 3
Developing Your Application
Before exiting your application, you need to free gpib-32.dll with the
following command:
FreeLibrary(Gpib32Lib);
For more examples of directly accessing gpib-32.dll, refer to the
NI-488.2M direct entry sample programs dlldev.c and dll4882.c
that are installed with the GPIB software. For more information on direct
entry, refer to the Win32 SDK (Software Development Kit) online help.
Windows 95: Running Existing GPIB Applications
Running Existing Win16 GPIB Applications
You can run existing Win16 GPIB applications under Windows 95 by
using the pair of 16-to-32 bit thunking DLLs, gpib.dll and
gpib32ft.dll, which are installed with your NI-488.2M software.
To run 16-bit Windows GPIB applications, the system uses the special
GPIB dynamic link library, gpib.dll. When you install the NI-488.2M
software, gpib.dll and gpib32ft.dll are copied into the Windows
System directory. These DLLs are automatically accessed whenever you
execute a Win16 GPIB application.
Running Existing DOS GPIB Applications
With the NI-488.2M software properly configured, you can run your
existing DOS GPIB applications along with your Win16 and Win32
GPIB applications. No DOS device driver is required. In fact, be sure that
no older version of the GPIB DOS device driver is being loaded from
your config.sys file, a file located on the boot drive of your computer.
The older GPIB DOS device driver is loaded with a command line of the
form device=<path>/gpib.com where <path> is the drive and
directory where gpib.com is located. Delete this line to ensure that the
older GPIB DOS driver is not being loaded.
To run DOS GPIB applications, the system uses a Virtual Device Driver
(VxD), gpibdosk.vxd, and a Win32 executable, gpibdos.exe. When
you install the NI-488.2M software, gpibdosk.vxd and gpibdos.exe
are copied into the Windows System directory. These files are loaded
when you restart your computer, if the NI-488.2M software has been
properly configured to run your existing DOS GPIB applications.
© National Instruments Corporation
3-19
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 3
Developing Your Application
To configure the NI-488.2M software to run your existing DOS GPIB
applications, follow these steps after you have installed the NI-488.2M
software and your GPIB hardware:
1.
Select Start»Settings»Control Panel, and double-click on the
System icon. The System Properties dialog box appears.
2.
Select the Device Manager tab.
3.
Click on the View devices by type button at the top of the page, and
click on the National Instruments GPIB Interfaces icon.
4.
Click on the Properties button to display the General property page
for the NI-488.2M software.
5.
Select the checkbox labeled Enable Support for DOS GPIB
Applications, and then click on the OK button.
6.
Restart your computer.
Now you can run your existing DOS GPIB applications.
Windows NT: Running Existing GPIB Applications
You can run existing DOS and Windows GPIB applications under
Windows NT by using the GPIB Virtual Device Driver, gpib-vdd.dll,
which is included with your NI-488.2M software.
To run DOS GPIB applications, load the special GPIB device driver
gpib-nt.com instead of gpib.com, which you normally use with DOS.
When you install the NI-488.2M software, gpib-nt.com is copied into a
new subdirectory called doswin16. To use gpib-nt.com, you must
modify your config.nt file to load gpib-nt.com whenever a DOS
application is executed. The config.nt file is located in your
<winnt>\system32 directory, where <winnt> is your Windows NT
directory, for example c:\windows. To load gpib-nt.com, add the
following line to your config.nt file:
device=<path>\doswin16\gpib-nt.com
where <path> is the directory where you installed the GPIB software
(the default installation directory is c:\gpib-nt).
NI-488.2M User Manual for Windows 95/Windows NT
3-20
© National Instruments Corporation
Chapter 3
Developing Your Application
To run Win16 GPIB applications, the system uses the special GPIB
dynamic link library, gpib.dll. When you install the NI-488.2M
software, gpib.dll is copied into the <winnt>\system32 directory,
where <winnt> is your Windows NT directory, for example
c:\windows). As long as gpib.dll is in that directory, it is
automatically accessed whenever you launch a Win16 GPIB application.
© National Instruments Corporation
3-21
NI-488.2M User Manual for Windows 95/Windows NT
Chapter
Debugging Your Application
4
This chapter describes several ways to debug your application.
Debugging with GPIB Spy
You can use the GPIB Spy utility to monitor all of the GPIB calls that are
made by GPIB applications. Because all applications go through
gpib-32.dll, the GPIB calls made by Win32, Win16, and DOS
applications are all recorded by GPIB Spy. For more information about
GPIB Spy, refer to the online help available through the application or to
Chapter 5, GPIB Spy Utility.
Debugging with the Global Status Variables
After each function call to your NI-488.2M driver, ibsta, iberr,
ibcnt, and ibcntl are updated before the call returns to your
application. You should check for an error after each GPIB call. Refer to
Chapter 3, Developing Your Application, for more information about how
to use these variables within your program to automatically check for
errors.
After you determine which GPIB call is failing and note the
corresponding values of the global variables, refer to Appendix A, Status
Word Conditions, and Appendix B, Error Codes and Solutions. These
appendixes can help you interpret the state of the driver.
Debugging with Win32 Interactive Control
If your application does not automatically check for and display errors,
you can locate an error by using the Win32 Interactive Control utility.
Simply issue the same functions or routines, one at a time as they appear
© National Instruments Corporation
4-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 4
Debugging Your Application
in your application. Because Win32 Interactive Control returns the status
values and error codes after each call, you should be able to determine
which GPIB call is failing. For more information about Win32
Interactive Control, refer to the online help or Chapter 6, Win32
Interactive Control Utility.
After you determine which GPIB call is failing and note the
corresponding values of the global variables, refer to Appendix A, Status
Word Conditions, and Appendix B, Error Codes and Solutions. These
appendixes can help you interpret the state of the driver.
GPIB Error Codes
Table 4-1 lists the GPIB error codes. Remember that the error variable is
meaningful only when the ERR bit in the status variable is set. For a
detailed description of each error and possible solutions, refer to
Appendix B, Error Codes and Solutions.
Table 4-1. GPIB Error Codes
Error
Mnemonic
iberr
Value
Meaning
EDVR
0
System error
ECIC
1
Function requires GPIB board to be CIC
ENOL
2
No Listeners on the GPIB
EADR
3
GPIB board not addressed correctly
EARG
4
Invalid argument to function call
ESAC
5
GPIB board not System Controller as
required
EABO
6
I/O operation aborted (timeout)
ENEB
7
Nonexistent GPIB board
EDMA
8
DMA error
EOIP
10
Asynchronous I/O in progress
ECAP
11
No capability for operation
EFSO
12
File system error
NI-488.2M User Manual for Windows 95/Windows NT
4-2
© National Instruments Corporation
Chapter 4
Debugging Your Application
Table 4-1. GPIB Error Codes (Continued)
Error
Mnemonic
iberr
Value
Meaning
EBUS
14
GPIB bus error
ESTB
15
Serial poll status byte queue overflow
ESRQ
16
SRQ stuck in ON position
ETAB
20
Table problem
Configuration Errors
Several applications require customized configuration of the GPIB
driver. For example, you might want to terminate reads on a special
end-of-string character, or you might require secondary addressing. In
these cases, you can either permanently reconfigure the driver using the
NI-488.2M software configuration utility, or temporarily reconfigure the
driver while your application is running using the ibconfig function.
Note:
National Instruments recommends using ibconfig to modify the
NI-488.2M driver configuration dynamically.
If your application uses dynamic configuration, it will always work
regardless of the previous configuration of the driver. Refer to the
description of ibconfig in the online help or the NI-488.2M Function
Reference Manual for Win32 for more information.
Timing Errors
If your application fails, but the same calls issued in the Win32
interactive control utility are successful, your program might be issuing
the NI-488.2 calls too quickly for your device to process and respond to
them. This problem can also result in corrupted or incomplete data.
A well-behaved IEEE 488 device should hold off handshaking and set
the appropriate transfer rate. If your device is not well behaved, you can
test for and resolve the timing error by single-stepping through your
program and inserting finite delays between each GPIB call. One way to
do this is to have your device communicate its status whenever possible.
Although this method is not possible with many devices, it is usually the
© National Instruments Corporation
4-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 4
Debugging Your Application
best option. Your delays will be controlled by the device and your
application can adjust itself and work independently on any platform.
Other delay mechanisms will probably cause varying delay times on
different platforms.
Communication Errors
Repeat Addressing
Devices adhering to the IEEE 488.2 standard should remain in their
current state until specific commands are sent across the GPIB to change
their state. However, some devices require GPIB addressing before any
GPIB activity. Therefore, you might need to configure your NI-488.2M
driver to perform repeat addressing if your device does not remain in its
currently addressed state. Refer to Chapter 8, GPIB Configuration Utility,
or to the description of ibconfig (option IbcREADDR) in the online help
or NI-488.2M Function Reference Manual for Win32 for more
information about reconfiguring your software.
Termination Method
You should be aware of the data termination method that your device
uses. By default, your NI-488.2M software is configured to send EOI on
writes and terminate reads on EOI or a specific byte count. If you send a
command string to your device and it does not respond, it might be
because it does not recognize the end of the command. You might need
to send a termination message such as <CR> <LF> after a write
command as follows:
ibwrt(dev,"COMMAND\x0A\x0D",9);
Other Errors
If you experience other errors in your application, refer to Appendix C,
Windows 95: Troubleshooting and Common Questions, or Appendix D,
Windows NT: Troubleshooting and Common Questions, depending on
which operating system you are using.
NI-488.2M User Manual for Windows 95/Windows NT
4-4
© National Instruments Corporation
Chapter
5
GPIB Spy Utility
This chapter introduces you to GPIB Spy, the application monitor you
can use to monitor NI-488 and NI-488.2 calls.
Overview
GPIB Spy monitors, records, and displays the NI-488 and NI-488.2 calls
made to the NI-488.2M driver. GPIB Spy monitors Win32, Win16, and
DOS GPIB applications. It is a useful tool for troubleshooting errors in
your application and for verifying that the communication with your
GPIB instrument is correct.
Starting GPIB Spy
When you launch GPIB Spy, it displays the main GPIB Spy window. By
default, Spy capture is on, and GPIB Spy records all GPIB calls made to
the NI-488.2M driver. Figure 5-1 shows the main GPIB Spy window
with several calls recorded in it.
Starting GPIB Spy Under Windows 95
Start GPIB Spy by choosing the GPIB Spy item under
Start»Programs»NI-488.2M Software for Windows 95.
Starting GPIB Spy Under Windows NT
In Windows NT 3.51, start GPIB Spy by double-clicking on the
GPIB Spy icon in the NI-488.2M Software for Windows NT group of
the Program Manager. In Windows NT 4.0 or later, start GPIB Spy by
choosing the GPIB Spy item under Start»Programs»NI-488.2M
Software for Windows NT.
© National Instruments Corporation
5-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 5
GPIB Spy Utility
Figure 5-1. GPIB Spy Main Window
Using the Online GPIB Spy Help
The GPIB Spy utility has built-in, context-sensitive online help. You can
access it through GPIB Spy's Help menu to view descriptions of all
GPIB Spy features. You can also access the GPIB Spy context-sensitive
help by clicking on the question mark button, and then clicking on any
area of the screen.
Locating Errors with GPIB Spy
All GPIB calls returned with an error are displayed in red within the main
GPIB Spy window.
Viewing Properties for Recorded Calls
You can view the detailed properties of any call recorded in the main
GPIB Spy window by double-clicking on the call. The Call Properties
window contains general, input, output, and buffer information.
Figure 5-2 shows the Buffer tab for a device-level ibwrt call.
NI-488.2M User Manual for Windows 95/Windows NT
5-2
© National Instruments Corporation
Chapter 5
GPIB Spy Utility
Figure 5-2. GPIB Spy Buffer Tab for Device-Level ibwrt
Exiting GPIB Spy
When you exit GPIB Spy, its current configuration is saved and used to
configure GPIB Spy when you start it again. Note that unless you
explicitly save the data captured in GPIB Spy before you exit, that
information is lost.
Performance Considerations
GPIB Spy can slow down the performance of your GPIB application, and
certain configurations of GPIB Spy have a larger impact on performance
than others. For example, configuring GPIB Spy to record calls to an
output file or to use full buffers, might have a significant impact on the
performance of both your application and the system. For this reason, use
GPIB Spy only while you are debugging your application or in situations
where performance is not critical.
© National Instruments Corporation
5-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter
Win32 Interactive Control
Utility
6
This chapter introduces you to Win32 Interactive Control, the interactive
control utility that you can use to communicate with GPIB devices
interactively.
Overview
With the Win32 Interactive Control utility, you communicate with the
GPIB devices through functions you enter at the keyboard. For specific
information about how to communicate with your particular device, refer
to the manual that came with the device. You can use Win32 Interactive
Control to practice communication with the instrument, troubleshoot
problems, and develop your application.
One way Win32 Interactive Control helps you to learn about your
instrument and to troubleshoot problems is by displaying the following
information on your screen whenever you enter a command:
•
The results of the status word (ibsta) in hexadecimal notation
•
The mnemonic constant of each bit set in ibsta
•
The mnemonic value of the error variable (iberr) if an error exists
(the ERR bit is set in ibsta)
•
The count value for each read, write, or command function
•
The data received from your instrument
Getting Started with Win32 Interactive Control
This section shows how you might use Win32 Interactive Control to test
a sequence of GPIB calls.
© National Instruments Corporation
6-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 6
Win32 Interactive Control Utility
Run the Win32 Interactive Control utility:
•
Windows 95: Select the Win32 Interactive Control item under
Start»Programs»NI-488.2M Software for Windows 95.
•
Windows NT 3.51: Double-click on the Win32 Interactive Control
icon in the NI-488.2M Software for Windows NT group of the
Program Manager.
•
Windows NT 4.0 and later: Select the Win32 Interactive Control
item under Start»Programs»NI-488.2M Software for
Windows NT.
When the Win32 Interactive Control utility first starts, it displays the
following banner message:
Win32 Interactive Control
Copyright 1996 National Instruments Corporation
All rights reserved
Type ‘help’ for help or ‘q’ to quit
:
The first step is to open either a board handle or device handle to use for
further GPIB calls. Use ibdev to open a device handle, use ibfind to
open a board handle or use the set 488.2 command to switch to a
488.2 prompt. For help on any Win32 Interactive Control command,
type in help followed by the command, for example, help ibdev or
help set.
If you want to use device-level calls, open a device handle using ibdev.
The following example shows how you can use ibdev to open a device,
assign it to access board gpib0, choose a primary address of 6 with no
secondary address, set a timeout of 10 seconds, enable the END message
and disable the EOS mode;
:ibdev
enter
enter
enter
enter
enter
enter
board index: 0
primary address: 6
secondary address: 0
timeout: T10s
‘EOI on last byte’ flag: 1
end-of-string mode/byte: 0
ud0:
NI-488.2M User Manual for Windows 95/Windows NT
6-2
© National Instruments Corporation
Chapter 6
Win32 Interactive Control Utility
If you enter a command and no parameters, you are automatically
prompted for the necessary arguments. If you already know the required
arguments, you can enter them from the command line, as follows:
:ibdev 0 6 0 T10s 1 0
ud0:
The new prompt, ud0, represents a device-level handle that can be used
for further GPIB calls. To clear the device, use ibclr as follows:
ud0: ibclr
[0100] (cmpl)
To write data to the device, use ibwrt. Make sure that you refer to the
instrument user manual that came with your GPIB instrument for specific
command messages.
ud0: ibwrt
enter string: "*RST; VAC; AUTO; TRIGGER 2; *SRE 16"
[0100] (cmpl)
count: 35
or, equivalently:
ud0: ibwrt "*RST; VAC; AUTO; TRIGGER 2; *SRE 16"
[0100] (cmpl)
count: 35
To send a trigger, use ibtrg as follows:
ud0: ibtrg
[0100] (cmpl)
To read data from your device, use ibrd. The data that is read from the
instrument is displayed. For example, to read 18 bytes:
ud0: ibrd
enter byte count: 18
[0100] (cmpl)
count: 18
4e 44 43 56 20 30 30 30
2e 30 30 34 37 45 2b 30
0a 0a
© National Instruments Corporation
6-3
N D C V 0 0 0
. 0 0 4 7 E + 0
. .
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 6
Win32 Interactive Control Utility
or, equivalently:
ud0: ibrd 18
[0100] (cmpl)
count: 18
4e 44 43 56 20 30 30 30
2e 30 30 34 37 45 2b 30
0a 0a
N D C V 0 0 0
. 0 0 4 7 E + 0
. .
When you are finished communicating with the device, make sure you
put it offline using the ibonl command as follows:
ud0: ibonl 0
[0100] (cmpl)
:
This properly closes the device handle and the ud0 prompt is no longer
present.
Win32 Interactive Control Syntax
The following special rules apply to making calls from the interactive
control utility.
•
The ud or BoardId parameter is implied by the Interactive Control
prompt, therefore it is never included in the call.
•
The count parameter to functions is unnecessary because buffer
lengths are automatically determined by the interactive control
utility.
•
Function return values are handled automatically by the interactive
control utility. In addition to printing out the return ibsta value for
the function, it also prints other return values.
•
If you do not know what parameters are appropriate to pass to a
given function call, type in the function name and press <Enter>, and
the interactive control utility automatically prompts you for each
required parameter.
Number Syntax
You can enter numbers as hexadecimal or decimal integer.
Hexadecimal numbers—You must precede hex numbers by zero and x
(for example, 0xD).
NI-488.2M User Manual for Windows 95/Windows NT
6-4
© National Instruments Corporation
Chapter 6
Win32 Interactive Control Utility
Decimal numbers—Enter the number only.
String Syntax
You can enter strings as an ASCII character sequence, hex bytes, or
special symbols.
ASCII character sequence—You must enclose the entire sequence in
quotation marks.
Hex byte—You must use a backslash character and an x followed by the
hex value. For example, hex 40 is represented by \x40.
Special Symbols—Some instruments require special termination or
end-of-string (EOS) characters that indicate to the device that a
transmission has ended. The two most common EOS characters are \r
and \n. \r represents a carriage return character and \n represents a
linefeed character. You can use these special characters to insert the
carriage return and linefeed characters into a string, as in
"F3R5T1\r\n".
Address Syntax
Many of the NI-488.2 routines have an address or address list parameter.
An address is a 16-bit representation of the GPIB address of a device.
The primary address is stored in the low byte and the secondary address,
if any, is stored in the high byte. For example, a device at primary
address 6 and secondary address 0x67 has an address of 0x6706. A NULL
address is represented as 0xffff. An address list is represented by a
comma-separated list of addresses such as 1,2,3.
Win32 Interactive Control Commands
Tables 6-1 and 6-2 summarize the syntax of NI-488 functions in Win32
Interactive Control. Table 6-3 summarizes the syntax of NI-488.2
routines in Win32 Interactive Control. Table 6-4 summarizes the
auxiliary functions that you can use in Win32 Interactive Control. For
more information about the function parameters, use the online help
feature. If you enter only the function name, the Win32 Interactive
Control utility prompts you for parameters.
© National Instruments Corporation
6-5
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 6
Win32 Interactive Control Utility
Table 6-1. Syntax for Device-Level NI-488 Functions in Win32 Interactive Control
Syntax
Description
ibask option
Return configuration information where option is a mnemonic for a
configuration parameter
ibbna bname
Change access board of device where bname is symbolic name of new
board
ibclr
Clear specified device
ibconfig option
value
Alter configurable parameters where option is mnemonic for a
configuration parameter
ibdev BdIndx pad Open an unused device ibdev parameters are BdIndx pad sad tmo
sad tmo eot eos eot eos
ibeos v
Change/disable EOS message
ibeot v
Enable/disable END message
ibln pad sad
Check for presence of device on the GPIB at pad, sad
ibloc
Go to local
ibonl v
Place device online or offline
ibpad v
Change primary address
ibpct
Pass control
ibppc v
Parallel poll configure
ibrd count
Read data where count is the bytes to read
ibrda count
Read data asynchronously where count is the bytes to read
ibrdf flname
Read data to file where flname is pathname of file to read
ibrpp
Conduct a parallel poll
ibrsp
Return serial poll byte
ibsad v
Change secondary address
ibstop
Abort asynchronous operation
ibtmo v
Change/disable time limit
ibtrg
Trigger selected device
ibwait mask
Wait for selected event where mask is a hex or decimal integer or a list of
mask bit mnemonics such as ibwait TIMO CMPL
ibwrt wrtbuf
Write data
ibwrta wrtbuf
Write data asynchronously
ibwrtf flname
Write data from a file where flname is pathname of file to write
NI-488.2M User Manual for Windows 95/Windows NT
6-6
© National Instruments Corporation
Chapter 6
Win32 Interactive Control Utility
Table 6-2. Syntax for Board-Level NI-488 Functions in Win32 Interactive Control
Syntax
ibask option
ibcac v
ibcmd cmdbuf
ibcmda cmdbuf
ibconfig option
value
ibdma v
ibeos v
ibeot v
ibfind udname
ibgts v
ibist v
iblines
ibln pad sad
ibloc
ibonl v
ibpad v
ibppc v
ibrd count
ibrda count
ibrdf flname
ibrpp
ibrsc v
ibrsv v
ibsad v
ibsic
ibsre v
ibstop
ibtmo v
Description
Return configuration information where option is a mnemonic for a
configuration parameter
Become active Controller
Send commands
Send commands asynchronously
Alter configurable parameters where option is mnemonic for a
configuration parameter
Enable/disable DMA
Change/disable EOS message
Enable/disable END message
Return unit descriptor where udname is the symbolic name of board (for
example, gpib0)
Go from Active Controller to standby
Set/clear ist
Read the state of all GPIB control lines
Check for presence of device on the GPIB at pad, sad
Go to local
Place device online or offline
Change primary address
Parallel poll configure
Read data where count is the bytes to read
Read data asynchronously where count is the bytes to read
Read data to file where flname is pathname of file to read
Conduct a parallel poll
Request/release system control
Request service
Change secondary address
Send interface clear
Set/clear remote enable line
Abort asynchronous operation
Change/disable time limit
(continues)
© National Instruments Corporation
6-7
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 6
Win32 Interactive Control Utility
Table 6-2. Syntax for Board-Level NI-488 Functions in Win32 Interactive Control (Continued)
Syntax
ibwait mask
ibwrt wrtbuf
ibwrta wrtbuf
ibwrtf flname
Description
Wait for selected event where mask is a hex or decimal integer or a list of
mask bit mnemonics such as ibwait TIMO CMPL
Write data
Write data asynchronously
Write data from a file where flname is pathname of file to write
Table 6-3. Syntax for NI-488.2 Routines in Win32 Interactive Control
Routine Syntax
AllSpoll addrlist
DevClear address
DevClearList addrlist
EnableLocal addrlist
EnableRemote addrlist
FindLstn padlist limit
FindRQS addrlist
PassControl address
PPoll
PPollConfig address dataline
lineSense
PPollUnconfig addrlist
RcvRespMsg count termination
ReadStatusByte address
Receive address count termination
ReceiveSetup address
ResetSys addrlist
Send address buffer eotmode
SendCmds buffer
SendDataBytes buffer eotmode
SendIFC
SendList addrlist buffer eotmode
SendLLO
Description
Serial poll multiple devices
Clear a device
Clear multiple devices
Enable local control
Enable remote control
Find all Listeners
Find device asserting SRQ
Pass control to a device
Parallel poll devices
Configure device for parallel poll
Unconfigure device for parallel poll
Receive response message
Serial poll a device
Receive data from a device
Receive setup
Reset multiple devices
Send data to a device
Send command bytes
Send data bytes
Send interface clear
Send data to multiple devices
Put devices in local lockout
(continues)
NI-488.2M User Manual for Windows 95/Windows NT
6-8
© National Instruments Corporation
Chapter 6
Win32 Interactive Control Utility
Table 6-3. Syntax for NI-488.2 Routines in Win32 Interactive Control (Continued)
Routine Syntax
Description
Send setup
Put devices in remote with lockout state
Test for service request
Cause multiple devices to perform self-tests
Trigger a device
Trigger multiple devices
Wait for service request
SendSetup addrlist
SetRWLS addrlist
TestSRQ
TestSys addrlist
Trigger address
TriggerList addrlist
WaitSRQ
Table 6-4. Auxiliary Functions in Win32 Interactive Control
Function
set udname
set 488.2 v
help
help option
Description
Select active device or board where udname is the
symbolic name of the new device or board (for
example, dev1 or gpib0). Call ibfind or ibdev
initially to open each device or board.
Enter 488.2 mode for board v
Display Win32 interactive utility online help.
Display help information on option, where
option is any NI-488, NI-488.2, or auxiliary call,
for example help ibwrt or help set.
!
Repeat previous function.
-
Turn OFF display.
+
Turn ON display.
n * function
n * !
$ filename
Execute function n times where function
represents the correct Win32 Interactive Control
function syntax.
Execute previous function n times.
Execute indirect file where filename is the
pathname of a file that contains Win32 Interactive
Control functions to be executed.
buffer option Set type of display used for buffers. Valid options
are full, brief, ascii, and off. Default is full.
q
© National Instruments Corporation
Exit or quit.
6-9
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 6
Win32 Interactive Control Utility
Status Word
In Win32 Interactive Control, all NI-488 functions (except ibfind and
ibdev) and NI-488.2 routines return the status word ibsta in two
forms: a hex value in square brackets and a list of mnemonics in
parentheses. In the following example, the status word is on the second
line, showing that the write operation completed successfully:
ud0: ibwrt "f2t3x"
[0100] (cmpl)
count: 5
ud0:
For more information about the status word, refer to Chapter 3,
Developing Your Application.
Error Information
If an NI-488 function or NI-488.2 routine completes with an error,
Win32 Interactive Control displays the relevant error mnemonic. In the
following example, an error condition EBUS has occurred during a data
transfer.
ud0: ibwrt "f2t3x"
[8100] (err cmpl)
error: EBUS
count: 1
ud0:
In this example, the addressing command bytes could not be transmitted
to the device. This indicates that either the device ud0 represents is
powered off, or the GPIB cable is disconnected.
For a detailed list of the error codes and their meanings, refer to
Chapter 4, Debugging Your Application.
Count Information
When an I/O function completes, Win32 Interactive Control displays the
actual number of bytes sent or received, regardless of the existence of an
error condition.
NI-488.2M User Manual for Windows 95/Windows NT
6-10
© National Instruments Corporation
Chapter 6
Win32 Interactive Control Utility
If one of the addresses in an address list of an NI-488.2 routine is invalid,
then the error is EARG and Win32 Interactive Control displays the index
of the invalid address as the count.
The count has a different meaning depending on which NI-488 function
or NI-488.2 routine is called. Refer to the function descriptions in the
online help or NI-488.2M Function Reference Manual for Win32 for the
correct interpretation of the count return.
© National Instruments Corporation
6-11
NI-488.2M User Manual for Windows 95/Windows NT
Chapter
7
GPIB Programming
Techniques
This chapter describes techniques for using some NI-488 functions and
NI-488.2 routines in your application.
For more detailed information about each function or routine, refer to the
online help or NI-488.2M Function Reference Manual for Win32.
Termination of Data Transfers
GPIB data transfers are terminated either when the GPIB EOI line is
asserted with the last byte of a transfer or when a preconfigured
end-of-string (EOS) character is transmitted. By default, the NI-488.2M
driver asserts EOI with the last byte of writes and the EOS modes are
disabled.
You can use the ibeot function to enable or disable the end of
transmission (EOT) mode. If EOT mode is enabled, the NI-488.2M
driver asserts the GPIB EOI line when the last byte of a write is sent out
on the GPIB. If it is disabled, the EOI line is not asserted with the last
byte of a write.
You can use the ibeos function to enable, disable, or configure the EOS
modes. EOS mode configuration includes the following information:
•
A 7-bit or 8-bit EOS byte
•
EOS comparison method–This indicates whether the EOS byte has
seven or eight significant bits. For a 7-bit EOS byte, the eighth bit of
the EOS byte is ignored.
•
EOS write method–If this is enabled, the NI-488.2M driver
automatically asserts the GPIB EOI line when the EOS byte is
written to the GPIB. If the buffer passed into an ibwrt call contains
five occurrences of the EOS byte, the EOI line is asserted as each of
the five EOS bytes are written to the GPIB. If an ibwrt buffer does
not contain an occurrence of the EOS byte, the EOI line is not
© National Instruments Corporation
7-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
asserted (unless the EOT mode is enabled, in which case the EOI
line is asserted with the last byte of the write).
•
EOS read method–If this is enabled, the NI-488.2M driver
terminates ibrd, ibrda, and ibrdf calls when the EOS byte is
detected on the GPIB or when the GPIB EOI line is asserted or when
the specified count is reached. If the EOS read method is disabled,
ibrd, ibrda, and ibrdf calls terminate only when the GPIB EOI
line is asserted or the specified count has been read.
You can use the ibconfig function to configure the software to inform
you whether or not the GPIB EOI line was asserted when the EOS byte
was read in. Use the IbcEndBitIsNormal option to configure the
software to report only the END bit in ibsta when the GPIB EOI line is
asserted. By default, the NI-488.2M driver reports END in ibsta when
either the EOS byte is read in or the EOI line is asserted during a read.
High-Speed Data Transfers (HS488)
National Instruments has designed a high-speed data transfer protocol for
IEEE 488 called HS488. This protocol increases performance for GPIB
reads and writes up to 8 Mbytes/s, depending on your system.
HS488 is a superset of the IEEE 488 standard; thus, you can mix
IEEE 488.1, IEEE 488.2, and HS488 devices in the same system. If
HS488 is enabled, the TNT4882C hardware implements high-speed
transfers automatically when communicating with HS488 instruments. If
you attempt to enable HS488 on a GPIB board that does not have the
TNT4882C hardware, the error ECAP is returned.
Enabling HS488
To enable HS488 for your GPIB board, use the ibconfig function
(option IbcHSCableLength). The value passed to ibconfig should
specify the number of meters of cable in your GPIB configuration. If you
specify a cable length that is much smaller than what you actually use,
the transferred data could become corrupted. If you specify a cable length
longer than what you actually use, the data is transferred successfully, but
more slowly than if you specified the correct cable length.
In addition to using ibconfig to configure your GPIB board for HS488,
the Controller-In-Charge must send out GPIB command bytes (interface
messages) to configure other devices for HS488 transfers.
NI-488.2M User Manual for Windows 95/Windows NT
7-2
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
If you are using device-level calls, the NI-488.2M software automatically
sends the HS488 configuration message to devices. If you enabled the
HS488 protocol in the GPIB Configuration Utility, the NI-488.2M
software sends out the HS488 configuration message when you use
ibdev to bring a device online. If you call ibconfig to change the
GPIB cable length, the NI-488.2M software sends out the HS488
message again the next time you call a device-level function.
If you are using board-level functions or NI-488.2 routines and you want
to configure devices for high-speed, you must send the HS488
configuration messages using ibcmd or SendCmds. The HS488
configuration message is made up of two GPIB command bytes. The first
byte, the Configure Enable (CFE) message (hex 1F), places all HS488
devices into their configuration mode. Non-HS488 devices should ignore
this message. The second byte is a GPIB secondary command that
indicates the number of meters of cable in your system. It is called the
Configure (CFGn) message. Because HS488 can operate only with cable
lengths of 1 to 15 meters, only CFGn values of 1 through 15 (hex 61
through 6F) are valid. If the cable length was configured properly in the
GPIB Configuration Utility, you can determine how many meters of
cable are in your system by calling ibask (option IbaHSCableLength)
in your application. For CFE and CFGn messages, refer to the online
help or Appendix A, Multiline Interface Messages, in the NI-488.2M
Function Reference Manual for Win32.
System Configuration Effects on HS488
Maximum HS488 data transfer rates can be limited by your host
computer and GPIB system setup. For example, when using a
PC-compatible computer with PCI bus, the maximum obtainable trasfer
rate is 8 Mbytes/s, but when using a PC-compatible computer with ISA
bus, the maximum transfer rate obtainable is only 2 Mbytes/s. The same
IEEE 488 cabling constraints for a 350 ns T1 delay apply to HS488. As
you increase the amount of cable in your GPIB configuration, the
maximum data transfer rate using HS488 decreases. For example, two
HS488 devices connected by two meters of cable can transfer data faster
than four HS488 devices connected by four meters of cable.
© National Instruments Corporation
7-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
Waiting for GPIB Conditions
You can use the ibwait function to obtain the current ibsta value or to
suspend your application until a specified condition occurs on the GPIB.
If you use ibwait with a parameter of zero, it immediately updates
ibsta and returns. If you want to use ibwait to wait for one or more
events to occur, then pass a wait mask to the function. The wait mask
should always include the TIMO event; otherwise, your application is
suspended indefinitely until one of the wait mask events occurs.
Asynchronous Event Notification in Win32 GPIB
Applications
Win32 GPIB applications can asynchronously receive event notifications
using the ibnotify function. This function is useful if you want your
application to be notified asynchronously about the occurrence of one or
more GPIB events. For example, you might choose to use ibnotify if
your application only needs to interact with your GPIB device when it is
requesting service. After calling ibnotify, your application does not
need to check the status of your GPIB device. Then when your GPIB
device requests service, the GPIB driver automatically notifies your
application that the event has occurred by invoking a callback function.
The callback function is registered with the GPIB driver when the
ibnotify call is made.
Calling the ibnotify Function
ibnotify has the following function prototype:
ibnotify (
int ud,
// unit descriptor
int mask, // bit mask of GPIB events
GpibNotifyCallback_t Callback,
// callback function
void * RefData
// user-defined reference data
)
Both board-level and device-level ibnotify calls are supported by the
GPIB driver. If you are using device-level calls, you call ibnotify with
a device handle for ud and a mask of RQS, CMPL, END, or TIMO. If
you are using board-level calls, you call ibnotify with a board handle
for ud and a mask of any values except RQS or ERR. Note that the
NI-488.2M User Manual for Windows 95/Windows NT
7-4
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
ibnotify mask bits are identical to the ibwait mask bits. In the
example of waiting for your GPIB device to request service, you might
choose to pass ibnotify a mask with RQS (for device-level) or SRQI
(for board-level).
The Callback function that you register with the ibnotify call is
invoked by the GPIB driver when one or more of the mask bits passed to
ibnotify is TRUE. The function prototype of the callback is as follows:
int __stdcall Callback (
int ud,
// unit descriptor
int ibsta,
// ibsta value
int iberr,
// iberr value
long ibcntl, // ibcntl value
void * RefData
// user-defined reference data
)
The callback function is passed a unit descriptor, the current values of the
GPIB global variables, and the user-defined reference data that was
passed to the original ibnotify call. The GPIB driver interprets the
return value for the callback as a mask value that is used to automatically
rearm the callback if it is non-zero. For a complete description of
ibnotify, refer to the online help or NI-488.2M Function Reference
Manual for Win32.
Note:
The ibnotify Callback is executed in a separate thread of
execution from the rest of your application. If your application
might be performing other GPIB operations while it is using
ibnotify, you should use the per-thread GPIB globals that are
provided by the ThreadIbsta, ThreadIberr, ThreadIbcnt, and
ThreadIbcntl functions that are described in the Writing
Multithreaded Win32 GPIB Applications section of this chapter. In
addition, if your application needs to share global variables with
the Callback, you should use a synchronization primitive (for
example, semaphore) to protect access to any globals. For more
information on the use of synchronization primitives, refer to the
documentation on using Win32 synchronization objects that came
with your development tools.
ibnotify Programming Example
The following code is an example of how you might use ibnotify in
your application. Assume that your GPIB device is a multimeter that you
program to acquire a reading by sending it “SEND DATA”. The
© National Instruments Corporation
7-5
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
multimeter requests service when it has a reading ready, and each reading
is a floating point value.
In this example, globals are shared by the Callback thread and the main
thread, and the access of the globals is not protected by synchronization.
In this case, synchronization of access to these globals is not necessary
because of the way they are used in the application: only a single thread
is writing the global values and that thread always just adds information
(increases the count or adds another reading to the array of floats).
int __stdcall MyCallback (int ud, int LocalIbsta, int LocalIberr,
long LocalIbcntl, void *RefData);
int ReadingsTaken = 0;
float Readings[1000];
BOOL DeviceError = FALSE;
int main()
{
int ud;
//
//
//
//
//
//
ud
Assign a unique identifier to the device and store it in the
variable ud. ibdev opens an available device and assigns it to
access GPIB0 with a primary address of 1, a secondary address of 0,
a timeout of 10 seconds, the END message enabled, and the EOS mode
disabled. If ud is less than zero, then print an error message
that the call failed and exit the program.
= ibdev (0, // connect board
1, // primary address of GPIB device
0,
// secondary address of GPIB device
T10s, // 10 second I/O timeout
1, // EOT mode turned on
0);
// EOS mode disabled
if (ud < 0) {
printf ("ibdev failed.\n");
return 0;
}
// Issue a request to the device to send the data. If the ERR bit
// is set in ibsta, then print an error message that the call failed
// and exit the program.
ibwrt (ud, "SEND DATA", 9L);
if (ibsta & ERR) {
printf ("unable to write to device.\n");
return 0;
}
NI-488.2M User Manual for Windows 95/Windows NT
7-6
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
// set up the asynchronous event notification on RQS
ibnotify (ud, RQS, MyCallback, NULL);
if (ibsta & ERR) {
printf ("ibnotify call failed.\n");
return 0;
}
while ((ReadingsTaken < 1000) && !(DeviceError)) {
// Your application does useful work here. For example, it
// might process the device readings or do any other useful work.
}
// disable notification
ibnotify (ud, 0, NULL, NULL);
// Call the ibonl function to disable the hardware and software.
ibonl (ud, 0);
return 1;
}
int __stdcall MyCallback (int LocalUd, int LocalIbsta, int LocalIberr,
long LocalIbcntl, void *RefData)
{
char SpollByte;
char ReadBuffer[40];
// If the ERR bit is set in LocalIbsta, then print an error message
// and return.
if (LocalIbsta & ERR) {
printf ("GPIB error %d has occurred. No more callbacks.\n",
LocalIberr);
DeviceError = TRUE;
return 0;
}
// Read the serial poll byte from the device. If the ERR bit is set
// in ibsta, then print an error message and return.
LocalIbsta = ibrsp (LocalUd, &SpollByte);
if (LocalIbsta & ERR) {
printf ("ibrsp failed. No more callbacks.\n");
DeviceError = TRUE;
return 0;
}
// If the returned status byte equals the expected response, then
// the device has valid data to send; otherwise it has a fault
// condition to report.
© National Instruments Corporation
7-7
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
if (spr != expectedResponse)
{
printf("Device returned invalid response. Status byte = 0x%x\n",
spr);
DeviceError = TRUE;
return 0;
}
// Read the data from the device. If the ERR bit is set in ibsta,
// then print an error message and return.
LocalIbsta = ibrd (LocalUd, ReadBuffer, 40L);
if (LocalIbsta & ERR) {
printf ("ibrd failed. No more callbacks.\n");
DeviceError = TRUE;
return 0;
}
// Convert the data into a numeric value.
sscanf (ReadBuffer, "%f", &Readings[ReadingsTaken]);
ReadingsTaken += 1;
if (ReadingsTaken >= 1000) {
return 0;
}
else {
// Issue a request to the device to send the data and rearm
// callback on RQS.
LocalIbsta = ibwrt (LocalUd, "SEND DATA", 9L);
if (LocalIbsta & ERR) {
printf ("ibwrt failed. No more callbacks.\n");
DeviceError = TRUE;
return 0;
}
else {
return RQS;
}
}
}
Writing Multithreaded Win32 GPIB Applications
If you are writing a multithreaded GPIB application and you plan to
make all of your GPIB calls from a single thread, you can safely continue
to use the traditional GPIB global variables (ibsta, iberr, ibcnt,
ibcntl). The GPIB global variables are defined on a per-process basis,
so each process accesses its own copy of the GPIB globals.
NI-488.2M User Manual for Windows 95/Windows NT
7-8
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
If you are writing a multithreaded GPIB application and you plan to
make GPIB calls from more than a single thread, you cannot safely
continue to use the traditional GPIB global variables without some form
of synchronization (for example, a semaphore). To understand why this
is true, take a look at the following example.
Assume that a process has two separate threads that make GPIB calls,
thread #1 and thread #2. Just as thread #1 is about to examine one of the
GPIB globals, it gets preempted and thread #2 is allowed to run.
Thread #2 proceeds to make several GPIB calls that automatically update
the GPIB globals. Later, when thread #1 is allowed to run, the GPIB
global that it is ready to examine is no longer in a known state and its
value is no longer reliable.
This example illustrates a well-known multithreading problem. It is
unsafe to access process-global variables from multiple threads of
execution. You can avoid this problem in two ways:
•
Use synchronization to protect access to process-global variables.
•
Do not use process-global variables.
If you choose to implement the synchronization solution, you must
ensure that code that makes GPIB calls and examines the GPIB globals
modified by a GPIB call is protected by a synchronization primitive. For
example, each thread might acquire a semaphore before making a GPIB
call and then release the semaphore after examining the GPIB globals
modified by the call. For more information on the use of synchronization
primitives, refer to the documentation on using Win32 synchronization
objects that came with your development tools.
If you choose not to use process-global variables, you can access
per-thread copies of the GPIB global variables using a special set of
GPIB calls. Whenever a thread makes a GPIB call, the driver keeps a
private copy of the GPIB globals for that thread. The driver keeps a
separate private copy for each thread. The following code shows the set
of functions you can use to access these per-thread GPIB global
variables.
int ThreadIbsta();
int ThreadIberr();
int ThreadIbcnt();
long ThreadIbcntl();
//
//
//
//
return
return
return
return
thread-specific
thread-specific
thread-specific
thread-specific
ibsta
iberr
ibcnt
ibcntl
In your application, instead of accessing the per-process GPIB globals,
substitute a call to get the corresponding per-thread GPIB global. For
example, the line of code
© National Instruments Corporation
7-9
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
if (ibsta & ERR)
could be replaced by
if (ThreadIbsta() & ERR)
A quick way to convert your application to use per-thread GPIB globals,
is to add the following #define lines at the top of your C file:
#define
#define
#define
#define
Note:
ibsta
iberr
ibcnt
ibcntl
ThreadIbsta()
ThreadIberr()
ThreadIbcnt()
ThreadIbcntl()
If you are using ibnotify in your application (see the
Asynchronous Event Notification in Win32 GPIB Applications
section of this chapter) the ibnotify callback is executed in a
separate thread that is created by the GPIB driver. Therefore, if
your application makes GPIB calls from the ibnotify callback
function and makes GPIB calls from other places, you must use the
ThreadIbsta, ThreadIberr, ThreadIbcnt, and ThreadIbcntl
functions described in this section, instead of the per process GPIB
globals.
Device-Level Calls and Bus Management
The NI-488 device-level calls are designed to perform all of the GPIB
management for your application. However, the NI-488.2M driver can
handle bus management only when the GPIB interface board is CIC
(Controller-In-Charge). Only the CIC is able to send command bytes to
the devices on the bus to perform device addressing or other bus
management activities.
NI-488.2M User Manual for Windows 95/Windows NT
7-10
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
Use one of the following methods to make your GPIB board the CIC:
•
If your GPIB board is configured as the System Controller (default),
it automatically makes itself the CIC by asserting the IFC line the
first time you make a device-level call.
•
If your setup includes more than one Controller, or if your GPIB
interface board is not configured as the System Controller, use the
CIC Protocol method. To use the protocol, issue the ibconfig
function (option IbcCICPROT) or use the GPIB Configuration
Utility to activate the CIC protocol. If the interface board is not CIC,
and you make a device-level call with the CIC Protocol enabled, the
following sequence occurs:
1.
The GPIB interface board asserts the SRQ line.
2.
The current CIC serial polls the board.
3.
The interface board returns a response byte of hex 42.
4.
The current CIC passes control to the GPIB board.
If the current CIC does not pass control, the NI-488.2M driver returns the
ECIC error code to your application. This error can occur if the current
CIC does not understand the CIC Protocol. If this happens, you could
send a device-specific command requesting control for the GPIB board.
Then use a board-level ibwait command to wait for CIC.
Talker/Listener Applications
Although designed for Controller-In-Charge applications, you can also
use the NI-488.2M software in most non-Controller situations. These
situations are known as Talker/Listener applications because the interface
board is not the GPIB Controller.
A Talker/Listener application typically uses ibwait with a mask of 0 to
monitor the status of the interface board. Then, based on the status bits
set in ibsta, the application takes whatever action is appropriate. For
example, the application could monitor the status bits TACS (Talker
Active State) and LACS (Listener Active State) to determine when to
send data to or receive data from the Controller. The application could
also monitor the DCAS (Device Clear Active State) and DTAS (Device
Trigger Active State) bits to determine if the Controller has sent the
device clear (DCL or SDC) or trigger (GET) messages to the interface
board. If the application detects a device clear from the Controller, it
© National Instruments Corporation
7-11
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
might reset the internal state of message buffers. If it detects a trigger
message from the Controller, the application might begin an operation
such as taking a voltage reading if the application is actually acting as a
voltmeter.
Serial Polling
You can use serial polling to obtain specific information from GPIB
devices when they request service. When the GPIB SRQ line is asserted,
it signals the Controller that a service request is pending. The Controller
must then determine which device asserted the SRQ line and respond
accordingly. The most common method for SRQ detection and servicing
is the serial poll. This section describes how you can set up your
application to detect and respond to service requests from GPIB devices.
Service Requests from IEEE 488 Devices
IEEE 488 devices request service from the GPIB Controller by asserting
the GPIB SRQ line. When the Controller acknowledges the SRQ, it serial
polls each open device on the bus to determine which device requested
service. Any device requesting service returns a status byte with bit 6 set
and then unasserts the SRQ line. Devices not requesting service return a
status byte with bit 6 cleared. Manufacturers of IEEE 488 devices use
lower order bits to communicate the reason for the service request or to
summarize the state of the device.
Service Requests from IEEE 488.2 Devices
The IEEE 488.2 standard refined the bit assignments in the status byte. In
addition to setting bit 6 when requesting service, IEEE 488.2 devices also
use two other bits to specify their status. Bit 4, the Message Available bit
(MAV), is set when the device is ready to send previously queried data.
Bit 5, the Event Status bit (ESB), is set if one or more of the enabled
IEEE 488.2 events occurs. These events include power-on, user request,
command error, execution error, device dependent error, query error,
request control, and operation complete. The device can assert SRQ when
ESB or MAV are set, or when a manufacturer-defined condition occurs.
NI-488.2M User Manual for Windows 95/Windows NT
7-12
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
Automatic Serial Polling
You can enable automatic serial polling if you want your application to
conduct a serial poll automatically any time the SRQ line is asserted. The
autopolling procedure occurs as follows:
1.
To enable autopolling, use the GPIB Configuration Utility or the
configuration function, ibconfig with option IbcAUTOPOLL.
(Autopolling is enabled by default.)
2.
When the SRQ line is asserted, the driver automatically serial polls
the open devices.
3.
Each positive serial poll response (bit 6 or hex 40 is set) is stored in a
queue associated with the device that sent it. The RQS bit of the
device status word, ibsta, is set.
4.
The polling continues until SRQ is unasserted or an error condition
is detected.
5.
To empty the queue, use the ibrsp function. ibrsp returns the first
queued response. Other responses are read in first-in-first-out (FIFO)
fashion. If the RQS bit of the status word is not set when ibrsp is
called, a serial poll is conducted and returns whatever response is
received. You should empty the queue as soon as an automatic serial
poll occurs, because responses might be discarded if the queue is
full.
6.
If the RQS bit of the status word is still set after ibrsp is called, the
response byte queue contains at least one more response byte. If this
happens, you should continue to call ibrsp until RQS is cleared.
Stuck SRQ State
If autopolling is enabled and the GPIB interface board detects an SRQ,
the driver serial polls all open devices connected to that board. The serial
poll continues until either SRQ unasserts or all the devices have been
polled.
If no device responds positively to the serial poll, or if SRQ remains in
effect because of a faulty instrument or cable, a stuck SRQ state is in
effect. If this happens during an ibwait for RQS, the driver reports the
ESRQ error. If the stuck SRQ state happens, no further polls are
attempted until an ibwait for RQS is made. When ibwait is issued, the
stuck SRQ state is terminated and the driver attempts a new set of serial
polls.
© National Instruments Corporation
7-13
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
Autopolling and Interrupts
If autopolling and interrupts are both enabled, the NI-488.2M software
can perform autopolling after any device-level NI-488 call as long as no
GPIB I/O is currently in progress. In this case, an automatic serial poll
can occur even when your application is not making any calls to the
NI-488.2M software. Autopolling can also occur when a device-level
ibwait for RQS is in progress. Autopolling is not allowed whenever an
application calls a board-level NI-488 function or any NI-488.2 routine,
or the stuck SRQ (ESRQ) condition occurs.
Note:
The NI-488.2M software for Windows 95 and Windows NT does
not function properly if interrupts are disabled.
SRQ and Serial Polling with NI-488 Device Functions
You can use the device-level NI-488 function ibrsp to conduct a serial
poll. ibrsp conducts a single serial poll and returns the serial poll
response byte to the application. If automatic serial polling is enabled, the
application can use ibwait to suspend program execution until RQS
appears in the status word, ibsta. The program can then call ibrsp to
obtain the serial poll response byte.
The following example illustrates the use of the ibwait and ibrsp
functions in a typical SRQ servicing situation when automatic serial
polling is enabled.
#include "decl-32.h"
char GetSerialPollResponse ( int DeviceHandle )
{
char SerialPollResponse = 0;
ibwait ( DeviceHandle, TIMO | RQS );
if ( ibsta & RQS ) {
printf ( "Device asserted SRQ.\n" );
/* Use ibrsp to retrieve the serial poll response. */
ibrsp ( DeviceHandle, &SerialPollResponse );
}
return SerialPollResponse;
}
NI-488.2M User Manual for Windows 95/Windows NT
7-14
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
SRQ and Serial Polling with NI-488.2 Routines
The NI-488.2M software includes a set of NI-488.2 routines that you can
use to conduct SRQ servicing and serial polling. Routines pertinent to
SRQ servicing and serial polling are AllSpoll, FindRQS,
ReadStatusByte, TestSRQ, and WaitSRQ.
AllSpoll can serial poll multiple devices with a single call. It places the
status bytes from each polled instrument into a predefined array. Then
you must check the RQS bit of each status byte to determine whether that
device requested service.
ReadStatusByte is similar to AllSpoll, except that it only serial polls
a single device. It is also analogous to the device-level NI-488 ibrsp
function.
FindRQS serial polls a list of devices until it finds a device that is
requesting service or until it has polled all of the devices on the list. The
routine returns the index and status byte value of the device requesting
service.
TestSRQ determines whether the SRQ line is asserted or unasserted, and
returns to the program immediately.
WaitSRQ is similar to TestSRQ, except that WaitSRQ suspends the
application until either SRQ is asserted or the timeout period is exceeded.
The following examples use NI-488.2 routines to detect SRQ and then
determine which device requested service. In these examples three
devices are present on the GPIB at addresses 3, 4, and 5, and the GPIB
interface is designated as bus index 0. The first example uses FindRQS to
determine which device is requesting service and the second example
uses AllSpoll to serial poll all three devices. Both examples use
WaitSRQ to wait for the GPIB SRQ line to be asserted.
Note:
Automatic serial polling is not used in these examples because you
cannot use it with NI-488.2 routines.
© National Instruments Corporation
7-15
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
Example 1: Using FindRQS
This example illustrates the use of FindRQS to find the first device that is
requesting service.
void GetASerialPollResponse ( char *DevicePad,
char *DeviceResponse )
{
char SerialPollResponse = 0;
int WaitResult;
Addr4882_t Addrlist[4] = {3,4,5,NOADDR};
WaitSRQ (0, &WaitResult);
if (WaitResult) {
printf ("SRQ is asserted.\n");
FindRQS ( 0, AddrList, &SerialPollResponse );
if (!(ibsta & ERR)) {
printf ("Device at pad %x returned byte
%x.\n", AddrList[ibcnt],(int)
SerialPollResponse);
*DevicePad = AddrList[ibcnt];
*DeviceResponse = SerialPollResponse;
}
}
return;
}
Example 2: Using AllSpoll
This example illustrates the use of AllSpoll to serial poll three devices
with a single call.
void GetAllSerialPollResponses ( Addr4882_t
AddrList[], short ResponseList[] )
{
int WaitResult;
WaitSRQ (0, &WaitResult);
if ( WaitResult ) {
printf ( "SRQ is asserted.\n" );
AllSpoll ( 0, AddrList, ResponseList );
if (!(ibsta & ERR)) {
for (i = 0; AddrList[i] != NOADDR; i++) {
printf ("Device at pad %x returned byte
%x.\n", AddrList[i], ResponseList[i] );
}
}
}
return;
}
NI-488.2M User Manual for Windows 95/Windows NT
7-16
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
Parallel Polling
Although parallel polling is not widely used, it is a useful method for
obtaining the status of more than one device at the same time. The
advantage of parallel polling is that a single parallel poll can easily check
up to eight individual devices at once. In comparison, eight separate
serial polls would be required to check eight devices for their serial poll
response bytes. The value of the individual status bit (ist) determines
the parallel poll response.
Implementing a Parallel Poll
You can implement parallel polling with either NI-488 functions or
NI-488.2 routines. If you use NI-488.2 routines to execute parallel polls,
you do not need extensive knowledge of the parallel polling messages.
However, you should use the NI-488 functions for parallel polling when
the GPIB board is not the Controller and must configure itself for a
parallel poll and set its own individual status bit (ist).
Parallel Polling with NI-488 Functions
Follow these steps to implement parallel polling using NI-488 functions.
Each step contains example code.
1.
Configure the device for parallel polling using the ibppc function,
unless the device can configure itself for parallel polling.
ibppc requires an 8-bit value to designate the data line number, the
ist sense, and whether or not the function configures or
unconfigures the device for the parallel poll. The bit pattern is as
follows:
0 1 1 E S D2 D1 D0
E is 1 to disable parallel polling and 0 to enable parallel polling for
that particular device.
S is 1 if the device is to assert the assigned data line when ist = 1,
and 0 if the device is to assert the assigned data line when ist = 0.
D2 through D0 determine the number of the assigned data line. The
physical line number is the binary line number plus one. For
example, DIO3 has a binary bit pattern of 010.
The following example code configures a device for parallel polling
using NI-488 functions. The device asserts DIO7 if its ist = 0.
In this example, the ibdev command is used to open a device that
has a primary address of 3, has no secondary address, has a timeout
© National Instruments Corporation
7-17
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 7
GPIB Programming Techniques
of 3 s, asserts EOI with the last byte of a write operation, and has
EOS characters disabled.
The following call configures the device to respond to the poll on
DIO7 and to assert the line in the case when its ist is 0. Pass the
binary bit pattern, 0110 0110 or hex 66, to ibppc.
#include "decl-32.h"
char ppr;
dev = ibdev(0,3,0,T3s,1,0);
ibppc(dev, 0x66);
If the GPIB interface board configures itself for a parallel poll, you
should still use the ibppc function. Pass the board index or a board
unit descriptor value as the first argument in ibppc. In addition, if
the individual status bit (ist) of the board needs to be changed, use
the ibist function.
In the following example, the GPIB board is to configure itself to
participate in a parallel poll. It asserts DIO5 when ist = 1 if a
parallel poll is conducted.
ibppc(0, 0x6C);
ibist(0, 1);
2.
Conduct the parallel poll using ibrpp and check the response for a
certain value. The following example code performs the parallel poll
and compares the response to hex 10, which corresponds to DIO5. If
that bit is set, the ist of the device is 1.
ibrpp(dev, &ppr);
if (ppr & 0x10) printf("ist = 1\n");
3.
Unconfigure the device for parallel polling with ibppc. Notice that
any value having the parallel poll disable bit set (bit 4) in the bit
pattern disables the configuration, so you can use any value between
hex 70 and 7E.
ibppc(dev, 0x70);
Parallel Polling with NI-488.2 Routines
Follow these steps to implement parallel polling using NI-488.2 routines.
Each step contains example code.
1.
Configure the device for parallel polling using the PPollConfig
routine, unless the device can configure itself for parallel polling.
The following example configures a device at address 3 to assert
data line 5 (DIO5) when its ist value is 1.
NI-488.2M User Manual for Windows 95/Windows NT
7-18
© National Instruments Corporation
Chapter 7
GPIB Programming Techniques
#include "decl-32.h"
char response;
Addr4882_t AddressList[2];
/* The following command clears the GPIB.
*/
SendIFC(0);
/* The value of sense is compared with the ist bit
of the device and determines whether the data
line is asserted.
*/
PPollConfig(0,3,5,1);
2.
Conduct the parallel poll using PPoll, store the response, and check
the response for a certain value. In the following example, because
DIO5 is asserted by the device if ist = 1, the program checks bit 4
(hex 10) in the response to determine the value of ist.
PPoll(0, &response);
/* If response has bit 4 (hex 10) set, the ist bit
of the device at that time is equal to 1. If
it does not appear, the ist bit is equal to 0.
Check the bit in the following statement. */
if (response & 0x10) {
printf("The ist equals 1.\n");
}
else {
printf("The ist equals 0.\n");
}
3.
Unconfigure the device for parallel polling using the
PPollUnconfig routine as shown in the following example. In this
example, the NOADDR constant must appear at the end of the array to
signal the end of the address list. If NOADDR is the only value in the
array, all devices receive the parallel poll disable message.
AddressList[0] = 3;
AddressList[1] = NOADDR;
PPollUnconfig(0, AddressList);
© National Instruments Corporation
7-19
NI-488.2M User Manual for Windows 95/Windows NT
Chapter
GPIB Configuration Utility
8
This chapter contains a description of the GPIB Configuration utility you
can use to configure your NI-488.2M software.
Overview
The Windows 95 GPIB Configuration utility is integrated into the
Windows 95 Device Manager. The Windows NT GPIB Configuration
utility is integrated into the Windows NT Control Panel. You can use the
GPIB Configuration utility to view or modify the configuration of your
GPIB interface boards. You can also use it to view or modify the GPIB
device templates, which provide compatibility with older applications.
The online help includes all of the information that you need to properly
configure the NI-488.2M software.
In most cases, you should use the GPIB Configuration utility only to
change the hardware configuration of your GPIB interface boards. To
change the GPIB characteristics of your boards and the configuration of
the device templates, use the ibconfig function in your application. If
your application uses ibconfig whenever it needs to modify a
configuration option, it is able to run on any computer with the
appropriate NI-488.2M software, regardless of the configuration of that
computer.
Windows 95: Configuring the NI-488.2M Software
You do not need to configure the NI-488.2M software unless you are
using more than one GPIB interface in your system. If you are using
more than one interface, you should configure the NI-488.2M software to
associate a logical name (gpib0, gpib1, and so on) with each physical
GPIB interface.
© National Instruments Corporation
8-1
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 8
GPIB Configuration Utility
Note:
GPIB Analyzer software settings are available through the GPIB
Analyzer application.
To configure the NI-488.2M software, follow these steps:
1.
Double-click on the System icon in the Control Panel, which can be
opened from the Settings selection of the Start menu.
2.
Select the Device Manager tab in the System Properties dialog box
that appears.
3.
Click on the View devices by type button at the top of the Device
Manager tab, and double-click on the National Instruments GPIB
Interfaces icon.
4.
Double-click on the particular interface type you want to configure
in the list of installed interfaces immediately below National
Instruments GPIB Interfaces. If an exclamation point or an X
appears next to the interface, there is a problem, and you should refer
to the Troubleshooting Windows 95 Device Manager Device Status
Codes section in Appendix C, Windows 95: Troubleshooting and
Common Questions, to resolve your problem before you continue.
The Resources tab provides information about the hardware
resources assigned to the GPIB interface, and the NI-488.2M
Settings tab provides information about the software configuration
for the GPIB interface.
5.
Use the Interface Name drop-down box to select a logical name
(GPIB0, GPIB1, and so on) for the GPIB interface. Repeat this
process for each interface you need to configure. Figure 8-1 shows
the NI-488.2M Settings tab for an AT-GPIB/TNT (PnP).
NI-488.2M User Manual for Windows 95/Windows NT
8-2
© National Instruments Corporation
Chapter 8
GPIB Configuration Utility
Figure 8-1. NI-488.2M Settings Tab for the AT-GPIB/TNT (PnP)
If you want to examine or modify the logical device templates for the
GPIB software, select the National Instruments GPIB Interfaces icon
from the Device Manager tab, and click on the Properties button. Select
the Device Templates tab to view the logical device templates, as shown
in Figure 8-2.
© National Instruments Corporation
8-3
NI-488.2M User Manual for Windows 95/Windows NT
Chapter 8
GPIB Configuration Utility
Figure 8-2. Device Templates Tab for the Logical Device Templates
Windows NT: Configuring the NI-488.2M Software
When you install the NI-488.2M software for Windows NT, the
installation program places the GPIB Configuration utility into your
Control Panel. To start the GPIB Configuration utility simply open your
Windows NT Control Panel and select the eagle icon.
Because you can use the GPIB Configuration utility to modify the
configuration of the NI-488.2M kernel drivers, you must be logged on to
Windows NT as the Administrator to make any changes with the
GPIB Configuration utility. If you start the GPIB Configuration utility
without Administrator privileges, it runs in read-only mode; you can
view the settings, but you cannot make changes.
NI-488.2M User Manual for Windows 95/Windows NT
8-4
© National Instruments Corporation
Chapter 8
GPIB Configuration Utility
The main GPIB Configuration dialog box appears containing a list of
the GPIB boards and device templates as shown in Figure 8-3.
Figure 8-3. Main Dialog Box in the GPIB Configuration Utility
If at any point you need more help, click on the Help button or press the
<F1> key. Either of these actions brings up the help screen, which gives
you more information about the current dialog box.
After you have finished configuring your GPIB boards and device
templates, click on the OK button to save the changes and exit. Click on
the Cancel button to exit without saving any of the changes you made.
After you click on the OK button, the GPIB Configuration utility asks
whether or not you want the changes to take effect immediately. If you
answer No, you must restart your system before the new settings can be
used. If you answer Yes, the GPIB Configuration utility attempts to
unload and reload the NI-488.2M software so that the software uses your
new settings. If the GPIB Configuration utility cannot unload the
software because it is being used by another application, it instructs you
to restart your computer.
If you need to unload the NI-488.2M software and prevent it from
reloading when you restart your computer, click on the Unload button. If
the GPIB Configuration utility cannot unload the NI-488.2M software, it
instructs you either to exit all GPIB-related applications, or to shut down
and restart your computer. If you want to use the software again after
unloading it, run the GPIB Configuration utility again and then click on
the OK button.
© National Instruments Corporation
8-5
NI-488.2M User Manual for Windows 95/Windows NT
Appendix
A
Status Word Conditions
This appendix gives a detailed description of the conditions reported in
the status word, ibsta.
For information about how to use ibsta in your application program,
refer to Chapter 3, Developing Your Application.
Each bit in ibsta can be set for device calls (dev), board calls (brd), or
both (dev, brd).
The following table shows the status word layout.
Bit
Mnemonic Pos.
ERR
TIMO
END
SRQI
RQS
CMPL
LOK
REM
CIC
ATN
TACS
LACS
DTAS
DCAS
© National Instruments Corporation
15
14
13
12
11
8
7
6
5
4
3
2
1
0
Hex
Value
Type
Description
8000
4000
2000
1000
800
100
80
40
20
10
8
4
2
1
dev, brd
dev, brd
dev, brd
brd
dev
dev, brd
brd
brd
brd
brd
brd
brd
brd
brd
GPIB error
Time limit exceeded
END or EOS detected
SRQ interrupt received
Device requesting service
I/O completed
Lockout State
Remote State
Controller-In-Charge
Attention is asserted
Talker
Listener
Device Trigger State
Device Clear State
A-1
NI-488.2M User Manual for Windows 95/Windows NT
Appendix A
Status Word Conditions
ERR (dev, brd)
ERR is set in the status word following any call that results in an error.
You can determine the particular error by examining the error variable
iberr. Appendix B, Error Codes and Solutions, describes error codes
that are recorded in iberr along with possible solutions. ERR is cleared
following any call that does not result in an error.
TIMO (dev, brd)
TIMO indicates that the timeout period has been exceeded. TIMO is set
in the status word following an ibwait or ibnotify call if the TIMO
bit of the mask parameter is set and the time limit expires. TIMO is also
set following any synchronous I/O functions (for example, ibcmd, ibrd,
ibwrt, Receive, Send, and SendCmds) if a timeout occurs during one
of these calls. TIMO is cleared in all other circumstances.
END (dev, brd)
END indicates either that the GPIB EOI line has been asserted or that the
EOS byte has been received, if the software is configured to terminate a
read on an EOS byte. If the GPIB board is performing a shadow
handshake as a result of the ibgts function, any other function can
return a status word with the END bit set if the END condition occurs
before or during that call. END is cleared when any I/O operation is
initiated.
Some applications might need to know the exact I/O read termination
mode of a read operation—EOI by itself, the EOS character by itself, or
EOI plus the EOS character. You can use the ibconfig function (option
IbcEndBitIsNormal) to enable a mode in which the END bit is set
only when EOI is asserted. In this mode if the I/O operation completes
because of the EOS character by itself, END is not set. The application
should check the last byte of the received buffer to see if it is the EOS
character.
NI-488.2M User Manual for Windows 95/Windows NT
A-2
© National Instruments Corporation
Appendix A
Status Word Conditions
SRQI (brd)
SRQI indicates that a GPIB device is requesting service. SRQI is set
whenever the GPIB board is CIC, the GPIB SRQ line is asserted, and the
automatic serial poll capability is disabled. SRQI is cleared either when
the GPIB board ceases to be the CIC or when the GPIB SRQ line is
unasserted.
RQS (dev)
RQS appears in the status word only after a device-level call and
indicates that the device is requesting service. RQS is set whenever one
or more positive serial poll response bytes have been received from the
device. A positive serial poll response byte always has bit 6 asserted.
Automatic serial polling must be enabled (it is enabled by default) for
RQS to automatically appear in ibsta. You can also wait for a device to
request service regardless of the state of automatic serial polling by
calling ibwait with a mask that contains RQS. Do not issue an ibwait
call on RQS for a device that does not respond to serial polls. Use ibrsp
to acquire the serial poll response byte that was received. RQS is cleared
when all of the stored serial poll response bytes have been reported to
you through the ibrsp function.
CMPL (dev, brd)
CMPL indicates the condition of I/O operations. It is set whenever an I/O
operation is complete. CMPL is cleared while the I/O operation is in
progress.
LOK (brd)
LOK indicates whether the board is in a lockout state. While LOK is set,
the EnableLocal routine or ibloc function is inoperative for that
board. LOK is set whenever the GPIB board detects that the Local
Lockout (LLO) message has been sent either by the GPIB board or by
another Controller. LOK is cleared when the System Controller unasserts
the Remote Enable (REN) GPIB line.
© National Instruments Corporation
A-3
NI-488.2M User Manual for Windows 95/Windows NT
Appendix A
Status Word Conditions
REM (brd)
REM indicates whether or not the board is in the remote state. REM is set
whenever the Remote Enable (REN) GPIB line is asserted and the GPIB
board detects that its listen address has been sent either by the GPIB
board or by another Controller. REM is cleared in the following
situations:
•
When REN becomes unasserted
•
When the GPIB board as a Listener detects that the Go to Local
(GTL) command has been sent either by the GPIB board or by
another Controller
•
When the ibloc function is called while the LOK bit is cleared in
the status word
CIC (brd)
CIC indicates whether the GPIB board is the Controller-In-Charge. CIC
is set when the SendIFC routine or ibsic function is executed either
while the GPIB board is System Controller or when another Controller
passes control to the GPIB board. CIC is cleared either when the GPIB
board detects Interface Clear (IFC) from the System Controller or when
the GPIB board passes control to another device.
ATN (brd)
ATN indicates the state of the GPIB Attention (ATN) line. ATN is set
whenever the GPIB ATN line is asserted, and it is cleared when the ATN
line is unasserted.
TACS (brd)
TACS indicates whether the GPIB board is addressed as a Talker. TACS
is set whenever the GPIB board detects that its talk address (and
secondary address, if enabled) has been sent either by the GPIB board
itself or by another Controller. TACS is cleared whenever the GPIB
board detects the Untalk (UNT) command, its own listen address, a talk
address other than its own talk address, or Interface Clear (IFC).
NI-488.2M User Manual for Windows 95/Windows NT
A-4
© National Instruments Corporation
Appendix A
Status Word Conditions
LACS (brd)
LACS indicates whether the GPIB board is addressed as a Listener.
LACS is set whenever the GPIB board detects that its listen address (and
secondary address, if enabled) has been sent either by the GPIB board
itself or by another Controller. LACS is also set whenever the GPIB
board shadow handshakes as a result of the ibgts function. LACS is
cleared whenever the GPIB board detects the Unlisten (UNL) command,
its own talk address, Interface Clear (IFC), or that the ibgts function has
been called without shadow handshake.
DTAS (brd)
DTAS indicates whether the GPIB board has detected a device trigger
command. DTAS is set whenever the GPIB board, as a Listener, detects
that the Group Execute Trigger (GET) command has been sent by
another Controller. DTAS is cleared on any call immediately following
an ibwait call, if the DTAS bit is set in the ibwait mask parameter.
DCAS (brd)
DCAS indicates whether the GPIB board has detected a device clear
command. DCAS is set whenever the GPIB board detects that the Device
Clear (DCL) command has been sent by another Controller, or whenever
the GPIB board as a Listener detects that the Selected Device Clear
(SDC) command has been sent by another Controller.
If you use the ibwait or ibnotify function to wait for DCAS and the
wait is completed, DCAS is cleared from ibsta after the next GPIB call.
The same is true of reads and writes. If you call a read or write function
such as ibwrt or Send, and DCAS is set in ibsta, the I/O operation is
aborted. DCAS is cleared from ibsta after the next GPIB call.
© National Instruments Corporation
A-5
NI-488.2M User Manual for Windows 95/Windows NT
Appendix
B
Error Codes and Solutions
This appendix lists a description of each error, some conditions under
which it might occur, and possible solutions.
The following table lists the GPIB error codes.
Error
Mnemonic
© National Instruments Corporation
iberr
Value
Meaning
EDVR
0
System error
ECIC
1
Function requires GPIB board to be CIC
ENOL
2
No Listeners on the GPIB
EADR
3
GPIB board not addressed correctly
EARG
4
Invalid argument to function call
ESAC
5
GPIB board not System Controller as
required
EABO
6
I/O operation aborted (timeout)
ENEB
7
Nonexistent GPIB board
EDMA
8
DMA error
EOIP
10
Asynchronous I/O in progress
ECAP
11
No capability for operation
EFSO
12
File system error
EBUS
14
GPIB bus error
ESTB
15
Serial poll status byte queue overflow
ESRQ
16
SRQ stuck in ON position
ETAB
20
Table problem
B-1
NI-488.2M User Manual for Windows 95/Windows NT
Appendix B
Error Codes and Solutions
EDVR (0)
EDVR is returned when the board or device name passed to ibfind, or
the board index passed to ibdev, cannot be accessed. The global variable
ibcntl contains an error code. This error occurs when you try to access
a board or device that is not installed or configured properly.
EDVR is also returned if an invalid unit descriptor is passed to any
NI-488 function call.
Solutions
•
Use ibdev to open a device without specifying its symbolic name.
•
Use only device or board names that are configured in the GPIB
configuration utility as parameters to the ibfind function.
•
Use the GPIB Configuration utility to ensure that each board you
want to access is configured properly.
•
Use the unit descriptor returned from ibdev or ibfind as the first
parameter in subsequent NI-488 functions. Examine the variable
before the failing function to make sure its value has not been
corrupted.
•
For Windows 95, refer to the Troubleshooting EDVR Error
Conditions section in Appendix C, Windows 95: Troubleshooting
and Common Questions, for more information.
ECIC (1)
ECIC is returned when one of the following board functions or routines
is called while the board is not CIC:
•
Any device-level NI-488 functions that affect the GPIB
•
Any board-level NI-488 functions that issue GPIB command bytes:
ibcmd, ibcmda, ibln, and ibrpp
•
ibcac and ibgts
•
Any of the NI-488.2 routines that issue GPIB command bytes:
SendCmds, PPoll, Send, and Receive
NI-488.2M User Manual for Windows 95/Windows NT
B-2
© National Instruments Corporation
Appendix B
Error Codes and Solutions
Solutions
•
Use ibsic or SendIFC to make the GPIB board become CIC on the
GPIB.
•
Use ibrsc 1 to make sure your GPIB board is configured as
System Controller.
•
In multiple CIC situations, always be certain that the CIC bit appears
in the status word ibsta before attempting these calls. If it does not
appear, you can perform an ibwait (for CIC) call to delay further
processing until control is passed to the board.
ENOL (2)
ENOL usually occurs when a write operation is attempted with no
Listeners addressed. For a device write, ENOL indicates that the GPIB
address configured for that device in the software does not match the
GPIB address of any device connected to the bus, that the GPIB cable is
not connected to the device, or that the device is not powered on.
ENOL can occur in situations where the GPIB board is not the CIC and
the Controller asserts ATN before the write call in progress has ended.
Solutions
•
Make sure that the GPIB address of your device matches the GPIB
address of the device to which you want to write data.
•
Use the appropriate hex code in ibcmd to address your device.
•
Check your cable connections and make sure at least two-thirds of
your devices are powered on.
•
Call ibpad (or ibsad, if necessary) to match the configured address
to the device switch settings.
•
Reduce the write byte count to that which is expected by the
Controller.
© National Instruments Corporation
B-3
NI-488.2M User Manual for Windows 95/Windows NT
Appendix B
Error Codes and Solutions
EADR (3)
EADR occurs when the GPIB board is CIC and is not properly
addressing itself before read and write functions. This error is usually
associated with board-level functions.
EADR is also returned by the function ibgts when the
shadow-handshake feature is requested and the GPIB ATN line is already
unasserted. In this case, the shadow handshake is not possible and the
error is returned to notify you of that fact.
Solutions
•
Make sure that the GPIB board is addressed correctly before calling
ibrd, ibwrt, RcvRespMsg, or SendDataBytes.
•
Avoid calling ibgts except immediately after an ibcmd call.
(ibcmd causes ATN to be asserted.)
EARG (4)
EARG results when an invalid argument is passed to a function call. The
following are some examples:
•
ibtmo called with a value not in the range 0 through 17.
•
ibeos called with meaningless bits set in the high byte of the second
parameter.
•
ibpad or ibsad called with invalid addresses.
•
ibppc called with invalid parallel poll configurations.
•
A board-level NI-488 call made with a valid device descriptor, or a
device-level NI-488 call made with a board descriptor.
•
An NI-488.2 routine called with an invalid address.
•
PPollConfig called with an invalid data line or sense bit.
Solutions
•
Make sure that the parameters passed to the NI-488 function or
NI-488.2 routine are valid.
•
Do not use a device descriptor in a board function or vice-versa.
NI-488.2M User Manual for Windows 95/Windows NT
B-4
© National Instruments Corporation
Appendix B
Error Codes and Solutions
ESAC (5)
ESAC results when ibsic, ibsre, SendIFC, or EnableRemote is
called when the GPIB board does not have System Controller capability.
Solutions
Give the GPIB board System Controller capability by calling ibrsc 1 or
by using the GPIB configuration utility to configure that capability into
the software.
EABO (6)
EABO indicates that an I/O operation has been canceled, usually due to a
timeout condition. Other causes are calling ibstop or receiving the
Device Clear message from the CIC while performing an I/O operation.
Frequently, the I/O is not progressing (the Listener is not continuing to
handshake or the Talker has stopped talking), or the byte count in the call
which timed out was more than the other device was expecting.
Solutions
•
Use the correct byte count in input functions or have the Talker use
the END message to signify the end of the transfer.
•
Lengthen the timeout period for the I/O operation using ibtmo.
•
Make sure that you have configured your device to send data before
you request data.
ENEB (7)
ENEB occurs when no GPIB board exists at the I/O address specified in
the configuration program. This problem happens when the board is not
physically plugged into the system, the I/O address specified during
configuration does not match the actual board setting, or there is a system
conflict with the base I/O address.
Solutions
Make sure there is a GPIB board in your computer that is properly
configured both in hardware and software using a valid base I/O address.
© National Instruments Corporation
B-5
NI-488.2M User Manual for Windows 95/Windows NT
Appendix B
Error Codes and Solutions
EDMA (8)
EDMA occurs if a system DMA error is encountered when the
NI-488.2M software attempts to transfer data over the GPIB using DMA.
Solutions
•
You can correct the EDMA problem in the hardware by using the
GPIB configuration utility to reconfigure the hardware to not use a
DMA resource.
•
You can correct the EDMA problem in the software by using ibdma
to disable DMA.
EOIP (10)
EOIP occurs when an asynchronous I/O operation has not finished before
some other call is made. During asynchronous I/O, you can only use
ibstop, ibnotify, ibwait, and ibonl or perform other non-GPIB
operations. If any other call is attempted, EOIP is returned.
Solutions
Resynchronize the driver and the application before making any further
GPIB calls. Resynchronization is accomplished by using one of the
following four functions:
ibnotify
If the ibsta value passed to the ibnotify callback
contains CMPL, the driver and application are
resynchronized.
ibwait
If the returned ibsta contains CMPL then the driver and
application are resynchronized.
ibstop
The I/O is canceled; the driver and application are
resynchronized.
ibonl
The I/O is canceled and the interface is reset; the driver
and application are resynchronized.
NI-488.2M User Manual for Windows 95/Windows NT
B-6
© National Instruments Corporation
Appendix B
Error Codes and Solutions
ECAP (11)
ECAP results when your GPIB board lacks the ability to carry out an
operation or when a particular capability has been disabled in the
software and a call is made that requires the capability.
Solutions
Check the validity of the call, or make sure your GPIB interface board
and the driver both have the needed capability.
EFSO (12)
EFSO results when an ibrdf or ibwrtf call encounters a problem
performing a file operation. Specifically, this error indicates that the
function is unable to open, create, seek, write, or close the file being
accessed. The specific operating system error code for this condition is
contained in ibcntl.
Solutions
•
Make sure the filename, path, and drive that you specified are
correct.
•
Make sure that the access mode of the file is correct.
•
Make sure there is enough room on the disk to hold the file.
EBUS (14)
EBUS results when certain GPIB bus errors occur during device
functions. All device functions send command bytes to perform
addressing and other bus management. Devices are expected to accept
these command bytes within the time limit specified by the default
configuration or the ibtmo function. EBUS results if a timeout occurred
while sending these command bytes.
© National Instruments Corporation
B-7
NI-488.2M User Manual for Windows 95/Windows NT
Appendix B
Error Codes and Solutions
Solutions
•
Verify that the instrument is operating correctly.
•
Check for loose or faulty cabling or several powered-off instruments
on the GPIB.
•
If the timeout period is too short for the driver to send command
bytes, increase the timeout period.
ESTB (15)
ESTB is reported only by the ibrsp function. ESTB indicates that one or
more serial poll status bytes received from automatic serial polls have
been discarded because of a lack of storage space. Several older status
bytes are available; however, the oldest is being returned by the ibrsp
call.
Solutions
•
Call ibrsp more frequently to empty the queue.
•
Disable autopolling with the ibconfig function (option
IbcAUTOPOLL) or the GPIB configuration utility.
ESRQ (16)
ESRQ can only be returned by a device-level ibwait call with RQS set
in the mask. ESRQ indicates that a wait for RQS is not possible because
the GPIB SRQ line is stuck on. This situation can be caused by the
following events:
•
Usually, a device unknown to the software is asserting SRQ.
Because the software does not know of this device, it can never
serial poll the device and unassert SRQ.
•
A GPIB bus tester or similar equipment might be forcing the SRQ
line to be asserted.
•
A cable problem might exist involving the SRQ line.
Although the occurrence of ESRQ warns you of a definite GPIB
problem, it does not affect GPIB operations, except that you cannot
depend on the ibsta RQS bit while the condition lasts.
NI-488.2M User Manual for Windows 95/Windows NT
B-8
© National Instruments Corporation
Appendix B
Error Codes and Solutions
Solutions
Check to see if other devices not used by your application are asserting
SRQ. Disconnect them from the GPIB if necessary.
ETAB (20)
ETAB occurs only during the FindLstn and FindRQS functions. ETAB
indicates that there was some problem with a table used by these
functions.
•
In the case of FindLstn, ETAB means that the given table did not
have enough room to hold all the addresses of the Listeners found.
•
In the case of FindRQS, ETAB means that none of the devices in the
given table were requesting service.
Solutions
In the case of FindLstn, increase the size of result arrays. In the case of
FindRQS, check to see if other devices not used by your application are
asserting SRQ. Disconnect them from the GPIB if necessary.
© National Instruments Corporation
B-9
NI-488.2M User Manual for Windows 95/Windows NT
Windows 95:
Troubleshooting and
Common Questions
Appendix
C
This appendix describes how to troubleshoot problems and lists some
common questions for Windows 95 users.
Troubleshooting EDVR Error Conditions
In some cases, calls to NI-488 functions or NI-488.2 routines may return
with the ERR bit set in ibsta and the value EDVR in iberr. The
value stored in ibcntl is useful in troubleshooting the error condition.
EDVR Error with ibcntl Set to 0xE028002C (-534249428)
If a call is made with a board number that is within the range of allowed
board numbers (typically 0 to 3), but which has not been assigned to a
GPIB interface, an EDVR error condition occurs with ibcntl set to
0xE028002C. You can assign a board number to a GPIB interface by
configuring the NI-488.2M software and selecting an interface name.
Refer to the getting started manual for information on how to configure
the NI-488.2M software.
EDVR Error with ibcntl Set to 0xE0140025 (-535560155)
If a call is made with a board number that is not within the range of
allowed board numbers (typically 0 to 3), an EDVR error condition
occurs with ibcntl set to 0xE0140025.
EDVR Error with ibcntl Set to 0xE0140035 (-535560139)
If a call is made with a device name that is not listed in the logical device
templates that are part of the NI-488.2M software configuration utility,
an EDVR error condition occurs with ibcntl set to 0xE0140035.
© National Instruments Corporation
C-1
NI-488.2M User Manual for Windows 95/Windows NT
Appendix C
Windows 95: Troubleshooting and Common Questions
EDVR Error with ibcntl Set to 0xE0320029 (-533594071) or 0xE1050029
(-519765975)
If a call is made with a board number that is assigned to a GPIB interface
that is unusable because of a resource conflict, an EDVR error condition
occurs with ibcntl set to 0xE0320029 or 0xE1050029. Refer to the
troubleshooting instructions in the getting started manual. This error is
also returned if you remove a PCMCIA-GPIB or PCMCIA-GPIB+ while
the driver is accessing it. This error is also returned if you try to access a
PCMCIA-GPIB when 32-bit PCMCIA drivers are not enabled. Refer to
the Install the PCMCIA-GPIB+ or PCMCIA-GPIB section in your
getting started manual for more information about enabling 32-bit
PCMCIA drivers.
EDVR Error with ibcntl Set to 0xE0140004 (-535560188)
This error may occur if the GPIB interface has not been correctly
installed and detected by Windows 95. Refer to the Installation and
Configuration chapter in your getting started manual for details on how
to install the GPIB hardware. If you have already followed those
instructions and still receive this error, Windows 95 might have
configured the GPIB interface as an “other device.” Refer to your getting
started manual for information on how to force Windows 95 to detect the
GPIB hardware.
EDVR Error Condition with ibcntl set to 0xE1030043 (-519897021)
This error occurs if you have enabled DOS GPIB support and attempted
to run an existing GPIB DOS application that was compiled with an
older, unsupported DOS language interface.
Troubleshooting Windows 95 Device Manager Device
Status Codes
If you are having trouble with your GPIB interface, check to see if the
interface listing in the Windows 95 Device Manager appears with an
exclamation point or X by it. If it does, click on the interface listing and
then click on the Properties button to view the General properties page
for the interface. In the Device Status section, look for the status
description and status code number. Use these status code descriptions
NI-488.2M User Manual for Windows 95/Windows NT
C-2
© National Instruments Corporation
Appendix C
Windows 95: Troubleshooting and Common Questions
and numbers to troubleshoot your problem. The following paragraphs
describe the status codes.
•
Code 8: The GPIB software was incompletely installed. You might
encounter this problem if you have installed an AT-GPIB/TNT+ but
not installed the GPIB Analyzer software. To solve this problem,
reinstall the GPIB software for Windows 95.
•
Code 9: Windows 95 had a problem reading information from the
GPIB interface. This problem can occur if you are using an older
revision of the AT-GPIB/TNT+ or AT-GPIB/TNT (PnP) interface.
Contact National Instruments to upgrade your GPIB interface.
•
Code 22: The GPIB interface is disabled. To enable the GPIB
interface, check the appropriate configuration checkbox in the
Device Usage section of the General tab.
•
Code 24: The GPIB interface is not present, or the Device Manager
is unaware that the GPIB interface is present. To solve this problem,
select the interface in the Device Manager, and click on the Remove
button. Next, click on the Refresh button. At this point, the system
rescans the installed hardware, and the GPIB interface should show
up without any problems. If the problem persists, contact National
Instruments.
•
Code 27: Windows 95 was unable to assign the GPIB interface any
resources. To solve this problem, free up system resources by
disabling other unnecessary hardware so that enough resources are
available for the GPIB interface.
Common Questions
What do I do if my GPIB hardware is listed in the Windows 95
Device Manager with an exclamation point or an X next to it?
Refer to the Troubleshooting Windows 95 Device Manager Device Status
Codes section of this appendix for specific information about what might
cause this problem. If you have already completed the troubleshooting
steps, fill out the forms in Appendix E, Customer Communication, and
contact National Instruments.
How can I determine which type of GPIB hardware I have installed?
Run the GPIB Configuration utility. To run the utility, select
Start»Settings»Control Panel»System. Select the Device Manager tab
in the System Properties dialog box. Click on the View devices by type
© National Instruments Corporation
C-3
NI-488.2M User Manual for Windows 95/Windows NT
Appendix C
Windows 95: Troubleshooting and Common Questions
radio button at the top of the page. If any GPIB hardware is correctly
installed, a National Instruments GPIB Interfaces icon appears in the
list of device types. Double-click on this icon to see a list of installed
GPIB hardware.
How can I determine which version of the NI-488.2M software I have
installed?
Run the Diagnostic utility. To run the utility, select the Diagnostic item
under Start»Programs»NI-488.2M Software for Windows 95. A
banner at the bottom of the Diagnostic utility window displays the
version of the GPIB software that is installed.
How many GPIB interfaces can I configure for use with my
NI-488.2M software for Windows 95?
The NI-488.2M software for Windows 95 can be configured to
communicate with up to 100 GPIB interfaces.
How many devices can I configure for use with my NI-488.2M
software for Windows 95?
The NI-488.2M software for Windows 95 provides a total of
1,024 logical devices for applications to use. The default number of
devices is 32. The maximum number of physical devices you should
connect to a single GPIB interface is 14, or fewer, depending on your
system configuration.
Are interrupts and DMA required with the NI-488.2M software for
Windows 95?
Neither interrupts nor DMA are required, unless you are using a
PCMCIA-GPIB or GPIB hardware that has analyzer capability, in which
case at least one interrupt level is required.
How can I determine if my GPIB hardware and software are
correctly installed?
Run the Diagnostic utility. To run the utility, select the Diagnostic item
under Start»Programs»NI-488.2M Software for Windows 95. Use the
Diagnostic online help to troubleshoot problems.
NI-488.2M User Manual for Windows 95/Windows NT
C-4
© National Instruments Corporation
Appendix C
Windows 95: Troubleshooting and Common Questions
When should I use the Win32 Interactive Control utility?
You can use the Win32 Interactive Control utility to test and verify
instrument communication, troubleshoot problems, and develop your
application. For more information, refer to Chapter 6, Win32 Interactive
Control Utility.
How do I use an NI-488.2M language interface?
For information about using NI-488.2M language interfaces, refer to
Chapter 3, Developing Your Application.
What do I do if the Diagnostic utility fails with an error?
Use the Diagnostic online help, or refer to the getting started manual, to
troubleshoot specific problems. If you have already completed the
troubleshooting steps, fill out the support forms in Appendix E, Customer
Communication, and contact National Instruments.
How do I communicate with my instrument over the GPIB?
Refer to the documentation that came from the instrument manufacturer.
The command sequences you use are totally dependent on the specific
instrument. The documentation for each instrument should include the
GPIB commands you need to communicate with it. In most cases, NI-488
device-level calls are sufficient for communicating with instruments.
Refer to Chapter 3, Developing Your Application, for more information.
Can I use the NI-488 and NI-488.2 calls together in the same
application?
Yes, you can mix NI-488 functions and NI-488.2 routines.
What can I do to check for errors in my GPIB application?
Examine the value of ibsta after each NI-488 or NI-488.2 call. If a call
fails, the ERR bit of ibsta is set and an error code is stored in iberr.
For more information about global status variables, refer to Chapter 3,
Developing Your Application.
Why does the uninstall program leave some components installed?
The uninstall program removes only items that the installation program
installed. If you add anything to a directory that was created by the
installation program, the uninstall program does not delete that directory,
© National Instruments Corporation
C-5
NI-488.2M User Manual for Windows 95/Windows NT
Appendix C
Windows 95: Troubleshooting and Common Questions
because the directory is not empty after the uninstallation. You can
remove the remaining components yourself.
What information should I have before I call National Instruments?
When you call National Instruments, you should have the results of the
diagnostic test. Also, make sure you have filled out the Technical
Support Form in Appendix E, Customer Communication.
NI-488.2M User Manual for Windows 95/Windows NT
C-6
© National Instruments Corporation
Windows NT:
Troubleshooting and
Common Questions
Appendix
D
This appendix describes how to troubleshoot problems and lists some
common questions for Windows NT users.
Using Windows NT Diagnostic Tools
There are many reasons why the NI-488.2M driver might not load. If the
software is not properly installed or if there is a conflict between the
GPIB hardware and the other hardware in the system, the NI-488.2M
driver fails to start. Two Windows NT utilities are useful in determining
the source of the problem: the Devices applet in the Control Panel, and
the Event Viewer. The information available through each utility is
described in the following sections.
Examining NT Devices to Verify the NI-488.2M Installation
To verify whether the NI-488.2M devices are installed correctly (that is,
that the devices are started), run the Devices applet in the Control Panel.
In Windows NT 3.51, open the GPIB Control Panel in the Main group
of the Program Manager. In Windows NT 4.0 or later, select
Start»Settings»Control Panel. This utility lists all of the devices
Windows NT detects. Each device has a status associated with it. If the
NI-488.2M driver is installed correctly, the following lines appear in the
list of NT devices:
Device
GPIB Board Class Driver
GPIB Device Class Driver
Status
Started
Started
Started
Automatic
Automatic
You should also see one or more lines similar to the following:
Device
GPIB Port Driver (AT-GPIB)
GPIB Port Driver (PCI-GPIB)
© National Instruments Corporation
D-1
Status
****
****
Started
System
System
NI-488.2M User Manual for Windows 95/Windows NT
Appendix D
Windows NT: Troubleshooting and Common Questions
The GPIB Board Class Driver and the GPIB Device Class Driver
should both have a status of Started. If not, refer to the next section,
Examining the NT System Log Using the Event Viewer.
At least one of the GPIB Port Drivers listed by the Devices applet
should have a status of Started. If not, refer to the next section,
Examining the NT System Log Using the Event Viewer.
If the GPIB Class Driver lines are not present or at least one GPIB Port
Driver line is not present, the NI-488.2M software is not installed
properly. You must reinstall the NI-488.2M software.
Examining the NT System Log Using the Event Viewer
Windows NT maintains a system log. If the NI-488.2M driver is unable
to start, it records entries in the system log explaining why it failed to
start. You can examine the system log by running the Event Viewer
utility. In Windows NT 3.51, double-click on the Event Viewer icon in
the Administrative Tools group of the Program Manager. In
Windows NT 4.0 or higher, select Start»Programs»Administrative
Tools»Event Viewer. Events that might appear in the system log include
the following:
•
The system is unable to locate the device file for one or more of the
devices that make up the NI-488.2M driver and an event is logged
that The system cannot find the file specified. In this
case, the NI-488.2M software is incorrectly installed. You should
reinstall the software.
•
A conflict exists between the GPIB hardware and the other hardware
in the system. If this is the case, an event is logged that indicates the
nature of the resource conflict. To correct this conflict, reconfigure
the GPIB hardware and NI-488.2M software. Refer to the getting
started manual for configuration information.
Common Questions
How can I determine which type of GPIB hardware I have installed?
Run the GPIB Configuration utility. To run the utility, open your
Windows NT Control Panel and select the National Instruments eagle
icon.
NI-488.2M User Manual for Windows 95/Windows NT
D-2
© National Instruments Corporation
Appendix D
Windows NT: Troubleshooting and Common Questions
How can I determine which version of the NI-488.2M software I have
installed?
Run the Diagnostic utility. In Windows NT version 3.51, start the
Diagnostic by double-clicking on the Diagnostic icon in the NI-488.2M
Software for Windows NT group of the Program Manager. In
Windows NT version 4.0 or later, start the Diagnostic by choosing the
Diagnostic item under Start»Programs»NI-488.2M Software for
Windows NT.
How many GPIB interfaces can I configure for use with my
NI-488.2M Software for Windows NT?
The NI-488.2M Software for Windows NT can be configured to
communicate with up to 4 GPIB interfaces.
How many devices can I configure for use with my NI-488.2M
Software for Windows NT?
The NI-488.2M Software for Windows NT provides a total of 100 logical
devices for applications to use. The default number of devices is 32.
Are interrupts and DMA required with the NI-488.2M Software for
Windows NT?
Interrupts are required, but DMA is not.
How can I determine if my GPIB hardware and software are
correctly installed?
Run the Diagnostic utility. In Windows NT version 3.51, start the
Diagnostic by double-clicking on the Diagnostic icon in the NI-488.2M
Software for Windows NT group of the Program Manager. In
Windows NT version 4.0 or later, start the Diagnostic by choosing the
Diagnostic item under Start»Programs»NI-488.2M Software for
Windows NT. A banner at the bottom of the Diagnostic utility window
displays the version of the GPIB software that is installed.
When should I use the Win32 Interactive Control utility?
You can use the Win32 Interactive Control utility to test and verify
instrument communication, troubleshoot problems, and develop your
application. For more information, refer to Chapter 6, Win32 Interactive
Control Utility.
© National Instruments Corporation
D-3
NI-488.2M User Manual for Windows 95/Windows NT
Appendix D
Windows NT: Troubleshooting and Common Questions
How do I use an NI-488.2M language interface?
For information about using NI-488.2M language interfaces, refer to
Chapter 3, Developing Your Application.
What do I do if the Diagnostic utility fails with an error?
Use the Diagnostic online help, or refer to the getting started manual, to
troubleshoot specific problems. If you have already completed the
troubleshooting steps, fill out the support forms in Appendix E, Customer
Communication, and contact National Instruments.
How do I communicate with my instrument over the GPIB?
Refer to the documentation that came from the instrument manufacturer.
The command sequences you use are totally dependent on the specific
instrument. The documentation for each instrument should include the
GPIB commands you need to communicate with it. In most cases, NI-488
device-level calls are sufficient for communicating with instruments.
Refer to Chapter 3, Developing Your Application, for more information.
Can I use the NI-488 and NI-488.2 calls together in the same
application?
Yes, you can mix NI-488 functions and NI-488.2 routines.
What can I do to check for errors in my GPIB application?
Examine the value of ibsta after each NI-488 or NI-488.2 call. If a call
fails, the ERR bit of ibsta is set and an error code is stored in iberr.
For more information about global status variables, refer to Chapter 3,
Developing Your Application.
What information should I have before I call National Instruments?
When you call National Instruments, you should have the results of the
Diagnostic test. Also, make sure you have filled out the Technical
Support Form in Appendix E, Customer Communication.
NI-488.2M User Manual for Windows 95/Windows NT
D-4
© National Instruments Corporation
Appendix
Customer Communication
E
For your convenience, this appendix contains forms to help you gather the information necessary to
help us solve technical problems and a form you can use to comment on the product documentation.
When you contact us, we need the information on the Technical Support Form and the configuration
form, if your manual contains one, about your system configuration to answer your questions as
quickly as possible.
National Instruments has technical assistance through electronic, fax, and telephone systems to
quickly provide the information you need. Our electronic services include a bulletin board service,
an FTP site, a Fax-on-Demand system, and e-mail support. If you have a hardware or software
problem, first try the electronic support systems. If the information available on these systems does
not answer your questions, we offer fax and telephone support through our technical support
centers, which are staffed by application engineers.
Electronic Services
Bulletin Board Support
National Instruments has BBS and FTP sites dedicated for 24-hour support with a collection of
files and documents to answer most common customer questions. From these sites, you can also
download the latest instrument drivers, updates, and example programs. For recorded instructions
on how to use the bulletin board and FTP services and for BBS automated information, call
(512) 795-6990. You can access these services at:
United States: (512) 794-5422
Up to 14,400 baud, 8 data bits, 1 stop bit, no parity
United Kingdom: 01635 551422
Up to 9,600 baud, 8 data bits, 1 stop bit, no parity
France: 01 48 65 15 59
Up to 9,600 baud, 8 data bits, 1 stop bit, no parity
FTP Support
To access our FTP site, log on to our Internet host, ftp.natinst.com, as anonymous and use
your Internet address, such as [email protected], as your password. The support files and
documents are located in the /support directories.
© National Instruments Corporation
E-1
NI-488.2M User Manual for Windows 95/Windows NT
Fax-on-Demand Support
Fax-on-Demand is a 24-hour information retrieval system containing a library of documents on a
wide range of technical information. You can access Fax-on-Demand from a touch-tone telephone
at (512) 418-1111.
E-Mail Support (currently U.S. only)
You can submit technical support questions to the applications engineering team through e-mail at
the Internet address listed below. Remember to include your name, address, and phone number so
we can contact you with solutions and suggestions.
[email protected]
Telephone and Fax Support
National Instruments has branch offices all over the world. Use the list below to find the technical
support number for your country. If there is no National Instruments office in your country, contact
the source from which you purchased your software to obtain support.
Australia
Austria
Belgium
Canada (Ontario)
Canada (Quebec)
Denmark
Finland
France
Germany
Hong Kong
Israel
Italy
Japan
Korea
Mexico
Netherlands
Norway
Singapore
Spain
Sweden
Switzerland
Taiwan
U.K.
Telephone
02 9874 4100
0662 45 79 90 0
02 757 00 20
905 785 0085
514 694 8521
45 76 26 00
09 527 2321
01 48 14 24 24
089 741 31 30
2645 3186
03 5734815
02 413091
03 5472 2970
02 596 7456
5 520 2635
0348 433466
32 84 84 00
2265886
91 640 0085
08 730 49 70
056 200 51 51
02 377 1200
01635 523545
Fax
02 9874 4455
0662 45 79 90 19
02 757 03 11
905 785 0086
514 694 4399
45 76 26 02
09 502 2930
01 48 14 24 14
089 714 60 35
2686 8505
03 5734816
02 41309215
03 5472 2977
02 596 7455
5 520 3282
0348 430673
32 84 86 00
2265887
91 640 0533
08 730 43 70
056 200 51 55
02 737 4644
01635 523154
Technical Support Form
Photocopy this form and update it each time you make changes to your software or hardware, and
use the completed copy of this form as a reference for your current configuration. Completing this
form accurately before contacting National Instruments for technical support helps our applications
engineers answer your questions more efficiently.
If you are using any National Instruments hardware or software products related to this problem,
include the configuration forms from their user manuals. Include additional pages if necessary.
Name __________________________________________________________________________
Title ___________________________________________________________________________
Company ________________________________________________________________________
Address _________________________________________________________________________
________________________________________________________________________________
Fax ( ____ ) __________________________ Phone ( ___ ) ____________________________
Computer brand __________________ Model ______________ Processor ________________
Operating system (include version number) _____________________________________________
Clock Speed ________ MHz
RAM __________ MB Display adapter ________________
Mouse _____ yes
____ no
Other adapters installed ______________________________
Hard disk capacity ________ MB Brand ____________________________________________
Instruments used __________________________________________________________________
National Instruments hardware product model _____________________ Revision ____________
Configuration ____________________________________________________________________
National Instruments software product ____________________________ Version ____________
Configuration ____________________________________________________________________
The problem is ___________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
List any error messages ____________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
The following steps will reproduce the problem _________________________________________
________________________________________________________________________________
________________________________________________________________________________
Documentation Comment Form
National Instruments encourages you to comment on the documentation supplied with our products.
This information helps us provide quality products to meet your needs.
Title: NI-488.2M™ User Manual for Windows 95 and Windows NT
Edition Date:
December 1996
Part Number: 321037C-01
Please comment on the completeness, clarity, and organization of the manual.
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
If you find errors in the manual, please record the page numbers and describe the errors.
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Thank you for your help.
Name __________________________________________________________________________
Title ___________________________________________________________________________
Company _______________________________________________________________________
Address ________________________________________________________________________
________________________________________________________________________________
Phone ( ____ ) _________________________________________________________________
Mail to:
Technical Publications
National Instruments Corporation
6504 Bridge Point Parkway
Austin, TX 78730-5039
Fax to:
Technical Publications
National Instruments Corporation
(512) 794-5678
Glossary
Prefix
Meaning
Value
n-
nano-
10-9
µ-
micro-
10-6
m-
milli-
10-3
k-
kilo-
103
M-
mega-
106
A
acceptor handshake
Listeners use this GPIB interface function to receive data, and all devices
use it to receive commands. See source handshake and handshake.
access board
The GPIB board that controls and communicates with the devices on the
bus that are attached to it.
ANSI
American National Standards Institute.
ASCII
American Standard Code for Information Interchange.
asynchronous
An action or event that occurs at an unpredictable time with respect to the
execution of a program.
automatic serial polling
Autopolling. A feature of the NI-488.2M software in which serial polls
are executed automatically by the driver whenever a device asserts the
GPIB SRQ line.
© National Instruments Corporation
G-1
NI-488.2M User Manual for Windows 95/Windows NT
Glossary
B
base I/O address
See I/O address.
BIOS
Basic Input/Output System.
board-level function
A rudimentary function that performs a single operation.
C
CFE
Configuration Enable. The GPIB command which precedes CFGn and is
used to place devices into their configuration mode.
CFGn
These GPIB commands (CFG1 through CFG15) follow CFE and are
used to configure all devices for the number of meters of cable in the
system so that HS488 transfers occur without errors.
CIC
Controller-In-Charge. The device that manages the GPIB by sending
interface messages to other devices.
CPU
Central processing unit.
D
DAV
Data Valid. One of the three GPIB handshake lines. See handshake.
DCL
Device Clear. The GPIB command used to reset the device or internal
functions of all devices. See SDC.
device-level function
A function that combines several rudimentary board operations into one
function so that the user does not have to be concerned with bus
management or other GPIB protocol matters.
DIO1 through DIO8
The GPIB lines that are used to transmit command or data bytes from one
device to another.
DLL
Dynamic link library.
DMA
Direct memory access. High-speed data transfer between the GPIB board
and memory that is not handled directly by the CPU. Not available on
some systems. See programmed I/O.
driver
Device driver software installed within the operating system.
NI-488.2M User Manual for Windows 95/Windows NT
G-2
© National Instruments Corporation
Glossary
E
END or END Message
A message that signals the end of a data string. END is sent by asserting
the GPIB End or Identify (EOI) line with the last data byte.
EOI
A GPIB line that is used to signal either the last byte of a data message
(END) or the parallel poll Identify (IDY) message.
EOS or EOS Byte
A 7- or 8-bit end-of-string character that is sent as the last byte of a data
message.
EOT
End of transmission.
ESB
The Event Status bit is part of the IEEE 488.2-defined status byte which
is received from a device responding to a serial poll.
G
GET
Group Execute Trigger. It is the GPIB command used to trigger a device
or internal function of an addressed Listener.
GPIB
General Purpose Interface Bus is the common name for the
communications interface system defined in ANSI/IEEE Standard
488.1-1987 and ANSI/IEEE Standard 488.2-1987.
GPIB address
The address of a device on the GPIB, composed of a primary address
(MLA and MTA) and perhaps a secondary address (MSA). The GPIB
board has both a GPIB address and an I/O address.
GPIB board
Refers to the National Instruments family of GPIB interface boards.
GTL
Go To Local. It is the GPIB command used to place an addressed
Listener in local (front panel) control mode.
H
handshake
The mechanism used to transfer bytes from the Source Handshake
function of one device to the Acceptor Handshake function of another
device. The three GPIB lines DAV, NRFD, and NDAC are used in an
© National Instruments Corporation
G-3
NI-488.2M User Manual for Windows 95/Windows NT
Glossary
interlocked fashion to signal the phases of the transfer, so that bytes can
be sent asynchronously (for example, without a clock) at the speed of the
slowest device.
For more information about handshaking, refer to the ANSI/IEEE
Standard 488.1-1987.
hex
Hexadecimal; a number represented in base 16. For example,
decimal 16 = hex 10.
high-level function
See device-level function.
HS488
A high-speed data transfer protocol for IEEE 488. This protocol increases
performance for GPIB reads and writes up to 8 Mbytes/s, depending on
your system.
Hz
Hertz.
I
ibcnt
After each NI-488 I/O function, this global variable contains the actual
number of bytes transmitted.
iberr
A global variable that contains the specific error code associated with a
function call that failed.
ibsta
At the end of each function call, this global variable (status word)
contains status information.
IEEE
Institute of Electrical and Electronic Engineers.
interface message
A broadcast message sent from the Controller to all devices and used to
manage the GPIB.
I/O
Input/Output. In the context of this manual, the transmission of
commands or messages between the computer via the GPIB board and
other devices on the GPIB.
I/O address
The address of the GPIB board from the point of view of the CPU, as
opposed to the GPIB address of the GPIB board. Also called port address
or board address.
NI-488.2M User Manual for Windows 95/Windows NT
G-4
© National Instruments Corporation
Glossary
ist
An Individual Status bit of the status byte used in the Parallel Poll
Configure function.
K
KB
Kilobytes.
L
LAD
Listen address. See MLA.
language interface
Code that enables an application program that uses NI-488 functions or
NI-488.2 routines to access the driver.
Listener
A GPIB device that receives data messages from a Talker.
LLO
Local Lockout. The GPIB command used to tell all devices that they may
or should ignore remote (GPIB) data messages or local (front panel)
controls, depending on whether the device is in local or remote program
mode.
low-level function
A rudimentary board or device function that performs a single operation.
M
m
Meters.
MAV
The Message Available bit is part of the IEEE 488.2-defined status byte
which is received from a device responding to a serial poll.
MB
Megabytes.
memory-resident
Resident in RAM.
MLA
My Listen Address. A GPIB command used to address a device to be a
Listener. It can be any one of the 31 primary addresses.
MSA
My Secondary Address. The GPIB command used to address a device to
be a Listener or a Talker when extended (two byte) addressing is used.
The complete address is a MLA or MTA address followed by an MSA
address. There are 31 secondary addresses for a total of 961 distinct listen
or talk addresses for devices.
© National Instruments Corporation
G-5
NI-488.2M User Manual for Windows 95/Windows NT
Glossary
MTA
My Talk Address. A GPIB command used to address a device to be a
Talker. It can be any one of the 31 primary addresses.
multitasking
The concurrent processing of more than one program or task.
N
NDAC
Not Data Accepted. One of the three GPIB handshake lines. See
handshake.
NRFD
Not Ready For Data. One of the three GPIB handshake lines. See
handshake.
P
parallel poll
The process of polling all configured devices at once and reading a
composite poll response. See serial poll.
PIO
See programmed I/O.
PPC
Parallel Poll Configure. It is the GPIB command used to configure an
addressed Listener to participate in polls.
PPD
Parallel Poll Disable. It is the GPIB command used to disable a
configured device from participating in polls. There are 16 PPD
commands.
PPE
Parallel Poll Enable. It is the GPIB command used to enable a configured
device to participate in polls and to assign a DIO response line. There are
16 PPE commands.
PPU
Parallel Poll Unconfigure. It is the GPIB command used to disable any
device from participating in polls.
programmed I/O
Low-speed data transfer between the GPIB board and memory in which
the CPU moves each data byte according to program instructions. See
DMA.
R
RAM
Random-access memory.
NI-488.2M User Manual for Windows 95/Windows NT
G-6
© National Instruments Corporation
Glossary
resynchronize
The NI-488.2M software and the user application must resynchronize
after asynchronous I/O operations have completed.
RQS
Request Service.
S
s
Seconds.
SDC
Selected Device Clear. The GPIB command used to reset internal or
device functions of an addressed Listener. See DCL.
semaphore
An object that maintains a count between zero and some maximum value,
limiting the number of threads that are simultaneously accessing a shared
resource.
serial poll
The process of polling and reading the status byte of one device at a time.
See parallel poll.
service request
See SRQ.
source handshake
The GPIB interface function that transmits data and commands. Talkers
use this function to send data, and the Controller uses it to send
commands. See acceptor handshake and handshake.
SPD
Serial Poll Disable. The GPIB command used to cancel an SPE
command.
SPE
Serial Poll Enable. The GPIB command used to enable a specific device
to be polled. That device must also be addressed to talk. See SPD.
SRQ
Service Request. The GPIB line that a device asserts to notify the CIC
that the device needs servicing.
status byte
The IEEE 488.2-defined data byte sent by a device when it is serially
polled.
status word
See ibsta.
synchronous
Refers to the relationship between the NI-488.2M driver functions and a
process when executing driver functions is predictable; the process is
blocked until the driver completes the function.
© National Instruments Corporation
G-7
NI-488.2M User Manual for Windows 95/Windows NT
Glossary
System Controller
The single designated Controller that can assert control (become CIC of
the GPIB) by sending the Interface Clear (IFC) message. Other devices
can become CIC only by having control passed to them.
T
TAD
Talk Address. See MTA.
Talker
A GPIB device that sends data messages to Listeners.
TCT
Take Control. The GPIB command used to pass control of the bus from
the current Controller to an addressed Talker.
timeout
A feature of the NI-488.2M driver that prevents I/O functions from
hanging indefinitely when there is a problem on the GPIB.
TLC
An integrated circuit that implements most of the GPIB Talker, Listener,
and Controller functions in hardware.
U
ud
Unit descriptor. A variable name and first argument of each function call
that contains the unit descriptor of the GPIB interface board or other
GPIB device that is the object of the function.
UNL
Unlisten. The GPIB command used to unaddress any active Listeners.
UNT
Untalk. The GPIB command used to unaddress an active Talker.
NI-488.2M User Manual for Windows 95/Windows NT
G-8
© National Instruments Corporation
Index
basic communication with IEEE
488.2-compliant devices, 2-14
to 2-15
clearing and triggering devices, 2-4
to 2-5
end-of-string mode, 2-8 to 2-9
non-controller example, 2-20
to 2-21
parallel polls, 2-18 to 2-19
serial polls using NI-488.2 routines,
2-16 to 2-17
service requests, 2-10 to 2-13
source code files, 2-1 to 2-2
choosing between NI-488 functions and
NI-488.2 routines, 3-2 to 3-4
global variables for checking status, 3-4
to 3-6
count variables - ibcnt and
ibcntl, 3-6
error variable - iberr, 3-5 to 3-6
status word - ibsta, 3-4 to 3-5
language-specific instructions, 3-15
to 3-19
Borland C/C++, 3-15
direct entry with C, 3-16 to 3-19
directly accessing gpib-32.dll
exports, 3-17 to 3-19
gpib-32.dll exports, 3-16
to 3-17
Microsoft Visual Basic, 3-16
Microsoft Visual C/C++, 3-15
Numbers/Symbols
! (repeat previous function) function, Win32
Interactive Control, 6-9
$ filename (execute indirect file) function,
Win32 Interactive Control, 6-9
+ (turn ON display) function, Win32
Interactive Control, 6-9
- (turn OFF display) function, Win32
Interactive Control, 6-9
16-bit Windows applications, running
under Windows 95, 3-19
under Windows NT, 3-20 to 3-21
16-bit Windows support files, NI-488.2M for
Windows 95, 1-7
32-bit NI-488.2M driver components, 1-6
A
active Controller. See Controller-inCharge (CIC).
addresses. See GPIB addresses.
AllSpoll routine, 7-15, 7-16
application development.
See also debugging; GPIB
programming techniques.
accessing NI-488.2M DLL, 3-1
application examples
asynchronous I/O, 2-6 to 2-7
basic communication, 2-2 to 2-3
© National Instruments Corporation
I-1
NI-488.2M User Manual for Windows 95/Windows NT
Index
using with multiple boards or
devices, 3-3 to 3-4
Win32 Interactive Control for
communicating with devices, 3-6
applications, existing. See existing
applications, running.
asynchronous event notification in Win32
applications, 7-4 to 7-9
calling ibnotify function, 7-4 to 7-5
ibnotify programming example, 7-6
to 7-9
asynchronous I/O application example, 2-6 to
2-7
ATN (attention) line (table), 1-3
ATN status word condition
bit position, hex value, and type
(table), 3-5
description, A-4
automatic serial polling. See serial polling.
auxiliary functions, Win32 Interactive
Control, 6-9
NI-488 applications
clearing devices, 3-9
communicating with devices, 3-9
to 3-10
flowchart of programming with
device-level functions, 3-8
general steps and examples, 3-9
to 3-10
items to include, 3-7
opening devices, 3-9
placing device offline, 3-10
program shell (illustration), 3-8
reading measurement, 3-10
triggering devices, 3-10
waiting for measurement, 3-10
NI-488 functions, 3-2 to 3-3
advantages, 3-2
board-level functions, 3-3
choosing between NI-488 functions
and NI-488.2 routines, 3-2 to 3-4
device-level functions, 3-3
one device per board, 3-2 to 3-3
NI-488.2 applications
communicating with devices, 3-14
to 3-15
determining GPIB address of
device, 3-13 to 14
flowchart of programming with
routines, 3-12
general steps and examples, 3-13
to 3-15
initialization, 3-13
initializing devices, 3-14
items to include, 3-11
placing device offline, 3-15
program shell (illustration), 3-12
reading measurements, 3-14
to 3-15
triggering instruments, 3-14
waiting for measurements, 3-14
NI-488.2 routines
choosing between NI-488 functions
and NI-488.2 routines, 3-2 to 3-4
NI-488.2M User Manual for Windows 95/Windows NT
B
board functions. See NI-488 functions.
Borland C/C++
language interface files
NI-488.2M for Windows 95, 1-8
NI-488.2M for Windows NT, 1-14
programming instructions, 3-15
borlandc_gpib-32.obj file, 1-8, 1-14
buffer option function, Win32 Interactive
Control, 6-9
bulletin board support, E-1
C
C language direct entry for application
development, 3-16 to 3-19
directly accessing gpib-32.dll exports, 317 to 3-19
gpib-32.dll exports, 3-16 to 3-17
I-2
© National Instruments Corporation
Index
idle Controller, 1-2
monitoring by Talker/Listener
applications, 7-11 to 7-12
System Controller, 1-2
count, in Win32 Interactive Control, 6-10
count variables - ibcnt and ibcntl, 3-6
customer communication, xvi, E-1 to E-2
cable length for high-speed data
transfers, 7-2, 7-3
CIC. See Controller-in-Charge (CIC).
CIC Protocol, 7-11
CIC status word condition
bit position, hex value, and type
(table), 3-5
description, A-4
clearing and triggering devices, example,
2-4 to 2-5
CMPL status word condition
bit position, hex value, and type
(table), 3-5
description, A-3
common questions. See troubleshooting and
common questions.
communication application examples
basic communication, 2-2 to 2-3
with IEEE 488.2-compliant devices,
2-14 to 2-15
communication errors, 4-4
repeat addressing, 4-4
termination method, 4-4
configuration, 1-4 to 1-6. See also GPIB
configuration utility; Win32 Interactive
Control utility.
controlling more than one board, 1-5
linear and star system configuration
(illustration), 1-4
requirements, 1-5 to 1-6
system configuration effects on
HS488, 7-3
configuration errors, 4-3
Configure (CFGn) message, 7-3
Configure Enable (CFE) message, 7-3
Controller-in-Charge (CIC)
active Controller as CIC, 1-1
making GPIB board CIC, 7-11
System Controller as, 1-2
Controllers
definition, 1-1
emulation of non-controller GPIB
(example), 2-20 to 2-21
© National Instruments Corporation
D
data lines, 1-2
data transfers
high-speed (HS488), 7-2 to 7-3
enabling, 7-2 to 7-3
system configuration effects, 7-3
terminating, 7-1 to 7-2
DAV (data valid) line (table), 1-3
DCAS status word condition
bit position, hex value, and type
(table), 3-5
description, A-5
Talker/Listener applications, 7-12
waiting for messages from
Controller, 7-12
debugging. See also GPIB Spy utility;
troubleshooting and common questions;
Win32 Interactive Control utility.
communication errors, 4-4
repeat addressing, 4-4
termination method, 4-4
configuration errors, 4-3
global status variables, 4-1
GPIB error codes (table), 4-2, B-1
GPIB Spy, 4-1. See also GPIB
Spy utility.
other errors, 4-4
timing errors, 4-3
Win32 Interactive Control utility, 4-1
to 4-2
decl-32.h file
Borland C/C++ language interface file,
1-8, 1-14
I-3
NI-488.2M User Manual for Windows 95/Windows NT
Index
EARG error code
definition (table), 4-2
description, B-4
EBUS error code
definition (table), 4-2
description, B-7 to B-8
ECAP error code
definition (table), 4-2
description, B-7
Microsoft C/C++ language interface file,
1-7, 1-14
DevClear routine, 3-14
device functions. See NI-488 functions.
Device Manager device status codes,
troubleshooting, C-2 to C-3
device-level calls and bus management, 7-11
direct access to NI-488.2 dynamic link
library, 3-1
documentation
conventions used in manual, xv-xvi
how to use manual set, xiii-xiv
organization of manual, xiv-xv
related documentation, xvi
DOS applications, running
under Windows 95, 3-19 to 3-20
under Windows NT, 3-20 to 3-21
DOS support files
NI-488.2M for Windows 95, 1-7
NI-488.2M for Windows NT, 1-13
drivers
configuring, 4-3
driver and driver utilities for NI-488.2M
software, 1-6 to 1-7
DTAS status word condition
bit position, hex value, and type
(table), 3-5
description, A-5
Talker/Listener applications, 7-12
waiting for messages from
Controller, 7-12
dynamic link library, GPIB.
See NI-488.2M DLL.
ECIC error code
definition (table), 4-2
description, B-2 to B-3
EDMA error code
definition (table), 4-2
description, B-6
EDVR error code
definition (table), 4-2
description, B-2
troubleshooting, C-1 to C-2
EFSO error code
definition (table), 4-2
description, B-7
electronic support services, E-1 to E-2
e-mail support, E-2
END status word condition
bit position, hex value, and type
(table), 3-5
description, A-2
end-of-string character. See EOS.
ENEB error code
definition (table), 4-2
description, B-5 to B-6
ENOL error code
definition (table), 4-2
description, B-3
EOI (end or identify) line
purpose (table), 1-3
termination of data transfers, 7-1
EOIP error code
definition (table), 4-2
description, B-6
E
EABO error code
definition (table), 4-2
description, B-5
EADR error code
definition (table), 4-2
description, B-4
NI-488.2M User Manual for Windows 95/Windows NT
I-4
© National Instruments Corporation
Index
ESRQ error code
definition (table), 4-2
description, B-8 to B-9
ESTB error code
definition (table), 4-2
description, B-8
ETAB error code
definition (table), 4-2
description, B-9
event notification. See asynchronous event
notification in Win32 applications.
Event Status bit (ESB), 7-12 to 7-13
execute function n times (n *) function,
Win32 Interactive Control, 6-9
execute indirect file ($) function, Win32
Interactive Control, 6-9
execute previous function n times (n * !)
function, Win32 Interactive Control, 6-9
existing applications, running
Windows 95
DOS GPIB applications, 3-19
to 3-20
Win16 GPIB applications, 3-19
Windows NT, 3-20 to 3-21
EOS
configuring EOS mode, 7-1
end-of-string mode application example,
2-8 to 2-9
EOS comparison method, 7-1
EOS read method, 7-2
EOS write method, 7-1 to 7-2
ERR status word condition
bit position, hex value, and type
(table), 3-5
description, A-2
error codes and solutions
EABO, B-5
EADR, B-4
EARG, B-4
EBUS, B-7 to B-8
ECAP, B-7
ECIC, B-2 to B-3
EDMA, B-6
EDVR, B-2
EFSO, B-7
ENEB, B-5 to B-6
ENOL, B-3
EOIP, B-6
ESAC, B-5
ESRQ, B-8 to B-9
ESTB, B-8
ETAB, B-9
GPIB error codes (table), 4-2, B-1
error conditions
communication errors, 4-4
repeat addressing, 4-4
termination method, 4-4
configuration errors, 4-3
timing errors, 4-3
Win32 Interactive Control error
information, 6-10
error variable - iberr, 3-5 to 3-6
ESAC error code
definition (table), 4-2
description, B-5
© National Instruments Corporation
F
fax and telephone technical support, E-1
FaxBack support, E-2
FindLstn routine, 3-13
FindRQS routine, 7-15, 7-16
FTP support, E-1
functions. See auxiliary functions, Win32
Interactive Control; NI-488 functions.
G
General Purpose Interface Bus. See GPIB.
global variables, 3-4 to 3-6
count variables - ibcnt and ibcntl, 3-6
debugging applications, 4-1
error variable - iberr, 3-5 to 3-6
status word - ibsta, 3-4 to 3-5
I-5
NI-488.2M User Manual for Windows 95/Windows NT
Index
system configuration effects, 7-3
parallel polling, 7-17 to 7-18
implementing, 7-17 to 7-18
using NI-488 functions, 7-17
to 7-18
using NI-488.2 routines, 7-18
to 7-19
serial polling, 7-12 to 7-16
automatic serial polling, 7-13
to 7-14
autopolling and
interrupts, 7-14
stuck SRQ state, 7-13 to 7-14
service requests
from IEEE 488 devices, 7-12
from IEEE 488.2 devices, 7-12
to 7-13
SRQ and serial polling
with NI-488 device
functions, 7-14
with NI-488.2 routines, 7-15
to 7-16
Talker/Listener applications, 7-11
to 7-12
termination of data transfers, 7-1 to 7-2
waiting for GPIB conditions, 7-4
writing multithread Win32 GPIB
applications, 7-9 to 7-10
GPIB Spy utility
debugging applications, 4-1
exiting, 5-4
locating errors, 5-2
main window (illustration), 5-2
online help, 5-2
overview, 5-1
performance considerations, 5-4
starting, 5-1 to 5-2
under Windows 95, 5-1
under Windows NT, 5-1
viewing properties for recorded
calls, 5-2 to 5-3
gpib.dll file. See also NI-488.2M DLL.
Windows 95, 1-7
writing multithread Win32 GPIB
applications, 7-9 to 7-10
GPIB
configuration, 1-4 to 1-6. See also GPIB
configuration utility; Win32
Interactive Control utility.
controlling more than one
board, 1-5
linear and star system configuration
(illustration), 1-4
requirements, 1-5 to 1-6
definition, 1-1
overview, 1-1
sending messages across, 1-2 to 1-3
data lines, 1-2
handshake lines, 1-3
interface management lines, 1-3
Talkers, Listeners, and Controllers, 1-1
GPIB addresses
address bit configuration (table), 1-2
listen address, 1-2
primary, 1-2
purpose, 1-2
repeat addressing, 4-4
secondary, 1-2
syntax in Win32 Interactive
Control, 6-6
talk address, 1-2
GPIB configuration utility
overview, 8-1
Windows 95, 8-2 to 8-4
Windows NT, 8-4 to 8-5
GPIB programming techniques. See also
application development.
asynchronous event notification in
Win32 applications, 7-4 to 7-9
calling ibnotify function, 7-4 to 7-5
ibnotify programming example, 7-6
to 7-9
device-level calls and bus
management, 7-11
high-speed data transfers, 7-2 to 7-3
enabling HS488, 7-2 to 7-3
NI-488.2M User Manual for Windows 95/Windows NT
I-6
© National Instruments Corporation
Index
enabling high-speed data transfers, 7-2 to
7-3
modifying NI-488.2M driver
configuration dynamically (note), 4-3
ibdev function
opening devices, 3-9
using in Win32 Interactive Control
(example), 6-2
ibeos function, 7-1
ibeot function, 7-1
iberr error variable, 3-5 to 3-6
ibnotify function
asynchronous event notification in
Win32 GPIB applications (example),
7-6 to 7-9
calling, 7-4 to 7-5
ibonl function
placing device offline, 3-10, 3-15
using in Win32 Interactive Control
(example), 6-4
ibppc function
conducting parallel polls, 7-17 to 7-18
unconfiguring device for parallel polling,
7-18
ibrd function
reading measurement from device, 3-10
using in Win32 Interactive Control
(example), 6-3
ibrpp function, 7-18
ibrsp function
automatic serial polling, 7-13
SRQ and serial polling, 7-14
ibsta. See status word - ibsta.
ibtrg function
triggering devices, 3-10
using in Win32 Interactive Control
(example), 6-3
ibwait function
Talker/Listener applications, 7-11
terminating stuck SRQ state, 7-13
to 7-14
waiting for GPIB conditions, 7-4
waiting for measurement, 3-10
Windows NT, 1-14
gpib-32.dll exports
accessing directly, 3-17 to 3-19
direct entry with C, 3-16 to 3-17
gpib-32.dll file, 1-6, 1-13
gpib32ft.dll file, 1-7
gpib-32.obj file, 1-7, 1-14
gpibdos.exe file, 1-7
gpibdosk.vxd file, 1-7
gpib-nt.com file, 1-14
gpib-vdd.dll file, 1-13
H
handshake lines, 1-3
Help (display Win32 Interactive utility online
help) function (table), 6-9
help for GPIB Spy, 5-2
Help option function, Win32 Interactive
utility, 6-9
high-speed data transfers (HS488), 7-2
to 7-3
enabling HS488, 7-2 to 7-3
setting cable length, 7-2
system configuration effects, 7-3
HS488. See high-speed data
transfers (HS488).
HSS488 configuration message, 7-3
I
ibask function, 7-3
ibclr function
clearing devices, 3-9
using in Win32 Interactive Control
(example), 6-3
ibcnt and ibcntl variables, 3-6
ibconfig function
configuring GPIB board as CIC, 7-2
configuring GPIB driver, 4-3
determining assertion of EOI line, 7-2
enabling autopolling, 7-13
© National Instruments Corporation
I-7
NI-488.2M User Manual for Windows 95/Windows NT
Index
N
ibwrt function
acquiring measurement, 3-10
using in Win32 Interactive Control
(example), 6-3
IFC (interface clear) line, 1-3
interface management lines, 1-3
interrupts and autopolling, 7-14
n * ! (execute previous function n times)
function, Win32 Interactive Control, 6-9
n * (execute function n times) function,
Win32 Interactive Control, 6-9
NDAC (not data accepted) line (table), 1-3
NI-488 applications, programming.
See also application development.
acquiring measurement, 3-10
clearing devices, 3-9
flowchart of programming with devicelevel functions, 3-8
general steps and examples, 3-9 to 3-10
items to include, 3-7
opening devices, 3-9
placing device offline, 3-10
program shell (illustration), 3-8
reading measurement, 3-10
triggering devices, 3-10
waiting for measurement, 3-10
NI-488 functions
parallel polling, 7-17 to 7-18
programming considerations
advantages of using, 3-2
board-level functions, 3-3
choosing between functions and
routines, 3-2 to 3-4
device-level functions, 3-3
when to use functions, 3-2
serial polling, 7-14
using in Win32 Interactive Control
examples, 6-2 to 6-4
syntax, 6-6 to 6-7
NI-488.2 applications, programming
communicating with devices, 3-14
to 3-15
determining GPIB address of device,
3-13 to 14
flowchart of programming with routines,
3-12
general steps and examples, 3-13
to 3-15
initialization, 3-13
L
LACS status word condition
bit position, hex value, and type
(table), 3-5
description, A-5
Talker/Listener applications, 7-12
listen address, setting, 1-2
Listeners, 1-1.
See also Talker/Listener applications.
LOK status word condition
bit position, hex value, and type
(table), 3-5
description, A-3
M
manual. See documentation.
Message Available (MAV) bit, 7-12 to 7-13
messages, sending across GPIB, 1-2 to 1-3
data lines, 1-2
handshake lines, 1-3
interface management lines, 1-3
Microsoft C/C++ language interface files
NI-488.2M for Windows 95, 1-7
NI-488.2M for Windows NT, 1-14
Microsoft Visual Basic
language interface files
NI-488.2M for Windows 95, 1-8
NI-488.2M for Windows NT, 1-14
programming instructions, 3-16
Microsoft Visual C/C++ programming
instructions, 3-15
multithread Win32 GPIB applications,
writing, 7-9 to 7-10
NI-488.2M User Manual for Windows 95/Windows NT
I-8
© National Instruments Corporation
Index
troubleshooting.
See troubleshooting and
common questions.
uninstalling GPIB hardware, 1-9
to 1-10
uninstalling GPIB software, 1-11
to 1-12
Windows NT
Borland C/C++ language interface
files, 1-14
DOS and 16-bit Windows support
files, 1-13 to 1-14
how NI-488.2M software works
with Windows NT, 1-15 to 1-16
Microsoft C/C++ language interface
files, 1-14
Microsoft Visual Basic language
interface files, 1-14
NI-488.2M driver and driver
utilities, 1-13
reloading NI-488.2M driver, 1-16 to
1-17
sample application files, 1-14
troubleshooting.
See troubleshooting and
common questions.
unloading NI-488.2M driver, 1-16
to 1-17
niglobal.bas file, 1-14
NRFD (not ready for data) line (table), 1-3
number syntax, in Win32 Interactive Control,
6-4
initializing devices, 3-14
items to include, 3-11
placing board offline, 3-15
program shell (illustration), 3-12
reading measurement, 3-14 to 3-15
triggering instruments, 3-14
waiting for measurement, 3-14
NI-488.2 routines
parallel polling, 7-18 to 7-19
programming considerations
choosing between functions and
routines, 3-2 to 3-4
using with multiple boards or
devices, 3-3 to 3-4
serial polling, 7-15 to 7-16
serial polling examples
AllSpoll, 7-16
FindRQS, 7-16
Win32 Interactive Control syntax, 6-8
NI-488.2M DLL
choosing access method, 3-1
direct entry access, 3-1
NI-488.2M software, 1-6 to 1-12. See also
application development; NI-488
functions; NI-488.2 routines.
Windows 95
16-bit Windows support files, 1-7
Borland C/C++ language interface
files, 1-8
C language interface files, 1-7
to 1-8
DOS support files, 1-7
driver and driver utility files, 1-6
to 1-7
how NI-488.2M software works
with Windows 95, 1-8 to 1-9
Microsoft C/C++ language interface
files, 1-7
Microsoft Visual Basic language
interface files, 1-8
NI-488.2M driver and driver
utilities, 1-6 to 1-7
sample application files, 1-8
© National Instruments Corporation
O
online help for GPIB Spy, 5-2
P
parallel polling, 7-17 to 7-18
application example, 2-18 to 2-19
implementing, 7-17 to 7-18
using NI-488 functions, 7-17 to 7-18
I-9
NI-488.2M User Manual for Windows 95/Windows NT
Index
description, A-3
running existing applications. See existing
applications, running.
using NI-488.2 routines, 7-18 to 7-19
PPoll routine, 7-19
PPollConfig routine, 7-19
PPollUnconfig routine, 7-19
primary GPIB address, 1-2
problem solving. See debugging;
troubleshooting and common questions.
programming. See application development;
debugging; GPIB
programming techniques.
S
sample application files
NI-488.2M for Windows 95, 1-8
NI-488.2M for Windows NT, 1-14
secondary GPIB address, 1-2
Send routine, 3-14
SendIFC routine, 3-13
serial polling, 7-12 to 7-16
application example using NI-488.2
routines, 2-16 to 2-17
automatic serial polling, 7-13 to 7-14
autopolling and interrupts, 7-14
stuck SRQ state, 7-13 to 7-14
service requests
from IEEE 488 devices, 7-12
from IEEE 488.2 devices, 7-12
to 7-13
SRQ and serial polling
with NI-488 device functions, 7-14
with NI-488.2 routines, 7-15
to 7-16
service requests
application examples, 2-10 to 2-13
serial polling
IEEE 488 devices, 7-12
IEEE 488.2 devices, 7-12 to 7-13
stuck SRQ state, 7-13 to 7-14
Set 488.2 v function, Win32 Interactive
Control utility, 6-9
Set udname function, Win32 Interactive
Control utility, 6-9
setting up your system. See configuration.
software. See NI-488.2M software.
SRQ (service request) line
application examples, 2-10 to 2-13
purpose (table), 1-3
Q
q function, Win32 Interactive Control, 6-9
R
readme.txt file
Borland C/C++ language interface files,
1-8, 1-14
Microsoft C/C++ language interface
files, 1-7, 1-14
Microsoft Visual Basic language
interface files, 1-8, 1-14
NI-488.2M driver and driver
utilities, 1-6, 1-13
ReadStatusByte routine, 3-14, 7-15
Receive routine, 3-15
reloading NI-488.2M driver for
Windows NT, 1-16 to 1-17
REM status word condition
bit position, hex value, and type
(table), 3-5
description, A-4
REN (remote enable) line (table), 1-3
repeat addressing, 4-4
repeat previous function (!) function, Win32
Interactive Control, 6-9
requesting service. See service requests.
routines. See NI-488.2 routines.
RQS status word condition
bit position, hex value, and type
(table), 3-5
NI-488.2M User Manual for Windows 95/Windows NT
I-10
© National Instruments Corporation
Index
serial polling
automatic serial polling, 7-13
to 7-14
using NI-488 device
functions, 7-14
using NI-488.2 routines, 7-15
to 7-16
stuck SRQ state, 7-13 to 7-14
SRQI status word condition
bit position, hex value, and type
(table), 3-5
description, A-3
status word - ibsta, 3-4 to 3-5
ATN, A-4
CIC, A-4
CMPL, A-3
DCAS, 7-12, A-5
DTAS, 7-12, A-5
END, A-2
ERR, A-2
LACS, 7-12, A-5
LOK, A-3
programming considerations, 3-4 to 3-5
REM, A-4
RQS, A-3
SRQI, A-3
status word layout (table), 3-5, A-1
TACS, 7-11 to 7-12, A-4
TIMO, A-2
Win32 Interactive Control example, 6-9
string syntax, in Win32 Interactive Control,
6-4 to 6-5
stuck SRQ state, 7-13 to 7-14
System Controller as Controller-inCharge, 1-2
Talker/Listener applications, 7-11
to 7-12
talk address, setting, 1-2
Talker/Listener applications, 7-11 to 7-12
Talkers, 1-1
technical support, E-1 to E-2C-1
termination methods, errors caused by, 4-4
termination of data transfers, 7-1 to 7-2
TestSRQ routine, 7-15
timing errors, 4-3
TIMO status word condition
bit position, hex value, and type
(table), 3-5
description, A-2
Trigger routine, 3-14
triggering devices, example, 2-4 to 2-5
troubleshooting and common questions. See
also debugging; GPIB Spy utility; Win32
Interactive Control utility.
Windows 95, C-1 to C-6
common questions, C-3 to C-6
Device Manager device status code,
C-2 to C-3
EDVR error conditions, C-1 to C-2
Windows NT, D-1 to D-4
common questions, D-2 to D-4
examining NT system log using
Event Viewer, D-2
using diagnostic tools, D-1 to D-2
verifying NI-488.2M installation, D1 to D-2
turn OFF display (-) function, Win32
Interactive Control, 6-9
turn ON display (+) function, Win32
Interactive Control, 6-9
T
U
TACS status word condition
bit position, hex value, and type
(table), 3-5
description, A-4
uninstalling GPIB hardware from
Windows 95, 1-9
uninstalling GPIB software from
Windows 95, 1-11 to 1-12
© National Instruments Corporation
I-11
NI-488.2M User Manual for Windows 95/Windows NT
Index
unloading NI-488.2M driver for
Windows NT, 1-16 to 1-17
V
vbib-32.bas file, 1-14
Visual Basic. See Microsoft Visual Basic.
W
wait function. See ibwait function.
WaitSRQ routine
conducting serial polls, 7-15
waiting for measurement, 3-14
Win32 Interactive Control utility
auxiliary functions (table), 6-9
communicating with devices, 3-6
count, 6-10
debugging applications, 4-1 to 4-2
error information, 6-10
getting started, 6-1 to 6-4
NI-488 function examples, 6-2 to 6-4
overview, 6-1
programming considerations, 3-6
status word, 6-9
syntax, 6-4 to 6-9
addresses, 6-5
board-level functions (table), 6-7
device-level functions (table), 6-6
NI-488 functions (table), 6-6 to 6-7
NI-488.2 routines, 6-8
numbers, 6-4
strings, 6-4 to 6-5
NI-488.2M User Manual for Windows 95/Windows NT
I-12
© National Instruments Corporation
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement