2015-12-27 17 views
5

Windows 10 IoT'de tüm MAC adreslerini okuyan bir uygulama yazmaya çalışıyorum. Bu kod satırları, açılmasalar bile tüm eşleştirilmiş cihazları iade eder.Windows10 UWP'de Bluetooth Mac adresini eşleştirmeden

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); 
} 

Ve ayrıca kod olsa

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

Bu dönen boş bu çizgiyi bulundu. Windows 10 evrensel uygulamasında tüm MAC adreslerini taramanın herhangi bir yolu var mı?

cevap

1

Sorunuzun cevabını bulmaya çok yakınsınız. DeviceId özelliğinden BluetoothDevice örneğini almayı deneyebilirsiniz. Daha sonra, Bluetooth adresi

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 hala zaten eşleştirilmiş sadece cihazları kurucu: İşte Projemde kullanmak kod parçasıdır. MAC adresini eşleştirmeden bulmanın bir yolu var mı? –

+0

Hayır, aslında bunu yapamazsınız. – danvy

+0

tamam, eşleştirilmiş cihazları nasıl bulabilirim, ancak yalnızca cihazlar arasında olanları bulabilirim. Şimdiye kadar eşleştirilmiş tüm cihazların bulunduğu bu kod satırlarından olun. –

2

çevresindeki tüm Bluetooth LE cihaz için tarama BluetoothLEAdvertisementWatcher kullanarak yeni bir yaklaşım vardır dahil olmak üzere tüm spesifik Bluetooth bilgilerini almak mümkün olacaktır.

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(); 

ve üstü

advertisementWatcher.Stop(); 

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