class TFSerial: def __init__(self, _): self.ipcon = IPConnection() # Create IP connection self.master = BrickMaster(UID, self.ipcon) # Create device object self.ipcon.connect(HOST, PORT) self.timeout = 1 self.read_buffer = [] self.baudrate = None time.sleep(1) # Implement Serial functions that we don't need def setDTR(self, _): pass def flushInput(self): pass def flushOutput(self): pass # We misuse the setRTS call to start the bootloader mode (flush everyting etc) def setRTS(self, value): if value: self.master.start_wifi2_bootloader() def write(self, data): try: data = map(ord, data) while data != []: data_chunk = data[:60] length = len(data_chunk) data_chunk.extend([0]*(60-length)) ret = self.master.write_wifi2_flash(data_chunk, length) data = data[60:] except: traceback.print_exc() print "write", length, data def read(self, length): if len(self.read_buffer) >= length: ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) try: length_read = 0 t = time.time() while len(self.read_buffer) < length: data, l = self.master.read_wifi2_flash(60) data = data[:l] self.read_buffer.extend(data) if len(self.read_buffer) < length: time.sleep(0.1) if time.time() - t > self.timeout: break print "read", l, "of", length, data ret = ''.join(map(chr, data[:l])) except: traceback.print_exc() ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) def done(self): self.master.reset()
class TFSerial: def __init__(self, _): self.ipcon = IPConnection() # Create IP connection self.master = BrickMaster(UID, self.ipcon) # Create device object self.ipcon.connect(HOST, PORT) self.timeout = 1 self.read_buffer = [] self.baudrate = None time.sleep(1) # Implement Serial functions that we don't need def setDTR(self, _): pass def flushInput(self): pass def flushOutput(self): pass # We misuse the setRTS call to start the bootloader mode (flush everyting etc) def setRTS(self, value): if value: self.master.start_wifi2_bootloader() def write(self, data): try: data = map(ord, data) while data != []: data_chunk = data[:60] length = len(data_chunk) data_chunk.extend([0] * (60 - length)) ret = self.master.write_wifi2_flash(data_chunk, length) data = data[60:] except: traceback.print_exc() print "write", length, data def read(self, length): if len(self.read_buffer) >= length: ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) try: length_read = 0 t = time.time() while len(self.read_buffer) < length: data, l = self.master.read_wifi2_flash(60) data = data[:l] self.read_buffer.extend(data) if len(self.read_buffer) < length: time.sleep(0.1) if time.time() - t > self.timeout: break print "read", l, "of", length, data ret = ''.join(map(chr, data[:l])) except: traceback.print_exc() ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) def done(self): self.master.reset()
#!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID = "6e6MVj" # Change to your UID from tinkerforge.ip_connection import IPConnection from tinkerforge.brick_master import BrickMaster if __name__ == "__main__": ipcon = IPConnection() # Create IP connection master = BrickMaster(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected master.start_wifi2_bootloader() raw_input('Press key to exit\n') # Use input() in Python 3 ipcon.disconnect()