view agilent_r5071.py @ 85:60ad91b4c67c default tip

Add 'quick' option to use a faster sweep time with no averaging. Useful for testing the hardware is setup correctly without having to wait 3 minutes.
author Daniel O'Connor <doconnor@gsoft.com.au>
date Mon, 21 Oct 2024 14:12:50 +1030
parents 6bd941d96c03
children
line wrap: on
line source

# Docs are at http://ena.tm.agilent.com/e5071c/manuals/webhelp/eng/

import numpy
import scpi
import pylab

fname = 'data'

# Connect
inst = scpi.instURL('vxi://203.31.81.47')

# Read ID
inst.write('*IDN?')
inst.read()
# 'Agilent Technologies,E5071C,MY46109815,A.09.54\n'

# Set to 8 byte floats
inst.write(":FORM:DATA REAL")

# Set to little endian
inst.write(':FORM:BORD SWAP')

# Grab frequency data
inst.write(":SENS1:FREQ:DATA?")
freqs = scpi.bindecode(inst.read(), dtype = numpy.float64)

# Grab trace data
inst.write(":CALC1:TRACE1:DATA:FDATA?")
dat = scpi.bindecode(inst.read(), dtype = numpy.float64)

# We only want the real part (no imag for this measurement)
dat = dat[::2]

# Plot
pylab.plot(freqs, dat)
pylab.show()

# Save for later
numpy.savez('data.npz', freqs, dat)

# Load..
f = numpy.load(fname + '.npz')
freqs = f['arr_0']
dat = f['arr_1']

f = file(fname + '.csv', 'wb')
f.write("Frequencies\n")
numpy.savetxt(f, [freqs], delimiter = ',')
f.write("Gain\n")
numpy.savetxt(f, [dat], delimiter = ',')
del f