AnsweredAssumed Answered

Help with old 8753C (v4.01) GPIB problems

Question asked by paynterf on Jul 25, 2007
Latest reply on Jul 29, 2007 by bhokkan

I'm trying to control an 8753C (v4.01) via GPIB.  Using the same basic program architecture I have successfully controlled the 8510, 8722, 8752, E8362, and E5071 NWA's, along with a R&S FSP spectrum analyzer, so I'm fairly experienced at GPIB control, retrieving data, etc.

However, the 8753C keeps locking up on me when I try to send it multiple commands in sequence.  I can send it the same set of commands one at a time by single-stepping my program and they all work fine individually - its just when I send them all at once that I get into problems.

I have also tried testing with the TRTEST.EXE program that comes with my CEC488 USB-GPIB adaptor, and with it I can successfully control the NWA one GPIB command at a time basis.

I figured out how to turn on the  GPIB diagnostics feature on the 8753C so I could watch each command come in.  I see the text of each command, with one or two 'pi' symbols interspersed (spaces?) between commands.  It appears that 2 'pi' symbols between each command is good, but when I see only one 'pi' symbol after the last command it locks up and won't accept any more commands.

I looked through the firmware update history (the v4.01 firmware is original from 1989!), but didn't find any references to GPIB command sequencing  problems.

Here is a snippet of my (Delphi) code for setting sweep parameters, edited a bit for clarity..

     //note extra ';'

     //IF BW 3/24/07 copied from 5071 & adapted
     tmpstr := Form_NWA8753.Combo_IFBW.Text ;
     spcidx := Pos( ' ', tmpstr ) ;
     valstr := LeftStr( tmpstr, spcidx ) ;
     bwfreq := StrToFloat( valstr ) ;
     bwstr := IntToStr( trunc( bwfreq ) ) ;
     NWA_Str_Out( 'IFBW' + bwstr + ';', NWA_IO_GPIB ) ;    

     //set power
     Nwa_Str_Out('POWE'+ Form_NWA8753.Spin_NWAPow.Text + ';'); //07/24/07 del space

The NWA_Str_Out() function simply calls the CEC-488 'send()' function:

     send( gpibaddr, sendstr, status ) ;

and returns the status value.

Any thoughts?