2010-09-06 7 views
1

Je suis bloqué depuis plusieurs jours sur mon application bluetooth. Son rôle est de recevoir des données à partir de périphériques Bluetooth, en utilisant le protocole port série ... L'application fonctionne en arrière-plan du téléphone et des appareils, quand ils ont besoin d'envoyer une information, permet d'activer le Bluetooth et essayer d'envoyer une trame de données .Aide au développement Bluetooth Blackberry

Le problème est que plusieurs appareils peuvent se connecter en utilisant cette application. Et je n'arrive pas à mettre le téléphone en tant que serveur afin qu'il puisse recevoir des données continues. Cela signifie que je peux créer un Connector.open (« btspp: localhost: .... ») avec AcceptAndOpen(), mais cette fonction commence une seule fois et je ne peux pas relancer à l'infini.


La solution serait de lancer un AcceptAndOpen() Lorsqu'un appel Bluetooth est terminée ... redémarrer la fonction, mais je ne peux pas (je reconstitue simplement l'objet qui a fait l'ouverture du port)


J'essaie d'utiliser sans succès: - PushRegistry ("btspp" n'est pas compatible) - Connector.open() avec l'adresse MAC des clients (mais ce n'est pas auto-bloquant)

Si quelqu'un pourrait aidez-moi sur la façon de résoudre ce problème. Parce que je l'ai cherché à fond sur les forums ... Blackberry

Merci, Fabrice

PS: Si vous avez besoin du code source, je peux vous donner ... Mais je ne suis pas sûr que cela peut vous aider à réponds-moi.

Répondre

0

Je viens de mettre autour acceptAndOpen():

while(true) { 
    ... 
} 

Maintenant, il est correct.

0

Assurez-vous après que vous obtenez une connexion de acceptAndOpen, vous passez cette connexion dans un nouveau fil. Cela permet au thread "serveur" actuel de revenir en arrière et d'accepter une autre connexion (en supposant qu'il est dans une boucle).

0

Désolé pour ma réponse tardive.

J'ai créer une classe: BluetoothReceiver qui est elle est mise en arrière-plan (link text). Il y a une partie de mon code source pour essayer de vous aider:

public void start() { 
    try { 
    _connector = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + MY_UUID, Connector.READ); 
    Runnable r = new Runnable() { 
     public void run() { 
      while(true) { 
       try { 
        StreamConnection connection = _connector.acceptAndOpen(); 
        onConnectionOpen(connection); 
       } 
       catch (IOException e) { 
        // Connection failed 
        break; 
       } 
      } 
     } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
} 
catch (IOException e) { 
    // e.getMessage() 
} 

private void onConnectionOpen(StreamConnection connection) { 
    RemoteDevice device = null; 
    try { 
     device = RemoteDevice.getRemoteDevice(connection); 
    } catch (IOException e) { 
     // e.getMessage() 
    } 
    if(device != null) { 
     // Make your own process: read, write, pair, ... 
    } 
} 

Cordialement, Fabrice

Questions connexes