2016-07-13 15 views
0

I C# verwenden Bluetooth Low Enegergy Geräte unter Windows 10 zu finden, wenn ich die folgenden Codes ausführen, traf ich einen solchen Fehler:C# Scan Bluetooth LE Geräte

"An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code".

Die Linie des Fehlers ist Debug.WriteLine("Found device: " + devices[0].Id);

Ich weiß nicht, warum es außerhalb der Reichweite ist. Vielen Dank!

namespace BluetoothLE 
    { 
     /// <summary> 
     /// Interaction logic for MainWindow.xaml 
     /// </summary> 
     public partial class MainWindow : Window 
     { 

      public MainWindow() 
      { 
       InitializeComponent(); 
      } 

      private async void LookForPairedDevices() 
      { 

       // Get BLE devices paired with Windows 
       DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector()); 

       Debug.WriteLine("Found device: " + devices[0].Id); 


      } 
     } 

    } 
+0

'DeviceInformation.FindAllAsync (BluetoothLEDevice.GetDeviceSelector()' ergab keine Geräte, so versuchen, Index für den Zugriff auf 0 ((erstes Element) hat eine Ausnahme ausgelöst –

Antwort

3

Ihr Fehler ist auf dieser Linie:

Debug.WriteLine("Found device: " + devices[0].Id); 

Wenn Sie Sie Code debuggen, werden Sie sehen, dass devices eine Länge von 0 hat und Sie versuchen, die Eigenschaft zuzugreifen id von der ersten (die nicht existiert).

Möglicherweise möchten Sie mit einer foreach-Schleife prüfen, um zu sehen, was wie so zurückgegeben:

foreach(var device in devices){ 
    Debug.WriteLine("Found device: " + device.Id); 
} 
+0

Wenn einer von ihnen null zurückliefert, erhalten Sie eine Null-Referenz-Ausnahme, nicht ein Argument außerhalb des Bereichs. Dieser Fehler betrifft den Zugriff auf mehr Elemente als vorhanden. –

+0

Sie haben Recht, ich werde das bearbeiten –

+0

Thx für die Erklärung. – QuickLearner

Verwandte Themen