Я работаю над приложением C ++, которое взаимодействует с моим пользовательским оборудованием (на основе nRF52840) через BLE. Приложение должно работать на Windows, и было бы хорошо поддерживать Windows 7.
Несмотря на то, что официальная поддержка BLE для Win7 отсутствует, BLE, похоже, работает в некоторой степени. Мой iPhone, мышь BLE работают правильно. Однако я не могу подключиться ни к каким устройствам BLE из моего кода.
Попробовал этот пример:
https://github.com/Microsoft/Windows-classic-samples/blob/master/Samples/Win7Samples/netds/winsock/bluetooth/bthcxn.cpp
Приложение успешно обнаруживает все близлежащие устройства BLE. Он пытается подключиться к выбранному устройству, но connect () всегда возвращается с ошибкой, а WSAGetLastError () возвращает 10035 (WSAEWOULDBLOCK). Повторные вызовы connect () возвращаются с этой же ошибкой все время.
Кажется, что соединение установлено на стороне устройства, но не на стороне Windows. Все последующие вызовы send () приводят к 10057 (WSAENOTCONN).
Спаривание устройства или нет, похоже, не имеет никакого эффекта.
Поведение такое же в Windows 10 тоже. Соединение с другими устройствами (пробовали с iPhone и с другим ноутбуком) не удалось таким же образом.
Как мне заставить это работать? Кому-нибудь удалось реализовать BLE-коммуникацию с использованием сокетов?