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