2016-09-30 5 views
0

Nous créons une application pour communiquer avec un périphérique externe avec Windows PC (ici, nous utilisons Windows 7), dans PC, nous utilisons bluetooth dongle.BluetoothListener.AcceptBluetooth bloque des clients dans Windows 32Feet 7

Lorsque nous avons essayé de découvrir et de coupler le périphérique, il a été un succès dans Windows PC.

Mais du côté du code, nous essayons de connecter l'appareil, il n'a pas été un succès et ici, nous utilisons 32feet.net pour connecter l'appareil.

ci-dessous code j'essaie de connecter l'appareil.

////_serviceClassId = new Guid("9bde4762-89a6-418e-bacf-fcd82f1e0677"); 
     Guid serviceClass = BluetoothService.RFCommProtocol; 
     int selectedIndex = device_list.SelectedIndex; 
     BluetoothDeviceInfo selectedDevice = this.array[selectedIndex]; 
     var lsnr = new BluetoothListener(serviceClass); 
     lsnr.Start(); 
     Task.Run(() => Listener(lsnr)); 

et la méthode Listener est

private void Listener(BluetoothListener lsnr) 
    { 
     try 
     { 
      while (true) 
      { 
       using (var client = lsnr.AcceptBluetoothClient()) 
       { 
        using (var streamReader = new StreamReader(client.GetStream())) 
        { 
         try 
         { 
          var content = streamReader.ReadToEnd(); 
          if (!string.IsNullOrEmpty(content)) 
          { 
           ////_responseAction(content); 
          } 
         } 
         catch (IOException) 
         { 
          client.Close(); 
          break; 
         } 
        } 
       } 
      } 
     } 
     catch (Exception exception) 
     { 
      // todo handle the exception 
      // for the sample it will be ignored 
     } 
    } 

Si je lance l'application, il sera bloqué dans le lsnr.AcceptBluetoothClient() que peut aider ce mal dans ce domaine?

Remarque: Le périphérique Bluetooth a créé deux compendeurs: l'un est entrant et l'autre est le port sortant, lorsque nous nous connectons via le PC.

Répondre

0

C'est parce qu'il attend jusqu'à ce qu'un client soit connecté. Vous devez le lancer dans un fil pour travailler simultanément!