Содержание материала

Сначала мы вызываем функцию с pcServices=0 и pGuidServices=nil для того, чтобы получить количество сервисов, предоставляемых устройством.

Потом выделяем память (SetLength()) и только затем вызываем функцию с реальными параметрами и получаем список сервисов.

Еще важное замечание. В файле JwaBluetoothAPIs.pas параметр pbtdi имеет тип PBLUETOOTH_DEVICE_INFO, который раскрывается в BLUETOOTH_DEVICE_INFO. Заметьте, что это НЕ УКАЗАТЕЛЬ. Это не верно, так как в исходном виде функция требует именно указатель. По-этому, я ввел тип

type
__PBLUETOOTH_DEVICE_INFO = ^PBLUETOOTH_DEVICE_INFO

Так что ИСПОЛЬЗУЙТЕ файл из примера, а не из исходной библиотеки. Иначе получите нарушение доступа к памяти.

Комментарий к коду: Мы перечитываем информацию об устройстве, так как за время, пока мы любуемся программой, могли произойти различные события: устройство отключили, отменили авторизацию и т. п. А мы хотим иметь самую свежую информацию об устройстве.

В принципе то, что описано выше, мы уже знали, кроме двух указанных функций.

Давайте расширим возможности нашего приложения. Добавим функции запрета/разрешения обнаружения радиомодуля и запрета/разрешения подключения к нему.

BluetoothEnableIncomingConnections и BluetoothEnableDiscoverable

Поместим на форму компонент TactionList и изменим его свойства как показано в таблице.

Свойство

Значение

Name

ActionList

Теперь два раза щелкнем по ActionList и в появившемся окне редактора свойств добавим две TAction со следующими свойствами:

Свойство

Значение

Caption

Connectable

Name

acConnectable

 

Свойство

Значение

Caption

Discoverable

Name

acDiscoverable

На панель Panel добавим две TButton и установим свойства:

Свойство

Значение

Action

acConnectable

Name

btConnectable

 

Свойство

Значение

Action

acDiscoverable

Name

btDiscoverable

Напишем вот такой обработчик события OnUpdate у acConnectable:

Code:

procedure TfmMain.acConnectableUpdate(Sender: TObject);

var

SelectedItem: TListItem;

SelectedNode: TTreeNode;

begin

SelectedNode := TreeView.Selected;

SelectedItem := ListView.Selected;

 

with TAction(Sender) do

begin

Enabled := Assigned(SelectedNode) and Assigned(SelectedItem) and (SelectedNode.ImageIndex = -1);

 

if Enabled then

if StrToBool(SelectedItem.SubItems[4])

then Caption := 'Not conn.'

else Caption := 'Connectable';

end;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить