add secop_psi/triton.py

triton dil support

Change-Id: Ifbb0d382adec29b031a1e99c68515f7bb23ead45
This commit is contained in:
2022-04-28 12:56:42 +02:00
parent 98cdbafa7a
commit f1a639bc3c
2 changed files with 187 additions and 4 deletions

View File

@ -41,7 +41,7 @@ SOURCECMDS = {
' smua.source.output = 0 print("ok")',
1: 'reset()'
' smua.source.func = smua.OUTPUT_DCAMPS'
' display.smua.measure.func = display.MEASURE_VOLTS'
' display.smua.measure.func = display.MEASURE_DCVOLTS'
' smua.source.autorangei = 1'
' smua.source.output = 1 print("ok")',
2: 'reset()'
@ -65,11 +65,11 @@ class SourceMeter(HasIO, Module):
return float(self.communicate('print((smua.source.func+1)*smua.source.output)'))
def write_mode(self, value):
assert self.communicate(SOURCECMDS[value]) == 'ok'
if value == 'current':
self.write_vlimit(self.vlimit)
elif value == 'voltage':
self.write_ilimit(self.ilimit)
assert self.communicate(SOURCECMDS[value]) == 'ok'
return self.read_mode()
def read_ilimit(self):
@ -118,6 +118,7 @@ class Current(HasIO, Writable):
limit = Parameter('current limit', FloatRange(0, 2.0, unit='A'), default=2)
def initModule(self):
super().initModule()
self.sourcemeter.registerCallbacks(self)
def read_value(self):
@ -129,9 +130,9 @@ class Current(HasIO, Writable):
def write_target(self, value):
if value > self.sourcemeter.ilimit:
raise ValueError('current exceeds limit')
value = float(self.communicate('smua.source.leveli = %g print(smua.source.leveli)' % value))
if not self.active:
self.sourcemeter.write_mode('current') # triggers update_mode -> set active to True
value = float(self.communicate('smua.source.leveli = %g print(smua.source.leveli)' % value))
return value
def read_limit(self):
@ -163,6 +164,7 @@ class Voltage(HasIO, Writable):
limit = Parameter('voltage limit', FloatRange(0, 2.0, unit='V'), default=2)
def initModule(self):
super().initModule()
self.sourcemeter.registerCallbacks(self)
def read_value(self):
@ -174,9 +176,9 @@ class Voltage(HasIO, Writable):
def write_target(self, value):
if value > self.sourcemeter.vlimit:
raise ValueError('voltage exceeds limit')
value = float(self.communicate('smua.source.levelv = %g print(smua.source.levelv)' % value))
if not self.active:
self.sourcemeter.write_mode('voltage') # triggers update_mode -> set active to True
value = float(self.communicate('smua.source.levelv = %g print(smua.source.levelv)' % value))
return value
def read_limit(self):