Добро пожаловать наmobileservicesoft.narod.ru

Работа с Bluetooth Часть 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_RADIO_FIND;
      var pbtdi : BLUETOOTH_DEVICE_INFO): BOOL; stdcall;

Параметры:

hFind Описатель, который вернула функция BluetoothFindFirstDevice.
pbtdi Структура BLUETOOTH_DEVICE_INFO, в которую будет помещена информацию об устройстве.

Возвращаемые значения:

Вернет TRUE, если устройство найдено.

Вернет FALSE в случае отсутствия устройства. phRadio содержит некорректный описатель. Используйте 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(PBLUETOOTH_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(PBLUETOOTH_DEVICE_INFO), 0);
       DeviceInfo.dwSize := SizeOf(PBLUETOOTH_DEVICE_INFO);
       // Находим следующее устройство
     until (not BluetoothFindNextDevice(DeviceFind, DeviceInfo));

     // Закрываем поиск
     BluetoothFindDeviceClose(DeviceFind);
   end;
end;

Заключение

Пока все. В следующей части рассмотрим способы получения информации о сервисах, предоставляемых устройствами Bluetooth.

Готовый рабочий пример использования указанных функций вы можете найти здесь.

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

Автор статьи: Петриченко Михаил



 

 

Сайт управляется системой uCoz