#! /usr/bin/env python import serial, sys, time, io defaultSerialPort = '/dev/ttyACM0' defaultVersion = 0 class ParseException(Exception): """Parser Exceptions""" pass 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: serialPort = sys.argv[1] except Exception, e: 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)