from serial import Serial from operator import xor from time import sleep from sys import exit ser = Serial("/dev/ttyUSB0", 600, 7, 'E', 1) id1 = 0 id2 = 0 writebit = 1 STX = 2 ETX = 3 EOT = 4 ENQ = 5 dummy = ord('a') addr = [ord('0') + id1, ord('0') + ((id2 << 1) | writebit), ENQ] def wrlist(data): ser.write("".join(map(chr, data))) pass def sendold(command, verb=False): checksum = reduce(xor, command) data = addr + [STX] + command + [checksum, EOT] if verb: print map(hex, data) print map(chr, data) wrlist(data) def send(command, verb=False): wrlist(addr) sleep(200.0/1000) checksum = reduce(xor, command) data = [STX] + command + [checksum, EOT] if verb: print map(hex, data) print map(chr, data) wrlist(data) seglo =1 #ord("1") seghi =1 #ord("1") clearcmd = [seghi, seglo, dummy, dummy, dummy, dummy, dummy, ord('N'), ETX] parama="sbn"[1] paramb="lrmz"[1] textcmd = [seghi, seglo, dummy, dummy, dummy, ord(parama), ord(paramb), ord('T'), ord('H'), ord('e'), ord('l'), ord('l'), ord('o'), ETX] cmd = textcmd if False: #sendold(clearcmd,verb=True) send(clearcmd,verb=True) ser.setTimeout(0) print list(ser.read(100)) exit() #send=sendold send(cmd, True) ser.setTimeout(0) while True: sleep(1.0/1000) ser.write("".join(map(chr, addr)) + "\x10\x31") x=ser.read(1) if x != "": print "!!!" print ord(x) print x send(cmd)