I understand that this post may not be appropriate for this listserv, so I
really really promise to never ever post any more OT messages to this listserv
again...

If you are mixing 488.1 and 488.2 instruments, you will have to be careful
with timeouts and handshaking. 

1. verify that the GPIB cables are good, that the instrument's address
switches are correct, that the base address switches of ISA controller (if
used) are correct, that the proper GPIB header file (decl-x.h) is being used, 

2. if possible, physically remove all other Talkers from the GPIB bus; do not
just turn other instruments off. 

3. verify that the controller and instrument are expecting same timeout, end
of command char or EOI, etc 

4. Always get and display the status register before and after each
transaction, and send ibclr to the instrument before other commands.

5. try an init loop like this: 

#include <windows.h> 
#include "decl-32.h" 

char buffer[BUF_SIZE]; 
        int i, num_listeners; //the number of listeners on the bus 
        unsigned short address; //the address of a listener 
        Addr4882_t instruments[NUM_DEVICES], result[NUM_DEVICES]; 

        SendIFC(0); 
        if(ibsta & ERR) 
                gpib_error(1, "Could not send IFC"); 
        
        for(i = 0; i < NUM_DEVICES - 1; i++) 
                instruments[i] = i + 1; 
        
        instruments[NUM_DEVICES - 1] = NOADDR;    

        cout << "Finding all listeners on the bus..." << endl; 

        FindLstn(0, instruments, result, NUM_DEVICES); 
        
        if(ibsta & ERR) 
          gpib_error(2, "Could not find listeners"); 

        num_listeners = ibcnt; 
        result[num_listeners] = NOADDR; 
        cout << "Found " << num_listeners << " devices on the bus" << endl; 

        SendList(0, result, "*IDN?", 5L, NLend); 
        
        if (ibsta & ERR) 
          gpib_error(3, "Could not send *IDN? to devices"); 

        for(i = 0; i < num_listeners; i++) { 
                /* We will loop over the devices, receiving their response 
                to our query, and outputting it. */ 
                
                Receive(0, result[i], buffer, BUF_SIZE, STOPend); 
                
                if(ibsta & ERR) 
                   gpib_error(4, "Could not receive from device"); 

                address = GetPAD(result[i]); 
                
                buffer[ibcnt] = '\0'; 
                
                cvout << "Device #" << address << " has ID string: " <<
buffer; 
        }         
} 

luck, 
Brian 

-----Original Message----- 
From: joan vicent castell [ mailto:[email protected]] 
Sent: Friday, February 13, 2004 1:14 AM 
To: [email protected] 
Subject: Old Anritsu spectrum analyzer 

Hi everybody, 

We've got a MS2601B, Anritsu Spectrum Analyzer that can do EMI measurements 
connected to a computer via GPIB port. 

Recently we changed the GPIB card to a new one  (National Instruments, 
model: 183617"k"-01, and the NI488.2 protocol ). 

And all the other instruments worked well but the Anritsu. 

I have a problem when I send instructions as IBWRT or IBRD, the device 
doesn't make anything, but it works when I send IBCLR or IBLOC, so I don't 
know what happens to it. 

I was working perfectly with the old HPIB card, and using instructions as 
IOOUTPUTS or IOENTERS. 
I'm doing my programs en TurboC (old card) and in Delphi (new one). I don't 
use Labview. 

Maybe to communicate with this Spectrum Analyzer it's necessary to compile 
the programs with a special file or library that I don't have. 

Also when i start the MAX 2.0 (Measurement & Automation Explorer) NI 
program, doesn't answer to the *IDN? query or to the specific commands (to 
control de instrument) I send to it. 

Does anybody have an idea of what is or what can be the problem? 
Need your help, please. 

Thanks, 


Reply via email to