From 63765798ffe401da67b190caddb94dfb37e9e2ba Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Fri, 8 Apr 2016 12:04:17 -0700 Subject: [PATCH] Get/set aux serial number, better clearing. --- dump.py | 2 +- ilt1000.py | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/dump.py b/dump.py index 3d8e3cd..bc24a71 100755 --- a/dump.py +++ b/dump.py @@ -28,7 +28,7 @@ LINES = [ ('Generation', ilt.GetGeneration, ''), ('Firmware version', ilt.GetFirmwareVersion, ''), ('Serial number', ilt.GetSerialNumber, ''), - # No GetAuxSerialNumber, because it errors on my ILT1000-V02 + ('Aux serial number', ilt.GetAuxSerialNumber, ''), ('Controller temperature', ilt.GetControllerTempF, '°F'), ('Ambient temperature', ilt.GetAmbientTempF, '°F'), ('Date/time', ilt.GetDateTime, ''), diff --git a/ilt1000.py b/ilt1000.py index bdbfc5f..52da60b 100755 --- a/ilt1000.py +++ b/ilt1000.py @@ -2,6 +2,7 @@ import datetime import serial +import time class Error(Exception): @@ -48,7 +49,6 @@ class Saturated(Error): # getcalfactor # getfeedbackres # setcalfactor -# setclockfreq # setsamplecount @@ -69,16 +69,18 @@ class ILT1000(object): # We default to ttyUSB1 def __init__(self, device='/dev/ttyUSB1', set_time=True): - self._dev = serial.Serial(device, 115200) - try: - # clear junk in outgoing buffer - self._SendCommand('echooff') - except UnsupportedCommand: - pass + self._dev = serial.Serial(device, baudrate=115200) + self._Clear() assert int(self._SendCommand('echooff')) == 0 if set_time: self.SetDateTime() + def _Clear(self): + self._dev.timeout = 0.1 + self._dev.write(b'\r\n') + self._dev.read(128) + self._dev.timeout = None + def _SendCommand(self, command): self._dev.write(command.encode('ascii') + b'\r\n') ret = self._dev.readline().rstrip().decode('ascii') @@ -107,6 +109,11 @@ class ILT1000(object): def GetAuxSerialNumber(self): return self._SendCommand('getauxserialno') + def SetAuxSerialNumber(self, serial): + # SPEC ERROR + # This is undocumented. + assert int(self._SendCommand('setauxserialno %s' % serial)) == 0 + def GetControllerTempF(self): return int(self._SendCommand('gettemp')) @@ -162,3 +169,12 @@ class ILT1000(object): def GetClockFrequencyHz(self): ret = self._SendCommand('getclockfreq') return float(ret) / 100 + + def SetClockFrequency(self): + # SPEC ERROR + # Command returns -999 on my ILT1000-V02. Implementation below is untested + # and likely wrong. + assert int(self._SendCommand('setclockfreq')) == 0 + self._dev.write(b'A') + time.sleep(60.0) + self._dev.write(b'B')