Работа с Bluetooth в Delphi. Часть 2

Вступление
В первой части статьи мы научились получать список локальных радиомодулей 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.

Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Теги:
Bluetooth
Добавлено: 18 Июля 2018 07:47:23 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...