Уведомление и индикация - BLE, Служба глюкозы - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь получить измерения глюкозы с устройства для измерения уровня глюкозы (Contour One Plus) с Bluetooth LE, используя компонент TBluetoothLE в Delphi. Я могу: - подключиться к устройству - обнаружить службы GATT - обнаружить характеристики GATT, и теперь я пытаюсь установить уведомление для характеристик измерения глюкозы c и индикацию для записи характеристики точки контроля доступа c.

Я написал две процедуры для включения:

  • уведомление для измерения глюкозы:
procedure TForm6.enableGlucoseMeasurementNotification(
  const ACharacteristic: TBluetoothGattCharacteristic);
  var
    ADescriptor: TBluetoothGattDescriptor;
    AValues : TBytes;
begin
   BluetoothLE1.DiscoveredDevices[0].SetCharacteristicNotification(FGlucoseMeasurementGattCharact, true);
   ADescriptor := FGlucoseMeasurementGattCharact.Descriptors[0];  // czy aby na pewno [0]... ?

   SetLength(AValues, 2);
   AValues[0] := $01;
   AValues[1] := $00;

   ADescriptor.SetValue(AValues);
   BluetoothLE1.DiscoveredDevices[0].WriteDescriptor(ADescriptor);
end;
  • индикация для точки контроля доступа к записи:
procedure TForm6.enableRecordAccessControlPointIndication(
  const ACharacteristic: TBluetoothGattCharacteristic);
  var
  ADescriptor: TBluetoothGattDescriptor;
  AValues: TBytes;
begin
  BluetoothLE1.DiscoveredDevices[0].SetCharacteristicNotification(FRecordAccessControlPoint, true);
  ADescriptor := FRecordAccessControlPoint.Descriptors[0];

  SetLength(AValues, 2);
  AValues[0] := $02;
  AValues[1] := $00;

  ADescriptor.SetValue(AValues);
  BluetoothLE1.DiscoveredDevices[0].WriteDescriptor(ADescriptor);
end;

Я основан на nRF Connect, но мало что понимаю. Мой вопрос, где я должен выполнить эти две процедуры? В OnServicesDiscovered? Правильны ли мои процедуры? И каков следующий шаг, чтобы получить значения от RACP? Я должен просто записать значение байта (например, 0x01) в RACP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...