def connect(self): """ Opens connection with the eBot via BLE. Connects with the first eBot that the computer is paired to. :raise Exception: No eBot found """ baudRate = 115200 ports = [] if os.name == "posix": if sys.platform == "linux2": #usbSerial = glob.glob('/dev/ttyUSB*') ports = glob.glob('/dev/rfcomm*') #print "Support for this OS is under development." elif sys.platform == "darwin": ports = glob.glob('/dev/tty.eBo*') #usbSerial = glob.glob('/dev/tty.usbserial*') else: print "Unknown posix OS." sys.exit() elif os.name == "nt": ports = self.getOpenPorts() #ports = ['COM' + str(i + 1) for i in range(256)] #EBOT_PORTS = getEBotPorts() connect = 0 ebot_ports = [] ebot_names = [] line = "a" print "connecting", for port in ports: try: print ".", if (line[:2] == "eB"): break s = Serial(port, baudRate, timeout=5.0, writeTimeout=5.0) s._timeout = 5.0 s._writeTimeout = 5.0 #try: # s.open() #except: # continue while (line[:2] != "eB"): if (s.inWaiting() > 0): line = s.readline() s.write("<<1?") sleep(0.5) line = s.readline() if (line[:2] == "eB"): ebot_ports.append(port) ebot_names.append(line) connect = 1 self.port = s self.portName = port self.port._timeout = 5.0 self.port._writeTimeout = 5.0 self.port.flushInput() self.port.flushOutput() break #s.close() # self. except: try: if s.isOpen(): s.close() except: pass if (connect == 0): try: self.port.close() except: pass #sys.stderr.write("Could not open serial port. Is robot turned on and connected?\n") print "Connection Error", "No eBot found. Please reconnect and try again.", #import ctypes # An included library with Python install. #ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1) raise Exception("No eBot found") sleep(.01) try: self.port.write('<<1E') sleep(0.4) line = self.port.readline() if (line != ">>1B\n" and line != ">>1B" and line != ">>\n" and line != ">>"): self.lostConnection() self.port.write("<<1O") sleep(0.4) self.port.write("F") sleep(0.2) self.port.flushInput() self.port.flushOutput() print "connected" self.receive_thread = Thread(target=self.recieve_background) self.thread_flag = 1 self.receive_thread.start() self.offset_counter = 0 except: print "COM Error", "Robot connection lost..." sys.stderr.write("Could not write to serial port.\n") self.serialReady = False sys.stderr.write("Robot turned off or no longer connected.\n") sleep(7) self.serialReady = True
def connect(self): """ Opens connection with the eBot via BLE. Connects with the first eBot that the computer is paired to. :raise Exception: No eBot found """ baudRate = 115200 ports = [] if os.name == "posix": if sys.platform == "linux2": #usbSerial = glob.glob('/dev/ttyUSB*') ports = glob.glob('/dev/tty.eBo*') #print "Support for this OS is under development." elif sys.platform == "darwin": ports = glob.glob('/dev/tty.eBo*') #usbSerial = glob.glob('/dev/tty.usbserial*') else: print "Unknown posix OS." sys.exit() elif os.name == "nt": ports = self.getOpenPorts() #ports = ['COM' + str(i + 1) for i in range(256)] #EBOT_PORTS = getEBotPorts() connect = 0 ebot_ports = [] ebot_names = [] line = "a" print "connecting", for port in ports: try: print ".", if (line[:2] == "eB"): break s = Serial(port, baudRate, timeout=5.0, writeTimeout=5.0) s._timeout = 5.0 s._writeTimeout = 5.0 #try: # s.open() #except: # continue while (line[:2] != "eB"): if (s.inWaiting()>0): line=s.readline() s.write("<<1?") sleep(0.5) line = s.readline() if (line[:2] == "eB"): ebot_ports.append(port) ebot_names.append(line) connect = 1 self.port = s self.portName = port self.port._timeout = 5.0 self.port._writeTimeout = 5.0 self.port.flushInput() self.port.flushOutput() break #s.close() # self. except: try: if s.isOpen(): s.close() except: pass if (connect == 0): try: self.port.close() except: pass #sys.stderr.write("Could not open serial port. Is robot turned on and connected?\n") print "Connection Error", "No eBot found. Please reconnect and try again.", #import ctypes # An included library with Python install. #ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1) raise Exception("No eBot found") sleep(.01) try: self.port.write('<<1E') sleep(0.4) line = self.port.readline() if (line != ">>1B\n" and line != ">>1B" and line != ">>\n" and line != ">>"): self.lostConnection() self.port.write("<<1O") sleep(0.4) self.port.write("F") sleep(0.2) self.port.flushInput() self.port.flushOutput() print "connected" self.receive_thread = Thread(target= self.recieve_background) self.thread_flag =1 self.receive_thread.start() self.offset_counter =0 except: print "COM Error", "Robot connection lost..." sys.stderr.write("Could not write to serial port.\n") self.serialReady = False sys.stderr.write("Robot turned off or no longer connected.\n") sleep(7) self.serialReady = True