Beispiel #1
0
 def init(self):
     print 'NXTserver running'
     #carica la configurazione
     self.conf = NXTconf()
     try:
         self.conf.load()
     except:
         return False
     self.sock = None
     self.brick = None
     self.scan() 
     return True
Beispiel #2
0
class NXTserver(xmlrpc.XMLRPC):
    connected = False;
    def init(self):
        print 'NXTserver running'
        #carica la configurazione
        self.conf = NXTconf()
        try:
            self.conf.load()
        except:
            return False
        self.sock = None
        self.brick = None
        self.scan() 
        return True
   
    def scan(self):
        if self.sock == None:
            try:
                #aggiungere il bt address
                self.sock = nxt.locator.find_one_brick()
                print 'Brick found'
                return True
            except:
                print 'No brick found'
                return False
        else:
            return True

    def xmlrpc_connect(self):
        if self.brick != None:
            return True

        if self.scan():
            self.brick = self.sock.connect()
            if self.brick == None:
                print 'Not connected'
                print self.sock
                return False
            else:   
                print 'Connection OK'
                return True
        else:
            return False

    def xmlrpc_disconnect(self):
        try:
            self.brick.sock.close()
            self.brick = None
            ret = True
            print 'Connection close'
        except:
            ret = False
        return ret

    # restituisce la distanza percepita dal sensore ultrasonico in cm
    def xmlrpc_ultrasonicStatus(self):
        print 'Ultrasonic Status'
        try:
            ret = UltrasonicSensor(self.brick, self.conf.getUltrasonicSensor()).get_sample()
        except:
            ret = -1 
        return ret 

    # restituisce la carica della batteria in millivolt
    def xmlrpc_batteryStatus(self):
        print 'Battery Status'
        try:
            ret = self.brick.get_battery_level()
        except:
            ret = -1
        return ret

    def xmlrpc_goMotor(self, powerL=100, powerR=100):
        print 'Go'
        if(powerL>127):
            powerL = 127
        elif powerL<-128:
            powerL = -128

        if(powerR>127):
            powerR = 127
        elif powerR<-128:
            powerR = -128

        rMotorA = self.runMotor(self.conf.getMoveMotor()[0],powerL)
        rMotorB = self.runMotor(self.conf.getMoveMotor()[1],powerR)
        return rMotorA & rMotorB

    def xmlrpc_stop(self):
        print 'Stop'
        rMotorA = self.stopMotor(self.conf.getMoveMotor()[0])
        rMotorB = self.stopMotor(self.conf.getMoveMotor()[1])
        return rMotorA & rMotorB

    def xmlrpc_shot(self):
        print 'Shot'
        return self.updateMotor(self.conf.getShotMotor(), 127, 360)

    def updateMotor(self, port, power, degree):
        try:
            Motor(self.brick, port).update(power, degree)
            return True
        except:
            return False

    def runMotor(self, port, power):
        try:
            Motor(self.brick, port).run(power, 1)
            return True
        except:
            return False

    def stopMotor(self, motor):
        try:
            Motor(self.brick, motor).stop()
            return True
        except:
            return False