Comments (3)
Hi David,
my "choice" was led by trial-and-error. I looked for a C# API first, then I downloaded the microsoft sample, which contained the c++-winrt version additionally to the C#-UWP version. So I took the natural step and grabbed the winrt version. I didn't step onto the api you mention.
But regarding your question: I guess the api will work equally well. I think every c++ dll works in Unity. Maybe the win32 version will even be a little bit more stable than the winrt version. I read about winrt that it may have some instabilities and while I was dealing with it, it didn't feel as robust as it could be. But i didn't experience any issues without workaround yet.
Another thought that comes to my mind is the migration path to the UWP platform, or to a potential future .NET 5 ble api. I guess it's easier to rewrite c++-winrt code to .NET code (almost 1:1 mapping) than it is to translate win32 api. But that only applies if you're not using another library for UWP alltogether.
from blewinrtdll.
Hi adabru,
Thanks for your response. If I prefer to avoid UWP which API would you recommend I use?
I am concerned about the version issues with UWP.
(WinRT is also requires UWP, right?)
Also, what are the differences between the code in the Microsoft example you quoted and this project?
Thanks
from blewinrtdll.
If I prefer to avoid UWP which API would you recommend I use?
Yes, WinRT requires UWP on the platform. This is my first time using bluetooth, I don't have any other experiences and didn't research any other API. What might interest you is the third party provider https://www.btframework.com, s/he is also active on stackoverflow. There is nothing else that comes to my mind.
Also, what are the differences between the code in the Microsoft example you quoted and this project?
I copied and adapted the code from the Microsoft winrt version into the dll. The additions are:
- Own caching for uwp devices, services and characteristics because WIndows threw errors when accessing them too often.
- Polling with synchronisation primitives as I had problems with calling/marshalling C# callbacks from the C++ code, i.e. the Unity Editor crashed or freezed. Still, if call the blocking variants from Unity Editor's main thread, the program freezes.
- Buffering of data. I had also problems marshalling memory between C# and C++ so the code copies data in the dll functions when needed.
That's it actually. I don't have much experience marshalling. If it were done so that callbacks and memory would be shareable without crashing afterwards, half of the code could be avoided.
from blewinrtdll.
Related Issues (20)
- Multiple BLE connections alternating so buffer doesnt get overflood HOT 3
- Why can't BleWinrtDll.dll be called when this project is deployed to HoloLens? HOT 2
- Connecting and Subscribing to heart sensor HOT 3
- Unable to write attribute HOT 5
- Suddenly unable to subscribe to notifications from and write to characteristic HOT 1
- Communication with Dongle
- Laptop BLE no issue Resolving Characteristics, Desktop has issues... HOT 2
- Problems connecting two devices at the same time. HOT 1
- BleScan.Impl.PollData make my Unity crashed. HOT 2
- The ValueChanged function runs at irregular intervals. HOT 1
- Does BleWinrtDll provide API for pairing with passkey? HOT 4
- again: BleWinrtDll.cpp:501 SubscribeCharacteristicAsync catch: The attribute cannot be written. HOT 6
- Write to device problem HOT 2
- Error subscribing to Characteristic HOT 3
- Hololens 2 unable to connect to Microbit HOT 9
- η΄ζ₯θΏζ₯ Direct connection HOT 1
- Device Filtering by Service HOT 1
- Connect 2 DLLs to one BLE IndoorBike
- Connect 2 DLLs to one BLE IndoorBike HOT 3
- Microbit Bluetooth UART service data reading problem HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blewinrtdll.