Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add log freq option for PNA5222A #47

Open
wants to merge 9 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lightlab/equipment/abstract_drivers/configurable.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from lightlab import visalogger as logger
from pyvisa import VisaIOError
from contextlib import contextmanager
import dpath
import dpath.util
import json
from numpy import floor
from pathlib import Path
Expand Down Expand Up @@ -55,7 +55,7 @@ def get(self, cStr, asCmd=True):
asCmd (bool): if true, returns a tuple representing a command. Otherwise returns just the value
'''
try:
val = dpath.get(self.dico, cStr, separator=self.separator)
val = dpath.util.get(self.dico, cStr, separator=self.separator)
except KeyError:
raise KeyError(cStr + ' is not present in this TekConfig instance')
if type(val) is dict and '&' in val.keys():
Expand Down
34 changes: 26 additions & 8 deletions lightlab/equipment/lab_instruments/Agilent_N5222A_NA.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,21 +125,24 @@ def sweepSetup(self, startFreq, stopFreq, nPts=None, dwell=None, ifBandwidth=Non

self.getSwpDuration(forceHardware=True)

def sweepEnable(self, swpState=None):
def sweepEnable(self, swpState=None, swpType='LOG'):
''' Switches between sweeping (True) and CW (False) modes

Args:
swpState (bool): If None, only gets, doesn't set.
swpType (bool): LOGARITHMIC (LOG), LINEAR (LIN), POWER (POW), CONTINUOUS WAVE (CW), SEGMENT (SEG), PHASE (PHAS)
swpType (bool): LOGARITHMIC (LOG), LINEAR (LIN), POWER (POW), CONTINUOUS WAVE (CW), SEGMENT (SEG), PHASE (PHAS)

Returns:
(bool): is the output sweeping
'''
if swpState is not None:
self.setConfigParam('SENS:SWE:TYPE', 'LIN' if swpState else 'CW')
self.setConfigParam('SENS:SWE:TYPE', swpType if swpState else 'CW')
self.setConfigParam('SENS:SWE:TYPE', swpType if swpState else 'CW')
if self.swpRange is not None:
self.setConfigParam('SENS:FREQ:STAR', self.swpRange[0], forceHardware=True) # Hack
self.setConfigParam('SENS:FREQ:STOP', self.swpRange[1], forceHardware=True) # Hack
return self.getConfigParam('SENS:SWE:TYPE') == 'LIN'
return self.getConfigParam('SENS:SWE:TYPE') == swpType

def normalize(self):
pass
Expand Down Expand Up @@ -197,19 +200,34 @@ def spectrum(self):
# raise NotImplementedError('not working')
# self.setConfigParam('SENS:SWE:GRO:COUN', nGroups)

self.setConfigParam('SENS:SWE:MODE', 'HOLD')
self.write('SENS:SWE:MODE SING')
self.query('*OPC?')
# self.setConfigParam('SENS:SWE:MODE', 'HOLD')
# self.write('SENS:SWE:MODE SING')
# self.query('*OPC?')

self.setConfigParam('FORM', 'ASC')
# self.setConfigParam('FORM', 'ASC')

self.open()
dbm = self.query_ascii_values('CALC{}:DATA? FDATA'.format(self.chanNum))
self.close()

fStart = float(self.getConfigParam('SENS:FREQ:STAR'))
fStop = float(self.getConfigParam('SENS:FREQ:STOP'))
freqs = np.linspace(fStart, fStop, len(dbm))

swpType = self.getConfigParam('SENS:SWE:TYPE')

if swpType == 'LOG':
freqs = np.logspace(np.log10(fStart), np.log10(fStop), len(dbm))
else:
freqs = np.linspace(fStart, fStop, len(dbm))


swpType = self.getConfigParam('SENS:SWE:TYPE')

if swpType == 'LOG':
freqs = np.logspace(np.log10(fStart), np.log10(fStop), len(dbm))
else:
freqs = np.linspace(fStart, fStop, len(dbm))

# return freqs, dbm
return Spectrum(freqs, dbm)

Expand Down
22 changes: 14 additions & 8 deletions lightlab/equipment/lab_instruments/Aragon_BOSA_400.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ def ask_TRACE_ASCII(self):
self.write("FORM ASCII")
self.write("TRAC?")
data = self.read_TRACE_ASCII()
data = self.query("TRAC?", withTimeout)
# data = self.query("IDN?")
# data = self.query("TRAC?", withTimeout)
# data = self.query("IDN?")
return data

def ask_TRACE_REAL(self):
Expand All @@ -173,6 +173,7 @@ def ask_TRACE_REAL(self):
data = self.read_TRACE_REAL_GPIB(NumPoints)
return data


def read_TRACE_ASCII(self):

""" read something from device"""
Expand Down Expand Up @@ -210,24 +211,29 @@ def read_TRACE_REAL_GPIB(self,numPoints):
raise e
return Trace

# def spectrum(self, form='REAL'):
# data = ""
# data = self.interface.query("TRAC?")
# return data

def spectrum(self, form='REAL'):
x=list()
y=list()
if(form=='ASCII'):
data = self.ask_TRACE_ASCII()
# data = self.ask_TRACE_ASCII()
# for i in range(0,len(data),2):
# x.append(data[i])
# y.append(data[i+1])
# data = self.ask_TRACE_ASCII()
# for i in range(0,len(data),2):
# x.append(data[i])
# y.append(data[i+1])
elif(form=='REAL'):
data = self.ask_TRACE_REAL()
for i in range(0,len(data),1):
x.append(data[i][0])
y.append(data[i][1])
else:
log.exception("Please choose form 'REAL' or 'ASCII'")
# return Spectrum(x, y, inDbm=True)
return data

return Spectrum(x, y, inDbm=True)

def CAParam(self, avgCount='CONT', sMode='HR', noiseZero=False):
if self.__currApp == 'CA' and avgCount in self.__avg and sMode in self.__sMode:
Expand Down
Loading
Loading