Вступление
В первой части статьи мы научились получать список локальных радиомодулей
Bluetooth и узнавать их свойства.
Теперь пришло время получить список устройств Bluetooth, которые подключены к
нашим локальным радиомодулям.
Получение списка устройств Bluetooth
Для получения списка устройств Bluetooth нам понадобятся следующие функции
(они очень похожи на функции, используемые для получения списка локальных
радиомодулей).
BluetoothFindFirstDevice - начинает перечисление устройств
Bluetooth.
Объявление функции:
function BluetoothFindFirstDevice(
const pbtsp : BLUETOOTH_DEVICE_SEARCH_PARAMS;
var pbtdi : BLUETOOTH_DEVICE_INFO): HBLUETOOTH_DEVICE_FIND; stdcall;
Параметры:
Pbtsp |
Указатель на структуру BLUETOOTH_DEVICE_SEARCH_PARAMS.
Член dwSize этой структуры должен содержать размер структуры
(устанавливается посредством SizeOf(BLUETOOTH_DEVICE_SEARCH_PARAMS)).
Член hRadio должен содержать описатель локального радиомодуля,
полученный вызовом функции BluetoothFindFirstRadio. |
Pbtdi |
Структура BLUETOOTH_DEVICE_INFO в которую будет
возвращена информации об устройстве Bluetooth. |
Возвращаемые значения:
- В случае успешного выполнения функция вернет корректный описатель в
качестве результата.
- В случае ошибки будет возвращен 0. Для получения кода ошибки используйте
функцию GetLastError
BluetoothFindNextDevice - находит следующее устройство
Bluetooth.
Объявление функции:
function BluetoothFindNextDevice(
hFind : HBLUETOOTH_DEVICE_FIND;
var pbtdi : BLUETOOTH_DEVICE_INFO): BOOL; stdcall;
Параметры:
hFind |
Описатель, который вернула функция BluetoothFindFirstDevice |
pbtdi |
Структура BLUETOOTH_DEVICE_INFO, в которую будет помещена
информацию об устройстве |
Возвращаемые значения:
- Вернет TRUE, если устройство найдено.
- Вернет FALSE в случае отсутствия устройства. Используйте
GetLastError для получения кода ошибки.
BluetoothFindDeviceClose - закрывает описатель перечисления
устройств Bluetooth.
Объявление функции:
function BluetoothFindDeviceClose(
hFind : HBLUETOOTH_DEVICE_FIND): BOOL; stdcall;
Параметры:
hFind |
Описатель, который вернула функция BluetoothFindFirstDevice |
Возвращаемые значения:
- Вернет TRUE если описатель успешно закрыт.
- Вернет FALSE в случае ошибки. Для получения кода ошибки
используйте GetLastError.
BluetoothGetDeviceInfo - возвращает информацию об указанном
устройстве Bluetooth.
Объявление функции:
function BluetoothGetDeviceInfo(
hRadio : THandle;
var pbtdi : BLUETOOTH_DEVICE_INFO): DWORD; stdcall;
Параметры:
hRadio |
Описатель локального радиомодуля Bluetooth |
pbtdi |
Структура BLUETOOTH_DEVICE_INFO, в которую возвразается
информация об устройстве. dwSize должен быть равен размеру
структуры. addreess должен содержать адрес устройства, о
котором хотим получить информацию. |
Возвращаемые значения:
- Вернет ERROR_SUCCESS если выполнено успешно и информация занесена
в структуру pbtdi. Остальные значения – код ошибки.
Обладая этими знаниями, можно написать процедуру получения информации об
устройствах Bluetooth:
procedure GetDevices(_hRadio: THandle);
var
DeviceInfo: PBLUETOOTH_DEVICE_INFO;
DeviceSearchParams: BLUETOOTH_DEVICE_SEARCH_PARAMS;
DeviceFind: HBLUETOOTH_DEVICE_FIND;
begin
// Инициализация структуры BLUETOOTH_DEVICE_SEARCH_PARAMS
with DeviceSearchParams do
begin
dwSize := SizeOf(BLUETOOTH_DEVICE_SEARCH_PARAMS);
fReturnRemembered := true; // Вернуть запомненные
hRadio := _hRadio;
end;
// Инициализация структуры BLUETOOTH_DEVICE_INFO
FillChar(DeviceInfo, SizeOf(BLUETOOTH_DEVICE_INFO), 0);
DeviceInfo.dwSize := SizeOf(PBLUETOOTH_DEVICE_INFO);
// Начинаем поиск
DeviceFind := BluetoothFindFirstDevice(DeviceSearchParams, DeviceInfo);
if (DeviceFind <> 0) then begin
repeat
// Что-то сделать с полученными данными
// Инициализация структуры BLUETOOTH_DEVICE_INFO
FillChar(DeviceInfo, SizeOf(BLUETOOTH_DEVICE_INFO), 0);
DeviceInfo.dwSize := SizeOf(PBLUETOOTH_DEVICE_INFO);
// Находим следующее устройство
until (not BluetoothFindNextDevice(DeviceFind, DeviceInfo));
// Закрываем поиск
BluetoothFindDeviceClose(DeviceFind);
end;
end;
Заключение
Пока все. В следующей части рассмотрим способы получения информации о
сервисах, предоставляемых устройствами Bluetooth.
Внимание! Запрещается перепечатка данной статьи
или ее части без согласования с автором. Если вы хотите разместить эту статью на
своем сайте или издать в печатном виде, свяжитесь с автором.
|