Я пытаюсь получить измерения глюкозы с устройства для измерения уровня глюкозы (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?