You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bluetooth Framework VCL中创建GATT特征描述符的问题

在Bluetooth Framework VCL中为GATT本地特征添加描述符

我正在使用Bluetooth Framework VCL进行蓝牙LE项目开发,已通过以下代码创建了Characteristic:

var
  Service: TwclGattLocalService;
  Params: TwclGattLocalCharacteristicParameters;
  Characteristic: TwclGattLocalCharacteristic;
begin
  Uuid.ShortUuid := $FFF1;
  Params.Props := [cpReadable, cpNotifiable];
  Res := Service.AddCharacteristic(Uuid, Params, Characteristic);
  // 此处尝试添加Descriptor,但找不到对应方法
end;

我想要为已创建的Characteristic添加Descriptor,但找不到对应的方法。仅在Gatt客户端类中看到了读写描述符的方法:

var
  wclGattClient: TwclGattClient;
  Characteristic: TwclGattCharacteristic;
  FDescriptors: TwclGattDescriptors;
begin
  wclGattClient.ReadDescriptors(Characteristic, OpFlag, FDescriptors);
  wclGattClient.WriteDescriptorValue(Descriptor, val);
end;

由于Windows下Delphi默认BluetoothLE组件未实现Gatt服务器功能,我无法使用这些组件。

解决方法

添加描述符的正确方式是通过TwclGattLocalCharacteristic实例调用AddDescriptor方法,而非Service的方法。示例代码如下:

var
  Service: TwclGattLocalService;
  CharParams: TwclGattLocalCharacteristicParameters;
  Characteristic: TwclGattLocalCharacteristic;
  DescParams: TwclGattLocalDescriptorParameters;
  Descriptor: TwclGattLocalDescriptor;
  DescUuid: TwclGattUuid;
  Res: Integer;
begin
  // 创建特征(原有逻辑)
  CharParams.Props := [cpReadable, cpNotifiable];
  DescUuid.ShortUuid := $FFF1;
  Res := Service.AddCharacteristic(DescUuid, CharParams, Characteristic);
  if Res <> WCL_E_SUCCESS then Exit;

  // 配置描述符参数(以客户端特征配置描述符为例)
  DescUuid.ShortUuid := $2902; // 标准客户端特征配置UUID
  DescParams.Props := [dpReadable, dpWritable];
  DescParams.Value := TBytes.Create(0, 0); // 初始值:禁用通知

  // 为特征添加描述符
  Res := Characteristic.AddDescriptor(DescUuid, DescParams, Descriptor);
  if Res <> WCL_E_SUCCESS then
    // 此处添加错误处理逻辑
end;

核心要点:

  • 描述符属于特征的子元素,必须通过已创建的TwclGattLocalCharacteristic对象调用添加方法
  • 不同类型的描述符需要设置对应的UUID、属性和初始值(比如0x2902是支持通知/指示的必备描述符)

内容的提问来源于stack exchange,提问作者user3431569

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:15:40