API с низким энергопотреблением Bluetooth для Windows 7.0

Windows 8 предоставляет API для связи с устройствами с низким энергопотреблением Bluetooth (Smart), но этот API недоступен в предыдущих версиях Windows, поэтому как я могу связываться с ключом BLE в Windows 7?

Ключ BLE, который я использую в настоящее время (BLED112), предоставляет виртуальный последовательный порт, по которому вы можете отправлять команды, используя свой собственный API-интерфейс, но если я это реализую в своем программном обеспечении, он не будет работать с ключами от других производителей.

Итак, есть ли способ общения с устройствами BLE на Windows 7, которые независимы от производителя?

Ответы

Ответ 1

Итак, выясняется, что некоторые люди нашли обходной путь. В основном идея состоит в том, чтобы не использовать Windows BLE API (который не работает в Windows 7), а вместо этого напрямую разговаривать с ключом. Вы можете сделать это, используя WinUSB (USB-драйвер пользовательского пространства). Этот драйвер можно установить с помощью Zadig.

Вот пример:

https://github.com/sandeepmistry/node-bluetooth-hci-socket#windows

Он имеет код С++, позволяющий вам отправлять команды HCI. Существует также библиотека Node о том, как использовать HCI для контента BLE более высокого уровня:

https://github.com/sandeepmistry/bleno

Я не знаю, есть ли какие-либо не-JS-библиотеки, которые делают то же самое, но я не думаю, что было бы сложно преобразовать Bleno в С++ в любом случае.

Ответ 2

Требуется ли BLE? Большинство устройств BLE, вероятно, будут двухрежимными, поэтому вы можете отказаться от режима без LE в более старых версиях Windows.

Что касается проприетарных API-интерфейсов, вы видели https://32feet.codeplex.com/?

В документации указано, что драйверы для большинства ключей могут быть заменены драйвером класса Microsoft. Хотя API также работает с другими стеками, если замена невозможна (с несколькими оговорками в зависимости от стека (т.е. Требующими дополнительных DLL)).

Переход в стек MS

https://32feet.codeplex.com/wikipage?title=Switching%20any%20dongle%20to%20the%20Microsoft%20stack&referringTitle=Documentation

Общая документация

https://32feet.codeplex.com/documentation

Ответ 3

Насколько я могу судить, в настоящее время нет способа сделать это.

  • SDK для пакета Broadcom WIDCOMM Bluetooth не обновляется с 2009 года и не поддерживает BLE.
  • Стек Microsoft поддерживает только BLE в Windows 8.

Возможно, вы сможете получить открытый BTstack, но их реализация BLE была только "запущена", и там не являются инструкциями по его созданию в Windows. Их вики подсказывают, что никто не пробовал.

Если у кого-то будет такой успех, то полные инструкции о том, как это сделать, будут замечательными!

Ответ 4

Собственно, если BT-чипсет на вашем ПК (с установленной Windows 7) поддерживает BT 4.0 (мой AR3012), и вы установили правильные драйверы чипсета BT, вы можете сделать некоторое обходное решение, чтобы соединить BLE (BT low energy aka Smart ) с вашим ПК (на моем устройстве была клавиатура Microsoft Designer). Я нажал на значок BT в лотке и выбрал "добавить устройство" (клавиатура находилась в режиме обнаружения), затем щелкнула по обнаруженному значку клавиатуры, чтобы соединить его и выбрать "ввести пароль". Затем на моем телефоне Android (Samsung Galaxy S5) в меню Bluetooth/Доступные устройства я нажал на обнаруженную клавиатуру, чтобы соединить его - он показал мне код доступа для ввода на клавиатуре, но я ввел этот код на ПК, а затем моя клавиатура - вуаля! Он работал как шарм. Были установлены драйверы клавиатуры, и теперь клавиатура работает. В окне состояния устройства BT нет соединения BT (вероятно, из-за того, что в системе не представлен счетчик BT LE), но все работает нормально.

Ответ 5

Мы годами использовали библиотеку BTFramework, используя ее (С# NET) во всем, начиная с XP Sp3 и заканчивая последней версией Windows 10. С Windows 10 вы можете получить доступ к устройствам ioT через их библиотеки BLE. Мы потратили месяцы, пытаясь заставить реализацию Microsoft UWP делать то, что мы хотим, но это было слишком сложно и также имело множество недостатков, некоторые из которых мы помогли им исправить. Команда BTFramework имеет отличную репутацию в нашей книге - они очень отзывчивы (за считанные минуты, чтобы получить ответ), работают как барсуки, когда мы выявляем проблему, и в результате вырабатывают хороший, надежный и надежный код. Наши коммерческие продукты зависят от этого.