upgrade upltrasound to newer version of frappy
This commit is contained in:
parent
7fc030191d
commit
319f3b4649
@ -20,43 +20,43 @@
|
||||
# *****************************************************************************
|
||||
"""Delay generator stanford 645"""
|
||||
|
||||
from secop.core import FloatRange, HasIodev, Module, Parameter, StringIO
|
||||
from secop.core import FloatRange, HasIO, Module, Parameter, StringIO
|
||||
|
||||
|
||||
class DG645(StringIO):
|
||||
end_of_line = '\n'
|
||||
|
||||
|
||||
class Delay(HasIodev, Module):
|
||||
class Delay(HasIO, Module):
|
||||
|
||||
on1 = Parameter('on delay 1', FloatRange(unit='sec'), readonly=False, default=0)
|
||||
off1 = Parameter('off delay 1', FloatRange(unit='sec'), readonly=False, default=60e-9)
|
||||
on2 = Parameter('on delay 2', FloatRange(unit='sec'), readonly=False, default=0)
|
||||
off2 = Parameter('off delay 2', FloatRange(unit='sec'), readonly=False, default=150e-9)
|
||||
|
||||
iodevClass = DG645
|
||||
ioClass = DG645
|
||||
|
||||
def read_on1(self):
|
||||
return self.sendRecv('DLAY?2').split(',')[1]
|
||||
return float(self.communicate('DLAY?2').split(',')[1])
|
||||
|
||||
def read_off1(self):
|
||||
return self.sendRecv('DLAY?3').split(',')[1]
|
||||
return float(self.communicate('DLAY?3').split(',')[1])
|
||||
|
||||
def read_on2(self):
|
||||
return self.sendRecv('DLAY?4').split(',')[1]
|
||||
return float(self.communicate('DLAY?4').split(',')[1])
|
||||
|
||||
def read_off2(self):
|
||||
return self.sendRecv('DLAY?5').split(',')[1]
|
||||
return float(self.communicate('DLAY?5').split(',')[1])
|
||||
|
||||
def write_on1(self, value):
|
||||
return self.sendRecv('DLAY 2,0,%g;DLAY?2' % value).split(',')[1]
|
||||
return float(self.communicate('DLAY 2,0,%g;DLAY?2' % value).split(',')[1])
|
||||
|
||||
def write_off1(self, value):
|
||||
result = self.sendRecv('DLAY 3,0,%g;DLAY?3' % value)
|
||||
return result.split(',')[1]
|
||||
result = self.communicate('DLAY 3,0,%g;DLAY?3' % value)
|
||||
return float(result.split(',')[1])
|
||||
|
||||
def write_on2(self, value):
|
||||
return self.sendRecv('DLAY 4,0,%g;DLAY?4' % value).split(',')[1]
|
||||
return float(self.communicate('DLAY 4,0,%g;DLAY?4' % value).split(',')[1])
|
||||
|
||||
def write_off2(self, value):
|
||||
return self.sendRecv('DLAY 5,0,%g;DLAY?5' % value).split(',')[1]
|
||||
return float(self.communicate('DLAY 5,0,%g;DLAY?5' % value).split(',')[1])
|
||||
|
@ -27,9 +27,9 @@ import time
|
||||
|
||||
import numpy as np
|
||||
|
||||
import iqplot
|
||||
from adq_mr import Adq
|
||||
from secop.core import Attached, BoolType, Done, FloatRange, HasIodev, \
|
||||
import secop_psi.iqplot as iqplot
|
||||
from secop_psi.adq_mr import Adq
|
||||
from secop.core import Attached, BoolType, Done, FloatRange, HasIO, \
|
||||
IntRange, Module, Parameter, Readable, StringIO, StringType
|
||||
from secop.properties import Property
|
||||
|
||||
@ -60,7 +60,8 @@ class Roi(Readable):
|
||||
interval = (0,0)
|
||||
|
||||
def initModule(self):
|
||||
self._main.register_roi(self)
|
||||
super().initModule()
|
||||
self.main.register_roi(self)
|
||||
self.calc_interval()
|
||||
|
||||
def calc_interval(self):
|
||||
@ -90,7 +91,7 @@ class FreqStringIO(StringIO):
|
||||
end_of_line = '\r'
|
||||
|
||||
|
||||
class Frequency(HasIodev, Readable):
|
||||
class Frequency(HasIO, Readable):
|
||||
pars = Attached()
|
||||
sr = Property('samples per record', datatype=IntRange(), default=16384)
|
||||
maxy = Property('plot y scale', datatype=FloatRange(), default=0.5)
|
||||
@ -98,8 +99,9 @@ class Frequency(HasIodev, Readable):
|
||||
value = Parameter('frequency@I,q', datatype=FloatRange(unit='Hz'), default=0)
|
||||
basefreq = Parameter('base frequency', FloatRange(unit='Hz'), readonly=False)
|
||||
nr = Parameter('number of records', datatype=IntRange(1,10000), default=500)
|
||||
freq = Parameter('target frequency', FloatRange(unit='Hz'), readonly=False, poll=True)
|
||||
amp = Parameter('amplitude', FloatRange(unit='dBm'), readonly=False, poll=True)
|
||||
freq = Parameter('target frequency', FloatRange(unit='Hz'), readonly=False)
|
||||
bw = Parameter('bandwidth lowpassfilter', datatype=FloatRange(unit='Hz'),default=10E6)
|
||||
amp = Parameter('amplitude', FloatRange(unit='dBm'), readonly=False)
|
||||
control = Parameter('control loop on?', BoolType(), readonly=False, default=True)
|
||||
time = Parameter('pulse start time', FloatRange(unit='nsec'),
|
||||
readonly=False)
|
||||
@ -116,7 +118,7 @@ class Frequency(HasIodev, Readable):
|
||||
save = Parameter('save data', BoolType(), readonly=False, default=True)
|
||||
pollinterval = Parameter(datatype=FloatRange(0,120))
|
||||
|
||||
iodevClass = FreqStringIO
|
||||
ioClass = FreqStringIO
|
||||
|
||||
lastfreq = None
|
||||
old = None
|
||||
@ -124,9 +126,8 @@ class Frequency(HasIodev, Readable):
|
||||
interval = (0,0)
|
||||
|
||||
def earlyInit(self):
|
||||
#assert self.iodev.startswith('serial:')
|
||||
#self._iodev = serial.Serial(self.iodev[7:])
|
||||
self.adq = Adq(self.nr, self.sr)
|
||||
super().earlyInit()
|
||||
self.adq = Adq(self.nr, self.sr, self.bw)
|
||||
self.roilist = []
|
||||
self.write_nr(self.nr)
|
||||
self.skipctrl = 0
|
||||
@ -155,24 +156,24 @@ class Frequency(HasIodev, Readable):
|
||||
|
||||
def set_freq(self):
|
||||
freq = self.freq + self.basefreq
|
||||
self.sendRecv('FREQ %.15g;FREQ?' % freq)
|
||||
self.communicate('FREQ %.15g;FREQ?' % freq)
|
||||
#self._iodev.readline().decode('ascii')
|
||||
return freq
|
||||
|
||||
def write_amp(self, amp):
|
||||
reply = self.sendRecv('AMPR %g;AMPR?' % amp)
|
||||
reply = self.communicate('AMPR %g;AMPR?' % amp)
|
||||
return float(reply)
|
||||
|
||||
def read_amp(self):
|
||||
reply = self.sendRecv('AMPR?')
|
||||
reply = self.communicate('AMPR?')
|
||||
return float(reply)
|
||||
|
||||
def write_freq(self, value):
|
||||
self.skipctrl = 2 # suppress control for the 2 next steps
|
||||
return value
|
||||
|
||||
def read_freq(self):
|
||||
"""used as main polling loop body"""
|
||||
def doPoll(self):
|
||||
"""main poll loop body"""
|
||||
if self.lastfreq is None:
|
||||
self.lastfreq = self.set_freq()
|
||||
self.adq.start()
|
||||
@ -180,13 +181,19 @@ class Frequency(HasIodev, Readable):
|
||||
self.starttime = time.time()
|
||||
times = []
|
||||
times.append(('init', time.time()))
|
||||
seadata = {p: float(getattr(self._pars, p)) for p in self._pars.parameters}
|
||||
seadata = {p: float(getattr(self.pars, p)) for p in self.pars.parameters}
|
||||
data = self.adq.getdata() # this will wait, if not yet finished
|
||||
#save sample
|
||||
#np.save('sample.dat',data)
|
||||
times.append(('wait',time.time()))
|
||||
freq = self.lastfreq # data was acquired at this freq
|
||||
if self.control:
|
||||
freq = self.lastfreq # data was acquired at this freq
|
||||
else:
|
||||
freq = self.set_freq()
|
||||
seadata['frequency'] = freq
|
||||
self.lastfreq = self.set_freq()
|
||||
times.append(('setf',time.time()))
|
||||
if self.control:
|
||||
self.lastfreq = self.set_freq()
|
||||
times.append(('setf',time.time()))
|
||||
self.adq.start() # start next acq
|
||||
times.append(('start',time.time()))
|
||||
roilist = [r for r in self.roilist if r.enable]
|
||||
@ -194,6 +201,7 @@ class Frequency(HasIodev, Readable):
|
||||
gates = self.adq.gates_and_curves(data, freq, self.interval,
|
||||
[r.interval for r in roilist])
|
||||
if self.save:
|
||||
times.append(('save',time.time()))
|
||||
tdata, idata, qdata, pdata = self.adq.curves
|
||||
seadata['timestep'] = tdata[1] - tdata[0]
|
||||
iqdata = np.array((idata, qdata, pdata), dtype='f4')
|
||||
@ -249,4 +257,5 @@ class Frequency(HasIodev, Readable):
|
||||
self.skipctrl -= 1
|
||||
elif self.control:
|
||||
self.freq = sorted((self.freq - self.maxstep, newfreq, self.freq + self.maxstep))[1]
|
||||
#print(times)
|
||||
return Done
|
||||
|
Loading…
x
Reference in New Issue
Block a user