SetAveraging

This commit is contained in:
Ian Gulliver
2016-04-08 13:10:42 -07:00
parent bdd7531739
commit 7793c786c3
2 changed files with 35 additions and 11 deletions

View File

@@ -23,6 +23,9 @@ def PrintLine(label, value, unit=''):
ilt = ilt1000.ILT1000(device=FLAGS.device) ilt = ilt1000.ILT1000(device=FLAGS.device)
ilt.SetAveraging(ilt.AVERAGING_AUTO)
LINES = [ LINES = [
('Model', ilt.GetModelName, ''), ('Model', ilt.GetModelName, ''),
('Generation', ilt.GetGeneration, ''), ('Generation', ilt.GetGeneration, ''),

View File

@@ -25,14 +25,14 @@ class Saturated(Error):
pass pass
class CommandError(Error):
pass
# TODO commands: # TODO commands:
# eraselogdata # eraselogdata
# getlogdata # getlogdata
# setautaveraging
# setcurrentloop # setcurrentloop
# sethiaveraging
# setlowaveraging
# setmedaveraging
# setsimpleirrcal # setsimpleirrcal
# setuserdark # setuserdark
# startlogdata # startlogdata
@@ -61,6 +61,11 @@ class ILT1000(object):
FEEDBACK_RES_MEDIUM = 2 FEEDBACK_RES_MEDIUM = 2
FEEDBACK_RES_HIGH = 3 FEEDBACK_RES_HIGH = 3
AVERAGING_AUTO = 0
AVERAGING_LOW = 1 # 5 ㎐
AVERAGING_MEDIUM = 2 # 2 ㎐
AVERAGING_HIGH = 3 # 0.5 ㎐
# ILT1000 presents two FTDI serial devices, which become ttyUSB0 and ttyUSB1 # ILT1000 presents two FTDI serial devices, which become ttyUSB0 and ttyUSB1
# if nothing else is attached. ttyUSB0 seems to be completely non-responsive. # if nothing else is attached. ttyUSB0 seems to be completely non-responsive.
# We default to ttyUSB1 # We default to ttyUSB1
@@ -68,7 +73,7 @@ class ILT1000(object):
def __init__(self, device='/dev/ttyUSB1', set_time=True): def __init__(self, device='/dev/ttyUSB1', set_time=True):
self._dev = serial.Serial(device, baudrate=115200) self._dev = serial.Serial(device, baudrate=115200)
self._Clear() self._Clear()
assert int(self._SendCommand('echooff')) == 0 self._SendCommandOrDie('echooff')
if set_time: if set_time:
self.SetDateTime() self.SetDateTime()
@@ -91,6 +96,11 @@ class ILT1000(object):
raise Saturated(command) raise Saturated(command)
return ret return ret
def _SendCommandOrDie(self, command):
ret = self._SendCommand(command)
if int(ret) != 0:
raise CommandError
def GetModelName(self): def GetModelName(self):
return self._SendCommand('getmodelname') return self._SendCommand('getmodelname')
@@ -109,7 +119,7 @@ class ILT1000(object):
def SetAuxSerialNumber(self, serial): def SetAuxSerialNumber(self, serial):
# SPEC ERROR # SPEC ERROR
# This is undocumented. # This is undocumented.
assert int(self._SendCommand('setauxserialno %s' % serial)) == 0 self._SendCommandOrDie('setauxserialno %s' % serial)
def GetControllerTempF(self): def GetControllerTempF(self):
return int(self._SendCommand('gettemp')) return int(self._SendCommand('gettemp'))
@@ -127,8 +137,7 @@ class ILT1000(object):
def SetDateTime(self, now=None): def SetDateTime(self, now=None):
now = now or datetime.datetime.utcnow() now = now or datetime.datetime.utcnow()
timestr = now.strftime('%m/%d/%Y %H:%M:%S') timestr = now.strftime('%m/%d/%Y %H:%M:%S')
ret = self._SendCommand('setdatetime ' + timestr) self._SendCommandOrDie('setdatetime ' + timestr)
assert int(ret) == 0
def GetSensorCurrent(self): def GetSensorCurrent(self):
# SPEC ERROR # SPEC ERROR
@@ -172,7 +181,7 @@ class ILT1000(object):
} }
def SetDarkMode(self, mode): def SetDarkMode(self, mode):
assert int(self._SendCommand(self._DARK_MODE_COMMANDS[mode])) == 0 self._SendCommandOrDie(self._DARK_MODE_COMMANDS[mode])
def GetFactoryDarkVoltages(self): def GetFactoryDarkVoltages(self):
# SPEC ERROR # SPEC ERROR
@@ -200,7 +209,7 @@ class ILT1000(object):
# SPEC ERROR # SPEC ERROR
# Command returns -999 on my ILT1000-V02. Implementation below is untested # Command returns -999 on my ILT1000-V02. Implementation below is untested
# and likely wrong. # and likely wrong.
assert int(self._SendCommand('setclockfreq')) == 0 self._SendCommandOrDie('setclockfreq')
self._dev.write(b'A') self._dev.write(b'A')
time.sleep(60.0) time.sleep(60.0)
self._dev.write(b'B') self._dev.write(b'B')
@@ -210,4 +219,16 @@ class ILT1000(object):
return float(ret) * 100 return float(ret) * 100
def SetFeedbackResistor(self, resistor): def SetFeedbackResistor(self, resistor):
assert int(self._SendCommand('usefeedbackres %d' % resistor)) == 0 self._SendCommandOrDie('usefeedbackres %d' % resistor)
_AVERAGING_COMMANDS = {
AVERAGING_AUTO: 'setautaveraging',
AVERAGING_LOW: 'setlowaveraging',
AVERAGING_MEDIUM: 'setmedaveraging',
AVERAGING_HIGH: 'sethiaveraging',
}
def SetAveraging(self, averaging):
# SPEC WARNING
# There does not appear to be a way to read this back.
self._SendCommandOrDie(self._AVERAGING_COMMANDS[averaging])