BleWinrtDll icon indicating copy to clipboard operation
BleWinrtDll copied to clipboard

Unity crash when I press the subscribe button(MRTK)

Open kisstherain8677 opened this issue 4 years ago • 5 comments

Hello!

I am in a project of AR and using the MRTK UGUI to conncet to my BLE device. I almost paste your 2D demo script on my project. I can get the correct device, service and characteristics. However, when I press the subscribe button, the unity just crashes. Do you know how to solve this issue? image

kisstherain8677 avatar Apr 15 '21 08:04 kisstherain8677

To further investigate you can install Visual Studio Community with C++ Desktop and UWP components., modify the UUIDs in DebugBle/Program.cs and run the DebugBle program.

If it also crashes there, you can download and run the Microsoft's Bluetooth Low Energy sample and see whether that works out. If the demo works, it should be fixable in this repo.

adabru avatar Apr 15 '21 08:04 adabru

To further investigate you can install Visual Studio Community with C++ Desktop and UWP components., modify the UUIDs in DebugBle/Program.cs and run the DebugBle program.

If it also crashes there, you can download and run the Microsoft's Bluetooth Low Energy sample and see whether that works out. If the demo works, it should be fixable in this repo.

Sry, I think you misunderstand my issue. Your demo works just fine(I can conncet to my BLE device and receive data). The problem is that I copy your script to a MRTK UGUI, and though I can get the correct device, service and characteristics UUIDs, my unity crashes while I press the Subscribe button(Actually, it crashes while it is running SubscribeCharacteristic(string deviceId, string serviceId, string characteristicId, bool block)). However, I change nothing in the script, so I wonder if the issue is that the code in the BleWinrtDll Unity\Assets\BleWinrtDll.dll cannot be applied in MRTK UGUI?

kisstherain8677 avatar Apr 15 '21 08:04 kisstherain8677

Thanks for correcting me! It could theoretically be that not all UWP-functionality is available on the mixed reality platform or that it works subtly differently. I'm not familiar with the mixed reality platform but according to this microsoft article, one should be able to run a UWP application on the mixed reality headset:

Windows Mixed Reality lets your users see holograms as if they're right around them in the physical and digital world. At its core, both HoloLens and the Desktop PCs you attach immersive headset accessories to are Windows 10 devices. You're able to run almost all Universal Windows Platform (UWP) apps in the Store as 2D apps.

I guess to check out whether the UWP-BLE-Api, more specifically the subscribe function, is applicable on the platform one could compile Microsoft's Bluetooth Low Energy sample as UWP-app and run it on the headset.

If scanning services and characteristics works, the only additional UWP/winrt functions that are called for subscription are characteristic.WriteClientCharacteristicConfigurationDescriptorAsync and characteristic.ValueChanged (BleWinrtDll.cpp#L482-L504).

adabru avatar Apr 15 '21 09:04 adabru

Thanks for your explaination! I tried to change the type of function bool SubscribeCharacteristic(wchar_t* deviceId, wchar_t* serviceId, wchar_t* characteristicId, bool block)from bool to void,and it works now.

kisstherain8677 avatar Apr 16 '21 11:04 kisstherain8677

谢谢你的解释!我试图将函数的类型bool SubscribeCharacteristic(wchar_t* deviceId, wchar_t* serviceId, wchar_t* characteristicId, bool block)从 bool 更改为 void,它现在可以工作了。

Thanks for sharing!

playg8 avatar Oct 14 '22 09:10 playg8