def main(): hud = Hud() # ser = serial.Serial(port = '/dev/ttyUSB0', # baudrate = 9600, # parity = serial.PARITY_NONE, # stopbits = serial.STOPBITS_ONE, # bytesize = serial.EIGHTBITS, # timeout = 1) logger = 0 kv = {} stringKV = {} firstPass = True while True: # wrapping this all in a try-catch should handle file-opening/-closing timeline nicely # i.e. catch TclError(possibly tclError): close file # # var parsing and file writing will need to be wrapped in classes sleep(0.5) #kv = RT.randomKV() #print kv try: #inLine = ser.readline() inLine = RT.randomKVLine() if inLine[0] == '@': newKV = parseLineToKV(inLine) newStringKV = parseLineToStringKV(inLine) if firstPass: keys = sorted(newStringKV.keys()) logger = Logger(keys) firstPass = False if newKV != kv: kv = newKV stringKV = newStringKV hud.updateHud(kv) hud.update_idletasks() hud.update() logger.logKV(stringKV) print strfkv(stringKV) except TclError: #possibly tclError print "HUD was closed" logger.close() break except err: print err break