Голосование

Как Вы обычно находите нужную информацию?

При помощи поисковых систем
Специализированные сайты
Экспертное мнение (форумы, LiveJournal, знакомые)
С помощью онлайн-справочников (Wikipedia, словари)
Печатная продукция (книги, журналы)



Посмотреть результаты
Другие опросы ...

 

Лента RSS, новости сайта Новости сайта
Лента RSS, новости форума Новости форума
  Bookmark and Share

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Кнопки, Ссылки и Баннеры ...

 


Automatic translation


English German French Italian Spanish
Portuguese Greece Japan Chinese Korean


Ссылки и Баннеры


скрыть

 

Delphi Sources

Delphi Sources

СТАТЬИ

 

. : Работа с Bluetooth в Delphi - Часть 1 : .

 

Страницы | 1 | 2 | 3 | 4 |


Вступление


Этой статьей хочу начать серию по работе с 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;


Заключение

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

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

Страницы | 1 | 2 | 3 | 4 |
 

Дата: 26.07.2007, Автор: Петриченко Михаил.
Оригинал статьи: http://mobileservicesoft.narod.ru/stat.html






Назад

   

 























































































































 

© 2004-2018 "DS"

Отправить письмо / Реклама


ВКонтакте   Facebook   Twitter