From 9181dadd04be60a154f0dbfb1a9dd92977c8db9d Mon Sep 17 00:00:00 2001
From: LAB-NEMS <LAB-NEMS@institut2b.physik.rwth-aachen.de>
Date: Wed, 18 Jul 2018 16:47:54 +0200
Subject: [PATCH] Added trace support for Agilent E8364B
---
.../Agilent_NetworkAnalyzer.ini | 2 +
.../Agilent_NetworkAnalyzer.py | 37 +++++++++++--------
2 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
index acf4f58..437ef83 100644
--- a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
+++ b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
@@ -182,6 +182,7 @@ datatype: BOOLEAN
def_value: False
set_cmd: :SENS:AVER
group: Acquisition
+model_value_1: E5071C
[# of averages]
datatype: DOUBLE
@@ -190,6 +191,7 @@ low_lim: 1
high_lim: 65536
set_cmd: :SENS:AVER:COUN
group: Acquisition
+model_value_1: E5071C
[Wait for new trace]
datatype: BOOLEAN
diff --git a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
index 1d19371..4c77117 100644
--- a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
+++ b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
@@ -56,17 +56,12 @@ class Driver(VISA_Driver):
# create new measurement, if enabled is true
if value:
newName = 'LabC_%s' % param
- self.writeAndLog("CALC:PAR:EXT '%s','%s'" % (newName, param))
+ if self.getModel() in ('E8364B'):
+ self.writeAndLog("CALC:PAR:DEF '%s',%s" % (newName, param))
+ else:
+ self.writeAndLog("CALC:PAR:EXT '%s','%s'" % (newName, param))
# show on PNA screen
iTrace = 1 + ['S11', 'S21', 'S12', 'S22'].index(param)
- # sPrev = self.askAndLog('DISP:WIND:CAT?')
- # if sPrev.find('EMPTY')>0:
- # # no previous traces
- # iTrace = 1
- # else:
- # # previous traces, add new
- # lTrace = sPrev[1:-1].split(',')
- # iTrace = int(lTrace[-1]) + 1
self.writeAndLog("DISP:WIND:TRAC%d:FEED '%s'" % (iTrace, newName))
# add to dict with list of measurements
self.dMeasParam[param] = [newName]
@@ -88,6 +83,7 @@ class Driver(VISA_Driver):
self.getActiveMeasurements()
# get selected parameter
param = quant.name[:3]
+ self.log(self.dMeasParam)
value = (param in self.dMeasParam)
elif quant.name in ('S11', 'S21', 'S12', 'S22'):
# check if channel is on
@@ -109,10 +105,14 @@ class Driver(VISA_Driver):
* (self.getValue('# of averages') if bAverage else 1))
# wait for trace, either in averaging or normal mode
if bWaitTrace:
- self.writeAndLog(':ABOR;:TRIG:SOUR BUS;:INIT:CONT OFF;:INIT:IMM;')
- if bAverage:
- self.writeAndLog(':TRIG:AVER ON')
- self.writeAndLog(':TRIG:SING;')
+ if self.getModel() not in ('E8364B'):
+ self.writeAndLog(":ABOR;:TRIG:SOUR BUS;:INIT:CONT OFF;:INIT:IMM;")
+ if bAverage:
+ self.writeAndLog(':TRIG:AVER ON')
+ self.writeAndLog(':TRIG:SING;')
+
+ else:
+ self.writeAndLog(":ABOR;:INIT:CONT OFF;:INIT:IMM;")
self.writeAndLog('*OPC')
# wait some time before first check
self.wait(0.03)
@@ -140,7 +140,11 @@ class Driver(VISA_Driver):
self.write(':FORM REAL,32;CALC:DATA? SDATA', bCheckError=False)
sData = self.read(ignore_termination=True)
if bWaitTrace:
- self.writeAndLog(':TRIG:SOUR INT;:TRIG:AVER OFF;:ABOR;')
+ if self.getModel() in ('E8364B'):
+ self.writeAndLog(':TRIG:SOUR MAN;:ABOR;')
+
+ else:
+ self.writeAndLog(':TRIG:SOUR INT;:TRIG:AVER OFF;:ABOR;')
# strip header to find # of points
i0 = sData.find(b'#')
@@ -187,7 +191,10 @@ class Driver(VISA_Driver):
sParam = self.askAndLog(":CALC:PAR%d:DEF?" % (n+1))
self.dMeasParam[sParam] = (n+1)
else:
- sAll = self.askAndLog("CALC:PAR:CAT:EXT?")
+ if self.getModel() in ('E8364B'):
+ sAll = self.askAndLog("CALC:PAR:CAT?")
+ else:
+ sAll = self.askAndLog("CALC:PAR:CAT:EXT?")
# strip "-characters
sAll = sAll[1:-1]
# parse list, format is channel, parameter, ...
--
GitLab