带有 Unity 的 Hololens 上的 BluetoothLEDevice

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


我使用的 UWP 命名空间:


#if NETFX_CORE

using System;

using Windows.Devices.Bluetooth.Advertisement;

using Windows.Devices.Bluetooth;

#endif

这是 BluetoothLEAdvertisementWatcher.Received 的事件处理程序:


#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.Private.CoreLib.ni.dll 中的“System.IO.FileNotFoundException”系统找不到指定的文件。(来自 HRESULT 的异常:0x80070002)


我不知道如何进一步调试这个,或者一般有什么问题。


炎炎设计
浏览 614回答 1
1回答

森栏

在我的特殊情况下,转到系统 - > 设备(HOLOLENS)并删除所有以前配对的蓝牙设备可以解决问题。就我而言,我在设备列表中只有 Hololens 的“Clicker”。删除它后System.IO.FileNotFoundException不再抛出,并且BluetoothLEDevice.FromBluetoothAddressAsync似乎工作。答题器不在附近或在任何地方,只是之前(几周前)配对过。这个错误总是可以通过以下方式重现:配对答题器配对其他 Gatt 设备在调用 BluetoothLEDevice.FromBluetoothAddressAsync 时,System.IO.FileNotFoundException 再次被抛出,即使点击器未配对。当我从设备列表中删除答题器时,它又可以工作了。
打开App,查看更多内容
随时随地看视频慕课网APP