Status Reporting using SCPI

M9370A / M9371A / M9372A / M9374A / M9375A

 See Other SCPI Example Programs

Status Reporting using SCPI


This Visual Basic program demonstrates two methods of reading the analyzer's status registers:

  • Polled Bit Method - reads the Limit1 register continuously.

  • SRQ Method - enables an interrupt of the program when bit 6 of the status byte is set to 1. The program then queries registers to determine if the limit line failed.

To run this program, you need:

  • An established GPIB interface connection

  • A form with two buttons: Poll and SRQ Method

  • A means of causing the limit line to fail, assuming it passes initially.

Private Sub Poll_Click() ' POLL THE BIT METHOD
' Clear status registers

GPIB.Write "*CLS"

'Loop FOREVER

Do
  DoEvents
  GPIB.Write "STATus:QUEStionable:LIMit1:EVENt?"
  onn = GPIB.Read
Loop Until onn = 2

MsgBox "Limit 1 Failed "
End Sub


Private Sub SRQMethod_Click()
'SRQ METHOD

GPIB.Write "SYSTem:PRESet"
GPIB.Write "CALCulate:PARameter:SELect 'CH1_S11_1'"
'slow down the trace

GPIB.Write "SENS:BWID 150"

'Setup limit line

GPIB.Write "CALC:LIM:DATA 2,3e9,6e9,-2,-2"
GPIB.Write "CALC:LIMit:DISP ON"
GPIB.Write "CALC:LIMit:STATe ON"

' Clear status registers.

GPIB.Write "*CLS;*wai"
' Clear the Service Request Enable register.

GPIB.Write "*SRE 0"
' Clear the Standard Event Status Enable register.

GPIB.Write "*ESE 0"

' Enable questionable register, bit(10) to report to the status byte.

GPIB.Write "STATus:QUEStionable:ENABle 1024"

' Enable the status byte register bit3 (weight 8) to notify controller

GPIB.Write "*SRE 8"

' Enable the onGPIBNotify event

GPIB.NotifyMask = cwGPIBRQS
GPIB.Notify
End Sub

----------------------------------------------------
Private Sub GPIB_OnGPIBNotify(ByVal mask As Integer)
' check to see what failed
' was it the analyzer?

GPIB.Write "*STB?"
onn = GPIB.Read
If onn <> 0 Then
' If yes, then was it the questionable register?

  GPIB.Write "STATus:QUEStionable:EVENt?"
  onn = GPIB.Read
  ' Determine if the limit1 register, bit 8 is set.
  If onn = 1024 Then
  'if yes, then was it trace 1?
  GPIB.Write "STAT:QUES:LIMIT1:EVEN?"
  onn = GPIB.Read
  If onn = 2 Then MsgBox ("Limit Line1 Failed")
  End If
End If
End Sub