Четверг, 02.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нужен форум на сайте?
Всего ответов: 90
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Работа с Bluetooth

Работа с 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 | Добавил: Барон (08.12.2011)
Просмотров: 1161 | Теги: delphi, Bluetooth | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования