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),
'freq': Parameter('frequency', FloatRange(unit='Hz'), 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
def read_value(self):
reply = self.sendRecv('SI') # single trigger
def parse_reply(self, reply):
if reply.startswith('SI'): # this is an echo
self.sendRecv('SERIAL ECHO OFF')
reply = self.sendRecv('SI')
if not reply.startswith('F='): # this is probably an error message like "LOSS TOO HIGH"
self.status = [self.Status.ERROR, reply]
return Done
return
self.status = [self.Status.IDLE, '']
# examples of replies:
# '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]
except IndexError:
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
def read_freq(self):
@ -78,3 +80,11 @@ class Capacitance(HasIodev, Readable):
def read_volt(self):
self.read_value()
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