take over changes from ultrasound PC
Change-Id: I1eae717a5963e618d87ddf52db991d428a046d24
This commit is contained in:
@ -28,7 +28,8 @@ import numpy as np
|
||||
import frappy_psi.iqplot as iqplot
|
||||
from frappy_psi.adq_mr import Adq
|
||||
from frappy.core import Attached, BoolType, Done, FloatRange, HasIO, \
|
||||
IntRange, Module, Parameter, Readable, StringIO, StringType
|
||||
IntRange, Module, Parameter, Readable, StringIO, StringType, \
|
||||
IDLE, DISABLED, TupleOf, ArrayOf
|
||||
from frappy.properties import Property
|
||||
|
||||
|
||||
@ -52,7 +53,6 @@ class Roi(Readable):
|
||||
time = Parameter('start time', FloatRange(unit='nsec'), readonly=False)
|
||||
size = Parameter('interval (symmetric around time)', FloatRange(unit='nsec'), readonly=False)
|
||||
enable = Parameter('calculate this roi', BoolType(), readonly=False, default=True)
|
||||
#status = Parameter(export=False)
|
||||
pollinterval = Parameter(export=False)
|
||||
|
||||
interval = (0,0)
|
||||
@ -65,6 +65,9 @@ class Roi(Readable):
|
||||
def calc_interval(self):
|
||||
self.interval = (self.time - 0.5 * self.size, self.time + 0.5 * self.size)
|
||||
|
||||
def read_status(self):
|
||||
return (IDLE, '') if self.enable else (DISABLED, 'disabled')
|
||||
|
||||
def write_time(self, value):
|
||||
self.time = value
|
||||
self.calc_interval()
|
||||
@ -82,7 +85,7 @@ class Pars(Module):
|
||||
timestamp = Parameter('unix timestamp', StringType(), default='0', readonly=False)
|
||||
temperature = Parameter('T', FloatRange(unit='K'), default=0, readonly=False)
|
||||
mf = Parameter('field', FloatRange(unit='T'), default=0, readonly=False)
|
||||
sr = Parameter('rotaion angle', FloatRange(unit='deg'), default=0, readonly=False)
|
||||
sr = Parameter('rotation angle', FloatRange(unit='deg'), default=0, readonly=False)
|
||||
|
||||
|
||||
class FreqStringIO(StringIO):
|
||||
@ -91,16 +94,18 @@ class FreqStringIO(StringIO):
|
||||
|
||||
class Frequency(HasIO, Readable):
|
||||
pars = Attached()
|
||||
sr = Property('samples per record', datatype=IntRange(), default=16384)
|
||||
curves = Attached(mandatory=False)
|
||||
maxy = Property('plot y scale', datatype=FloatRange(), default=0.5)
|
||||
|
||||
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)
|
||||
sr = Parameter('samples per record', datatype=IntRange(1,1E9), default=16384)
|
||||
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)
|
||||
rusmode = Parameter('RUS mode on?', BoolType(), readonly=False, default=False)
|
||||
time = Parameter('pulse start time', FloatRange(unit='nsec'),
|
||||
readonly=False)
|
||||
size = Parameter('pulse length (starting from time)', FloatRange(unit='nsec'),
|
||||
@ -128,6 +133,7 @@ class Frequency(HasIO, Readable):
|
||||
self.adq = Adq(self.nr, self.sr, self.bw)
|
||||
self.roilist = []
|
||||
self.write_nr(self.nr)
|
||||
self.write_sr(self.sr)
|
||||
self.skipctrl = 0
|
||||
self.plotter = iqplot.Plot(self.maxy)
|
||||
self.calc_interval()
|
||||
@ -149,6 +155,9 @@ class Frequency(HasIO, Readable):
|
||||
# self.pollinterval = value * 0.0001
|
||||
return value
|
||||
|
||||
def write_sr(self, value):
|
||||
return value
|
||||
|
||||
def register_roi(self, roi):
|
||||
self.roilist.append(roi)
|
||||
|
||||
@ -174,7 +183,11 @@ class Frequency(HasIO, Readable):
|
||||
"""main poll loop body"""
|
||||
if self.lastfreq is None:
|
||||
self.lastfreq = self.set_freq()
|
||||
if self.rusmode:
|
||||
self.sr = int(12e9/self.lastfreq) #picking up 12 period at the ith frequency in the time scale
|
||||
# self.adq.samples_per_record = self.sr
|
||||
self.adq.start()
|
||||
|
||||
if self.starttime is None:
|
||||
self.starttime = time.time()
|
||||
times = []
|
||||
@ -198,6 +211,8 @@ class Frequency(HasIO, Readable):
|
||||
|
||||
gates = self.adq.gates_and_curves(data, freq, self.interval,
|
||||
[r.interval for r in roilist])
|
||||
if self.curves: # if attached Curves module is defined, update it
|
||||
self.curves.value = self.adq.curves
|
||||
if self.save:
|
||||
times.append(('save',time.time()))
|
||||
tdata, idata, qdata, pdata = self.adq.curves
|
||||
@ -257,3 +272,8 @@ class Frequency(HasIO, Readable):
|
||||
self.freq = sorted((self.freq - self.maxstep, newfreq, self.freq + self.maxstep))[1]
|
||||
#print(times)
|
||||
return Done
|
||||
|
||||
|
||||
class Curves(Readable):
|
||||
value = Parameter("t, i, q, pulse curves",
|
||||
TupleOf(*[ArrayOf(FloatRange(), 0, 16283) for _ in range(4)]), default=[[]] * 4)
|
||||
|
Reference in New Issue
Block a user