added missing write methods to AH2700 driver

forgot to put the write_* methods in the first change

Change-Id: I4a68d259f6f8f9674b72d88f184efe2b1b15819a
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/22099
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
zolliker 2020-01-08 14:28:52 +01:00
parent 7c7c1cc5af
commit d442c5b6bf

View File

@ -33,18 +33,17 @@ class Capacitance(HasIodev, Readable):
'value': Override('capacitance', FloatRange(unit='pF'), poll=True), 'value': Override('capacitance', FloatRange(unit='pF'), poll=True),
'freq': Parameter('frequency', FloatRange(unit='Hz'), readonly=False, default=0), 'freq': Parameter('frequency', FloatRange(unit='Hz'), readonly=False, default=0),
'voltage': Parameter('voltage', FloatRange(unit='V'), readonly=False, default=0), 'voltage': Parameter('voltage', FloatRange(unit='V'), readonly=False, default=0),
'loss': Parameter('loss', FloatRange(unit='deg'), readonly=False, default=0), 'loss': Parameter('loss', FloatRange(unit='deg'), default=0),
} }
iodevClass = Ah2700IO iodevClass = Ah2700IO
def read_value(self): def parse_reply(self, reply):
reply = self.sendRecv('SI') # single trigger
if reply.startswith('SI'): # this is an echo if reply.startswith('SI'): # this is an echo
self.sendRecv('SERIAL ECHO OFF') self.sendRecv('SERIAL ECHO OFF')
reply = self.sendRecv('SI') reply = self.sendRecv('SI')
if not reply.startswith('F='): # this is probably an error message like "LOSS TOO HIGH" if not reply.startswith('F='): # this is probably an error message like "LOSS TOO HIGH"
self.status = [self.Status.ERROR, reply] self.status = [self.Status.ERROR, reply]
return Done return
self.status = [self.Status.IDLE, ''] self.status = [self.Status.IDLE, '']
# examples of replies: # examples of replies:
# 'F= 1000.0 HZ C= 0.000001 PF L> 0.0 DS V= 15.0 V' # 'F= 1000.0 HZ C= 0.000001 PF L> 0.0 DS V= 15.0 V'
@ -65,6 +64,9 @@ class Capacitance(HasIodev, Readable):
self.loss = reply[7] self.loss = reply[7]
except IndexError: except IndexError:
pass # don't worry, loss will be updated next time pass # don't worry, loss will be updated next time
def read_value(self):
self.parse_reply(self.sendRecv('SI')) # SI = single trigger
return Done return Done
def read_freq(self): def read_freq(self):
@ -78,3 +80,11 @@ class Capacitance(HasIodev, Readable):
def read_volt(self): def read_volt(self):
self.read_value() self.read_value()
return Done return Done
def write_freq(self, value):
self.parse_reply(self.sendRecv('FR %g;SI' % value))
return Done
def write_volt(self, value):
self.parse_reply(self.sendRecv('V %g;SI' % value))
return Done