refactored temp_log.py for versioned line formats, more extendable data return

This commit is contained in:
Kienan Stewart 2014-12-08 22:11:28 -05:00
parent 1985c99fbd
commit ea1ee9c386
1 changed files with 42 additions and 16 deletions

View File

@ -1,21 +1,47 @@
#! /usr/bin/env python
import serial, sys, time, io
serialPort = '/dev/ttyACM0'
try:
serialPort = sys.argv[1]
except Exception, e:
defaultSerialPort = '/dev/ttyACM0'
defaultVersion = 0
class ParseException(Exception):
"""Parser Exceptions"""
pass
ser = serial.Serial(port=serialPort, baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))
ser.isOpen()
buffer = ''
while True:
def parse_line(line, version = defaultVersion):
"""Parses a line and returns an array index by name of the data available"""
# @TODO This could be a class based versioning?
data = {}
if (version == 0):
line = line.split(' ')
data['temperature'] = float(line[-2])
else:
raise ParseException('Unimplemented line version', version)
return data
def main(args = sys.argv):
# @TODO switch to parse args or similar
# @TODO parse of temperature logger line version
serialPort = defaultSerialPort
lineVersion = defaultVersion
try:
buffer = ser.readline()
buffer_split = buffer.split(' ')
temp = float(buffer_split[-2])
print unicode(time.time()) + ',' + unicode(temp)
sys.stdout.flush()
serialPort = sys.argv[1]
except Exception, e:
sys.stderr.write(str(e) + '\n')
continue
pass
ser = serial.Serial(port=serialPort, baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))
ser.isOpen()
buffer = ''
while True:
try:
buffer = ser.readline()
data = parse_line(buffer, lineVersion)
print unicode(time.time()) + ',' + unicode(data['temperature'])
sys.stdout.flush()
except Exception, e:
sys.stderr.write(str(e) + '\n')
continue
if __name__ == '__main__':
main(sys.argv)