具有Unity的Hololens上的BluetoothLEDevice

时间:2018-09-09 16:23:42

标签: c# unity3d uwp bluetooth-lowenergy hololens

我正在尝试从BLE设备读取传感器数据,但对于Unity / C#/ HoloLens / UWP来说是全新的。

我在UWP中使用的命名空间:

#if NETFX_CORE
using System;
using Windows.Devices.Bluetooth.Advertisement;
using Windows.Devices.Bluetooth;
#endif

这是BluetoothLEAdvertisementWatcher的事件处理程序。已收到:

#if NETFX_CORE
private async void Watcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{

    Debug.Log("=Received Advertisement=");
    ulong bluetoothAddress = args.BluetoothAddress;
    Debug.Log("  BT_ADDR: " + bluetoothAddress);
    Debug.Log("  Local name: " + args.Advertisement.LocalName);
    Debug.Log("  advertisement type: " + args.AdvertisementType.ToString());

    // Throws 'System.IO.FileNotFoundException' in System.Private.CoreLib.ni.dll
    BluetoothLEDevice device = await BluetoothLEDevice.FromBluetoothAddressAsync(bluetoothAddress);
}
#endif

我在堆栈跟踪中看到的一切都是:

  

引发的异常:“ System.IO.FileNotFoundException”   System.Private.CoreLib.ni.dll系统找不到文件   指定。 (来自HRESULT的异常:0x80070002)

我不知道该如何进一步调试,或者总的来说是什么问题。

1 个答案:

答案 0 :(得分:0)

在我的特定情况下,转到“系统”->“设备”(HOLOLENS)并删除所有先前配对的蓝牙设备即可解决此问题。

就我而言,我在设备列表中只有Hololens的“ Clicker”。删除后

  

System.IO.FileNotFoundException

不再抛出

BluetoothLEDevice.FromBluetoothAddressAsync 

似乎可以正常工作。 答题器不在附近或附近,只是在之前(几周前)配对过。

此错误总是可以通过以下方式重现:

  • 配对答题器
  • 配对其他Gatt设备

在调用BluetoothLEDevice.FromBluetoothAddressAsync时,即使单击器未配对,也会再次引发System.IO.FileNotFoundException。当我从设备列表中删除答题器时,它会再次起作用。