© 2006 Петриченко Михаил,
Soft Service Company
В первой части статьи мы научились получать список локальных радиомодулей 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.
BluetoothFindNextDevice - находит следующее устройство Bluetooth.
Объявление функции:
function BluetoothFindNextDevice(Параметры:
hFind : HBLUETOOTH_DEVICE_FIND;
var pbtdi : BLUETOOTH_DEVICE_INFO): BOOL; stdcall;
Возвращаемые значения:
hFind Описатель, который вернула функция BluetoothFindFirstDevice pbtdi Структура BLUETOOTH_DEVICE_INFO, в которую будет помещена информацию об устройстве
BluetoothFindDeviceClose - закрывает описатель перечисления устройств Bluetooth.
Объявление функции:
function BluetoothFindDeviceClose(Параметры:
hFind : HBLUETOOTH_DEVICE_FIND): BOOL; stdcall;
Возвращаемые значения:
hFind Описатель, который вернула функция BluetoothFindFirstDevice
BluetoothGetDeviceInfo - возвращает информацию об указанном устройстве Bluetooth.
Объявление функции:
function BluetoothGetDeviceInfo(Параметры:
hRadio : THandle;
var pbtdi : BLUETOOTH_DEVICE_INFO): DWORD; stdcall;
Возвращаемые значения:
hRadio Описатель локального радиомодуля Bluetooth pbtdi Структура BLUETOOTH_DEVICE_INFO, в которую возвразается информация об устройстве. dwSize должен быть равен размеру структуры. addreess должен содержать адрес устройства, о котором хотим получить информацию.
Обладая этими знаниями, можно написать процедуру получения информации об устройствах 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 API (21.1K).
Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Copyright© 2006 Петриченко Михаил, Soft Service Company
Специально для Delphi Plus
Пожалуйста, оцените статью