class BusPirateStream(threading.Thread): def __init__(self, port='COM1', sinks=None, autoStart=True): threading.Thread.__init__(self) self.daemon = True self.dispatcher=AsynchDispatch(sinks=sinks, callbacks={'serial_data':[self.send]}) try: self.bp = UART(port,115200) except: print 'Failed to start BusPirate' self.bp = None if autoStart: self.start() def run(self): if self.bp is not None: while(True): rx_bytes = self.bp.response(1000,True) if rx_bytes != '': self.dispatcher.dispatch(Message('serial_data',rx_bytes)) def send(self, message): if self.bp is not None: self.bp.bulk_trans(len(message.data),map(ord,list(message.data)))
if uart.enter_UART(): print "OK." else: print "failed." sys.exit() print "Reset display (toggle AUX): ", uart.cfg_pins(0x00) uart.cfg_pins(PinCfg.POWER | PinCfg.AUX | PinCfg.PULLUPS) print "OK." print "Setting UART speed to 38400", if uart.set_speed(UARTSpeed._38400): print "OK." else: print "failed" sys.exit() # Last, cross fingers and send the bitmap # Command is: 1F 28 66 11 xL xH yL yH 01 [bitmap] # We assume width is < 256, so xH is 0x00. Likewise, yH is always 0x00 on a 140x32 display initstring = [ 0x0C, 0x1F, 0x28, 0x66, 0x11, im.size[0], 0x00, im.size[1] // 8, 0x00, 0x01 ] uart.bulk_trans(len(initstring), initstring) print "send Bitmap" for i in range((len(picturebitmap) / 16)): print ".", uart.bulk_trans(16, picturebitmap[i * 16:i * 16 + 16])
print "Entering binary UART mode: ", if uart.enter_UART(): print "OK." else: print "failed." sys.exit() print "Reset display (toggle AUX): ", uart.cfg_pins(0x00) uart.cfg_pins(PinCfg.POWER | PinCfg.AUX | PinCfg.PULLUPS) print "OK." print "Setting UART speed to 38400", if uart.set_speed(UARTSpeed._38400): print "OK." else: print "failed" sys.exit() # Last, cross fingers and send the bitmap # Command is: 1F 28 66 11 xL xH yL yH 01 [bitmap] # We assume width is < 256, so xH is 0x00. Likewise, yH is always 0x00 on a 140x32 display initstring = [0x0C, 0x1F, 0x28, 0x66, 0x11, im.size[0], 0x00, im.size[1] // 8, 0x00, 0x01] uart.bulk_trans(len(initstring), initstring) print "send Bitmap" for i in range((len(picturebitmap) / 16)): print ".", uart.bulk_trans(16, picturebitmap[i * 16 : i * 16 + 16])