BLE - чтение нескольких значений характеристик для службы - PullRequest
0 голосов
/ 24 апреля 2019

Я разрабатываю приложение в Delphi для связи со смарт-устройством с помощью Bluetooth LE. Это устройство имеет около 11 сервисов и иногда до 19 характеристик для одного сервиса. Я могу обнаружить все услуги и характеристики.

Но я застрял при чтении нескольких значений характеристик в цикле. Существует небольшая задержка между:

BluetoothLE.ReadCharacteristic (ConnectedDevice, GattCharacteristic);

и

BluetoothLEChaterteristicRead событие.

Как я могу убедиться, что правильно получил предыдущее значение, прежде чем запрашивать следующее? Есть ли где-нибудь пример, как сделать это безопасно с Delphi?

Заранее благодарю за помощь

1 Ответ

0 голосов
/ 08 мая 2019

Когда срабатывает событие OnServicesDiscovered, необходимо сохранить индекс этой службы (индекс в списке доступных служб на текущем устройстве). После этого вы должны получить доступ к списку доступных характеристик для текущей службы (в событии OnServicesDiscovered имеется список характеристик: AServiceList[CurrentServiceIndex].Characteristics) и выполнить считывание значений с помощью события OnCharacteristicRead, которое запускается индивидуально по одному признаку, который Вы хотите прочитать значение. В событии OnCharacteristicRead есть ACharacteristic параметр, который содержит текущую характеристическую информацию.

Использование Bluetooth Low Energy: http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_Bluetooth_Low_Energy

...