0

我想用 ALConnectionManager 将我的 NAO 机器人连接到一个新的 wifi 网络,这样我就不必使用网页了。使用 python API 比点击网页要好...

4

1 回答 1

1

所以这就是我发现的方法,不是很聪明,但它在 2.xx 版本上运行良好......

    def connect(strSsid, strPassword):
        print( "INF: trying to connect to '%s', with some password..." % (strSsid) )
        self.cm = naoqi.ALProxy( "ALConnectionManager")
        self.cm.scan();
        aS = self.cm.services();
        bFound = False;
        for s in aS:
            print( "\nService: %s" % s )
            strServiceID = None;
            for attr in s:
                attrName, attrValue = attr;
                if( attrName == "ServiceId" ):
                    strServiceID = attrValue;
                if( attrName == "Name" and attrValue == strSsid ): # ASSUME, serviceID always set before Name
                    assert( strServiceID != None );
                    print( "INF: Good found the right wifi, ServiceID: '%s'\n" % strServiceID )
                    bFound = True;
                    break;
            if( bFound ):
                break;
        # for each services - end
        if( bFound ):
            # real connection
            aServiceInput = [];
            aServiceInput.append( ["ServiceId", strServiceID ] );
            aServiceInput.append( ["Passphrase", strPassword ] );
            aServiceInput.append( ["PrivateKeyPassphrase", strPassword ] );         # don't know wich one is usefull!
#            aServiceInput.append( ["Favorite", True ] ); # not working
            print( "DBG: ServiceInput: %s" % aServiceInput )
            retVal = self.cm.setServiceInput( aServiceInput );
            print( "DBG: setServiceInput return: %s" % str(retVal) )
            retVal = self.cm.connect( strServiceID );
            print( "DBG: connect return: %s" % str(retVal) )
于 2015-05-13T10:31:41.090 回答