Coder Social home page Coder Social logo

Comments (3)

adabru avatar adabru commented on July 22, 2024

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.

david-sackstein avatar david-sackstein commented on July 22, 2024

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.

adabru avatar adabru commented on July 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.