2015-12-27 8 views
5

Próbuję napisać aplikację, która odczytuje wszystkie adresy MAC w systemie Windows 10 IoT. Te linie kodu zwracają wszystkie sparowane urządzenia, nawet jeśli nie są włączone.Znajdowanie adresu Mac Bluetooth w systemie Windows 10 UWP bez parowania

var selector = BluetoothDevice.GetDeviceSelector(); 
var devices = await DeviceInformation.FindAllAsync(selector); 
listBox.Items.Add(devices.Count); 
foreach (var device in devices) 
{ 
    listBox.Items.Add(device.Id); 
} 

I znalazłam też poniższy wiersz kodu

await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); 

Ten powrocie zerowy chociaż. Czy istnieje sposób skanowania wszystkich adresów MAC w uniwersalnej aplikacji systemu Windows 10?

Odpowiedz

1

Jesteś bardzo blisko znalezienia odpowiedzi na swoje pytanie. Możesz spróbować uzyskać instancję BluetoothDevice z właściwości DeviceId. Wtedy będziesz w stanie uzyskać wszystkie konkretne informacje Bluetooth łącznie z adresem Bluetooth

var selector = BluetoothDevice.GetDeviceSelector(); 
var devices = await DeviceInformation.FindAllAsync(selector); 
foreach (var device in devices) 
{ 
    var bluetoothDevice = await BluetoothDevice.FromIdAsync(device.Id); 
    if (bluetoothDevice != null) 
    { 
     Debug.WriteLine(bluetoothDevice.BluetoothAddress); 
    } 
    Debug.WriteLine(device.Id); 
    foreach(var property in device.Properties) 
    { 
     Debug.WriteLine(" " + property.Key + " " + property.Value); 
    } 
} 
+0

App nadal założycielskich tylko urządzenia, które są już sparowane. Czy istnieje sposób na znalezienie adresu MAC bez parowania? –

+0

Nie, w rzeczywistości nie możesz tego zrobić. – danvy

+0

ok, więc w jaki sposób mogę znaleźć sparowane urządzenia, ale tylko te, które znajdują się w zasięgu urządzeń. Stań się tymi liniami kodu, które tworzą wszystkie urządzenia, które kiedykolwiek były sparowane. –

2

Jest to nowe podejście do korzystania BluetoothLEAdvertisementWatcher skanowania dla wszystkich urządzeń Bluetooth LE dookoła. Oto fragment kodu używam w moim projekcie:

var advertisementWatcher = new BluetoothLEAdvertisementWatcher() 
{ 
    SignalStrengthFilter.InRangeThresholdInDBm = -100, 
    SignalStrengthFilter.OutOfRangeThresholdInDBm = -102, 
    SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(2000) 
}; 

advertisementWatcher.Received += AdvertisementWatcher_Received; 
advertisementWatcher.Stopped += AdvertisementWatcher_Stopped; 

advertisementWatcher.Start(); 

a później

advertisementWatcher.Stop(); 

advertisementWatcher.Received -= AdvertisementWatcher_Received; 
advertisementWatcher.Stopped -= AdvertisementWatcher_Stopped; 
Powiązane problemy