Получите Bluetooth-устройства в радиусе действия

Я занимаюсь разработкой для Windows Desktop. Я хочу, чтобы устройства находились в пределах досягаемости, а затем показывались пользователю в виде списка.

Это код, который я использую:

HBLUETOOTH_DEVICE_FIND founded_device;

BLUETOOTH_DEVICE_INFO device_info;
device_info.dwSize = sizeof(device_info);

BLUETOOTH_DEVICE_SEARCH_PARAMS search_criteria;
search_criteria.dwSize = sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS);
search_criteria.fReturnAuthenticated = FALSE;
search_criteria.fReturnRemembered = FALSE;
search_criteria.fReturnConnected = TRUE;
search_criteria.fReturnUnknown = FALSE;
search_criteria.fIssueInquiry = FALSE;
search_criteria.cTimeoutMultiplier = 0;

founded_device = BluetoothFindFirstDevice(&search_criteria, &device_info);

if (founded_device == NULL)
{
_tprintf(TEXT("Error: \n%s\n"), getErrorMessage(WSAGetLastError(), error));
return -1;
}

do
{
_tprintf(TEXT("founded device: %s\n"), device_info.szName);

} while (BluetoothFindNextDevice(founded_device, &device_info));
return 0;

Моя проблема в том, что в списке устройств в диапазоне я всегда получаю запоминающиеся устройства. даже если для fReturnRemembered установлено значение false.

Мне нужно найти способ, чтобы получить только устройства в радиусе действия без запоминающихся устройств.

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

4

Решение

Если вы хотите начать сканирование (Запрос устройства), вам следует изменить критерии поиска:

search_criteria.fIssueInquiry = TRUE;

и, возможно, использовать некоторое время ожидания больше 0.

Кстати, если BluetoothFindFirstDevice (&критерий поиска, &информация об устройстве); возвращается с НОЛЬ это не значит, что он потерпел неудачу, он может завершить поиск без результатов. Вы должны получить ошибку по WSAGetLastError () и проверьте, если это ERROR_NO_MORE_ITEMS.

Альтернативный способ заключается в использовании WinSock APIs.

2

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

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

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