Example #1
0
    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
Example #2
0
    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