· Главная · Блоги · Книги · Скачать исходники и компоненты · Статьи ·Рассылка новых исходников · Карта сайта
 
  Навигация
Главная Новости Книги Статьи Исходники Компоненты Опросы Каталог ссылок Добавить ссылку Рассылка
  Наш опрос
Файлхостинг?!
Откуда вам лучше скачивать??(Важно) Новые исходники не будут публиковаться пока не закончится голосование!
upload.com.ua (UA)
depositfiles.com (RU)
Голосовало : 130
  Поиск по сайту (Google)
  ...
  Статьи » Железо
Введите слово для поиска :  
 Железо    Delphi и Bluetooth №1
05 Июль 2007     Просмотров: 589
Этой статьей хочу начать серию по работе с Bluetooth в Delphi под Microsoft Windows XP. Так как тема весьма сложная, прошу внимательно читать. Повторяться не буду. Все программы написаны на Delphi 6 и тестировались со стандартным стеком Bluetooth от Microsoft под Windows XP + SP2. Все необходимые библиотеки прилагаются. Так что дополнительно ничего качать не нужно. При разработке использовал только API функции с JEDI. Описание функций будут даны в стиле Object Pascal. Сионистов просьба обращаться к MSDN и Microsoft Platform SDK :).Получение списка установленных радиомодулей Bluetooth

Итак, для начала попробуем получить список установленных на компьютере радиомодулей Bluetooth.

BluetoothFindFirstRadio

Начинает перечисление локальных радиомодулей Bluetooth.

Объявление функции:

function BluetoothFindFirstRadio(
const pbtfrp : PBlueToothFindRadioParams;
var phRadio : THandle): HBLUETOOTH_RADIO_FIND; stdcall;

Параметры:

pbtfrp - указатель на структуру BLUETOOTH_FIND_RADIO_PARAMS. Член dwSize этой структуры должен содержать размер структуры (устанавливается посредством SizeOf(BLUETOOTH_FIND_RADIO_PARAMS)).
phRadio - описатель (Handle) найденного устройства.

Возвращаемые значения: в случае успешного выполнения функция вернет корректный описатель в phRadio и корректный описатель в качестве результата. В случае ошибки будет возвращен 0. Для получения кода ошибки используйте функцию GetLastError.

BluetoothFindNextRadio

Находит следующий установленный радиомодуль Bluetooth.

Объявление функции:

function BluetoothFindNextRadio(
hFind : HBLUETOOTH_RADIO_FIND;
var phRadio : THandle): BOOL; stdcall;

Параметры:

hFind - описатель, который вернула функция BluetoothFindFirstRadio.
phRadio - сюда будет помещен описатель следующего найденного радиомодуля.

Возвращаемые значения: вернет TRUE, если устройство найдено. В phRadio корректный описатель на найденный радиомодуль. Вернет FALSE в случае отсутствия устройства. phRadio содержит некорректный описатель. Используйте GetLastError для получения кода ошибки.

BluetoothFindRadioClose

Закрывает описатель перечисления радиомодулей Bluetooth.

Объявление функции:

function BluetoothFindRadioClose(
hFind : HBLUETOOTH_RADIO_FIND): BOOL; stdcall;

Параметры:

hFind - описатель, который вернула функция BluetoothFindFirstRadio.

Возвращаемые значения: вернет TRUE если описатель успешно закрыт. Вернет FALSE в случае ошибки. Для получения кода ошибки используйте GetLastError.

Теперь у нас достаточно знаний, чтобы получить список установленных радиомодулей Bluetooth.

Напишем вот такую процедуру.

procedure EnumRadio;
var
hRadio: THandle;
BFRP: BLUETOOTH_FIND_RADIO_PARAMS;
hFind: HBLUETOOTH_RADIO_FIND;
begin
//
Инициализация структуры BLUETOOTH_FIND_RADIO_PARAMS
BFRP.dwSize := SizeOf(BFRP);

//
Начинаем поиск
hFind := BluetoothFindFirstRadio(@BFRP, hRadio);
if (hFind <> 0) then begin
repeat
//
Что-то сделать с полученным описателем

//
Закрыть описатель устройства
CloseHandle(hRadio);

//
Находим следующее устройство
until (not BluetoothFindNextRadio(hFind, hRadio));

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


Это, конечно, все здорово, но в принципе бесполезно. Давайте что-нибудь сделаем еще. Например, получим информацию о радиомодуле Bluetooth.

Получение информации о радиомодуле Bluetooth

Для получения информации о радиомодуле Bluetooth используется функция

BluetoothGetRadioInfo

Возвращает информацию о радиомодуле, который представлен описателем.

Объявление функции:

function BluetoothGetRadioInfo(
hRadio : THandle;
var pRadioInfo : BLUETOOTH_RADIO_INFO): DWORD; stdcall;

Параметры:

hRadio - описатель локального радиомодуля, который получен функцией BluetoothFindRadioFirst или BluetoothFindRadioNext.
pRadioInfo - структура, в которую записывается информация об указанном радиомодуле. Член dwSize должен быть равен размеру структуры.

Возвращаемые значения: вернет ERROR_SUCCESS если информация получена, в противном случае код ошибки.

Структура BLUETOOTH_RADIO_INFO выгляди вот так:

_BLUETOOTH_RADIO_INFO = record
dwSize : dword;
address : BLUETOOTH_ADDRESS;
szName : array [0..BLUETOOTH_MAX_NAME_SIZE - 1] of widechar;
ulClassofDevice : ulong;
lmpSubversion : word;
manufacturer : word;
end;

dwSize - размер структуры в байтах.
address - адрес локального радиомодуля.
szName - имя радиомодуля.
ulClassofDevice - класс устройства.
lmpSubversion - устанавливается производителем.
manufacturer - код производителя (константы BTH_MFG_Xxx). Для получения новых кодов обратитесь к сайту спецификаций Bluetooth.

Это уже что-то. Воспользуемся этой информацией и напишем вот такую процедуру.

procedure GetRadioInfo(hRadio: THandle);
var
RadioInfo: BLUETOOTH_RADIO_INFO;
begin
//
Инициализация структуры BLUETOOTH_RADIO_INFO
FillChar(RadioInfo, 0, SizeOf(RadioInfo));
RadioInfo.dwSize := SizeOf(RadioInfo);

//
Получаем информацию
if (BluetoothGetRadioInfo(hRadio, RadioInfo) = ERROR_SUCCESS) then begin

//
Используем полученную информацию
end;
end;


Заключение

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

  Печать
  ...
  ...
  Исходники
Базы данных
Интернет
Система
Железо
Приложение
Игры
Мультимедиа
  Компоненты
Базы данных
Интернет
Система
Железо
Приложение
Библиотеки компонент
Мультимедиа
  Популярные файлы
  » Библиотека RxLib 2.75 для Delphi 1-7
  » DSPack 2006 - набор компонентов для написания приложений с использованием DirectShow
  » Определение имени домена по IP-адресу и наоборот. Подсчет трафика.
  » Delphi Web-хакер, подбор паролей
  » Пример работы с Bluetooth с помощью Delphi
  Рассылка
Ваше имя :
E-Mail :
Формат :

 
Главная · Скачать исходники и компоненты · Статьи ·Рассылка · Связаться с автором