2016-09-13 66 views
0

這是用於獲取BLE設備的UWP代碼。爲什麼我爲某些設備獲取bleDevice == null?我沒有找到解釋這個問題的任何文件。BluetoothLEDevice.FromIdAsync返回null

var devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector()); 
    foreach (DeviceInformation di in devices) 
    { 
     Debug.WriteLine(di.Name); 
     BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(di.Id); 

     if (bleDevice == null) { 
      Debug.WriteLine("--- NULL ----"); 
      continue; 
     } 
     Debug.WriteLine(bleDevice.Name); 
    } 

我注意到,我得到bleDevice!= NULL對於有感嘆號與Windows STATUS_DEVICE_POWER_FAILURE在設備管理器中的BLE裝置。

我得到bleDevice == null爲設備管理器中沒有感嘆號的BLE設備。

回答

-1

您必須在您的appxmanifest文件中添加藍牙功能。

2

我得到了同樣的問題。以前的answer from Chi Lee其實很好,但對於如何做到這一點還不夠詳細(對於非專家;-))。

這裏的詳細過程(假設你在微軟的Visual Studio C#項目):

  1. 雙擊項目下的屬性字段中:這將在打開打開一個新標籤 select properties
  2. 選項卡,選擇應用在左側依次包清單...按鈕 pkg manifest button
  3. 打開名爲「package.appxmanifest」的新選項卡。選擇,它裏面的功能標籤
  4. 檢查藍牙功能下 select BT capability
  5. 保存並重新編譯項目現場。

的BluetoothLEDevice.FromIdAsync(di.Id)將不再返回NULL,前提是你已經配對的設備(無論是在程序或手動在Windows

+0

我要非常感謝你爲了這個簡單的解決方案,我正在拉我的頭髮,試圖弄清楚爲什麼我變得空了。 – Kingpin