BluetoothLEDevice на Гололинс с Unity - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь прочитать данные датчика с устройства BLE, но я совершенно новичок в Unity / C # / HoloLens / UWP.

Мои используемые пространства имен из UWP:

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

Вот обработчик события для BluetoothLEAdvertWatcher.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.IO.FileNotFoundException' в System.Private.CoreLib.ni.dll Системе не удается найти файл указано. (Исключение из HRESULT: 0x80070002)

Я не знаю, как дальше отлаживать это, или что не так в целом.

1 Ответ

0 голосов
/ 12 сентября 2018

В моем конкретном случае, перейдя в «Система -> Устройства (HOLOLENS)» и удалив все ранее сопряженные устройства Bluetooth, устраняет проблему.

В моем случае в списке устройств у меня был только «кликер» для Гололенса. После удаления

System.IO.FileNotFoundException

больше не выбрасывается и

BluetoothLEDevice.FromBluetoothAddressAsync 

кажется, работает. Кликер не был ни рядом, ни просто, просто был спарен ранее (пару недель назад).

Эта ошибка всегда воспроизводится с моей стороны:

  • сопряжение кликера
  • сопряжение с другим устройством Gatt

При вызове BluetoothLEDevice.FromBluetoothAddressAsync, System.IO.FileNotFoundException генерируется снова, даже если кликер не спарен. Когда я удаляю кликер из списка устройств, он снова работает.

...