Windows — Неуправляемый C ++ BT / LE на RP / Win и сопряжение программно, возможно?

У меня есть неуправляемое приложение C ++, которое я хотел бы перенести на Windows Raspberry Pi. Первоначально он был разработан на встроенной платформе, но был написан так, чтобы быть очень переносимым с использованием псевдо-HAL для защиты от 10-15% кода, специфичного для платформы. Таким образом, он легко переносится на рабочий стол Windows и запускается на нем с нулевыми изменениями в ~ 85%. В настоящее время он написан для поддержки датчиков ANT +, хотя мы хотели бы добавить (или, возможно, заменить ANT) поддержку BT / LE. Тем не менее, глядя на тонну документов и примеров в Интернете, не очень понятно, возможно ли это даже без переписывания. Если дело доходит до этого, хотя мы, вероятно, нацелимся на Linux. Во всяком случае, три вопроса —

(1) это вообще возможно?

(2) Если да, то каков наилучший подход (т. Е. На какие API я должен смотреть и как мне обернуть их для неуправляемого использования)?

(3) Есть ли способ программно связать RP с нашими целевыми датчиками на лету, то есть отсканировать доступные датчики и пару по заранее определенному типу и, возможно, идентификатору (и еще раз, если так, на какие API следует смотреть)?

Я ненавижу задавать такие открытые вопросы, но из примеров, на которые я смотрел онлайн, просто не ясно, так как все в значительной степени ориентировано на UWP, и я совсем не знаком с этим. Просто хочу получить ответ «да» или «нет» в отношении осуществимости и указать точку в правильном направлении, если это так. Спасибо за любой вклад, Крис

0

Решение

Подумал, что буду следить за этим для всех, кто пойдет по тому же пути … вот что я нашел в конце концов —

1) Это вообще возможно … Да, это возможно. Я смог заставить его работать, хотя из-за отсутствия документации / примеров, то, что я придумал, не может быть оптимальным решением. Это кажется твердым, хотя из ограниченного тестирования, которое я сделал.

2) Если так, какой подход лучше? Опять же, не уверен, что это лучший подход, но очень короткий ответ: чтобы заставить его работать, вам нужно использовать WRL через COM. Все интерфейсы, необходимые как для сканирования, так и для сопряжения, находятся в «windows.devices.enumeration.h», и вы захотите использовать следующие пространства имен — ABI :: Windows :: Foundation; Microsoft :: WRL; Microsoft :: WRL :: Упаковщики; ABI :: Окна :: Устройства :: перечислений. Поскольку многие из необходимых вам объектов / интерфейсов вообще не документированы (например, «IDeviceInformationStatics2»), вам нужно будет использовать QueryInterface, чтобы узнать, что доступно.

3) Есть ли способ программно спарить … Да, как отмечалось выше, это возможно. Мне потребовалось несколько недель, чтобы разобраться во всем этом и заставить его работать, но, глядя на различные связанные примеры в Интернете и собрав их вместе, кажется, что это работает. Одна вещь, которая меня беспокоила, — это передача пин-кодов BLE, где это необходимо, без пользовательского интерфейса. Это тоже работает, но опять же не очень задокументировано (см. «AcceptWithPin») ….

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector