2016-06-28 24 views
0

Ich habe eine nicht verwaltete C++ - Anwendung, die ich auf Windows Raspberry Pi portieren möchte. Es wurde ursprünglich auf einer eingebetteten Plattform entwickelt, wurde aber mit einer Pseudo-HAL geschrieben, um die 10-15% des plattformspezifischen Codes abzugrenzen. So lässt es sich leicht auf Windows-Desktop portieren/läuft auch mit null Änderungen an den gemeinsamen ~ 85%. Es ist zur Zeit geschrieben, um ANT + -Sensoren zu unterstützen, obwohl wir BT/LE-Unterstützung hinzufügen (oder vielleicht ANT durch BT ersetzen wollen). Das heißt, wenn man sich eine Menge von Dokumenten und Beispielen online anschaut, ist es nicht klar, ob es auch ohne eine Neuschreibung möglich ist. Wenn es dazu kommt, würden wir wahrscheinlich Linux als Ziel haben. Wie auch immer, drei Fragen -Unmanaged C++ BT/LE auf RP/Win und Pairing programmgesteuert, möglich?

(1) Ist es überhaupt möglich?

(2) Wenn ja, was ist der beste Ansatz (d. H. Welche APIs sollte ich untersuchen, und wie sollte ich sie für nicht verwalteten Gebrauch umhüllen)?

(3) Gibt es eine Möglichkeit, das RP programmatisch mit unseren Zielsensoren zu paaren, dh nach verfügbaren Sensoren zu suchen und nach einem vordefinierten Typ und möglicherweise ID zu paaren (und wenn ja, welche APIs sollte ich mir anschauen)? ?

Ich hasse es, solche offenen Fragen zu stellen, aber es ist einfach nicht klar aus den Beispielen, die ich mir online angeschaut habe, da alles ziemlich UWP-orientiert ist und ich überhaupt nicht damit vertraut bin. Ich suche nur nach einem Ja/Nein zur Machbarkeit und einem Punkt in die richtige Richtung. Vielen Dank für jede Eingabe, chris

Antwort

0

Dachte, ich auf diesem für jedermann folgen würde sonst die den gleichen Weg geht ... hier ist was ich schließlich gefunden -

1) Ist es überhaupt möglich ist ... Ja es ist möglich. Ich konnte es aber aufgrund fehlender Dokumentation/Beispiele bekommen, was ich gefunden habe, ist vielleicht nicht die optimale Lösung. Es scheint jedoch solide aus den begrenzten Tests, die ich gemacht habe.

2) Wenn ja, was ist der beste Ansatz ... Nochmal, nicht sicher, das ist der beste Ansatz, aber die sehr kurze Antwort ist, dass es funktioniert, müssen Sie WRL über COM verwenden. Alle für das Scannen und die Paarung erforderlichen Schnittstellen befinden sich in "windows.devices.enumeration.h" und Sie sollten die folgenden Namespaces verwenden: ABI :: Windows :: Foundation; Microsoft :: WRL; Microsoft :: WRL :: Wrapper; ABI :: Windows :: Devices :: Aufzählung. Da viele der Objekte/Schnittstellen, die Sie benötigen, überhaupt nicht dokumentiert sind (z. B. "IDeviceInformationStatics2"), müssen Sie QueryInterface ein gutes Stück verwenden, um herauszufinden, was verfügbar ist.

3) Gibt es eine Möglichkeit, programmatisch zu paaren ... Ja, wie oben erwähnt, ist es möglich. Ich brauchte ein paar Wochen, um alles zu durchforsten und es zum Laufen zu bringen, aber wenn ich mir die verschiedenen verwandten Beispiele ansehe und es zusammenfüge, scheint es zu funktionieren. Eine Sache, um die ich mich sorgte, war die Weitergabe von BLE-PIN-Codes, wo sie ohne UI benötigt wurden. Das funktioniert aber auch wieder nicht wirklich dokumentiert (siehe "AcceptWithPin") ....