使用 ArduinoBLE 库向 Arduino Nano 33 BLE 添加描述符的问题

问题描述 投票:0回答:1

我正在使用 Nano 33 BLE 编写一些蓝牙应用程序。我试图使用 ArduinoBLE 文档中描述的 addDescriptor 方法,但我发现描述符实际上并未添加。 图书馆

我在堆栈溢出上找到了一个示例,其中用户发布了他们的代码以及 nRF connect 等扫描仪的屏幕截图,显示了描述符。 示例

我复制了这段代码,但仍然找不到描述符。这是有问题的代码。

#include <ArduinoBLE.h>

BLEService echoService("00000000-0000-1000-8000-00805f9b34fb");
BLEStringCharacteristic charac ("741c12b9-e13c-4992-8a5e-fce46dec0bff", BLERead | BLEWrite | BLENotify,40);
BLEDescriptor Descriptor("beca6057-955c-4f8a-e1e3-56a1633f04b1","Descriptor");
String var = "";


void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
  while(!Serial);

  if(!BLE.begin()){
    Serial.println("starting BLE failed.");
    while(1);
  }

  
  BLE.setLocalName("Arduino BLE Echo");
  BLE.setAdvertisedService(echoService);
  charac.addDescriptor(Descriptor);
  echoService.addCharacteristic(charac);
  BLE.addService(echoService);
  BLE.advertise();

  Serial.print("Descriptor Count: ");
  Serial.println(charac.descriptorCount());
  
  Serial.println("Bluetooth device active, waiting for connections...");
  Serial.println(" ");
}

void loop() {
  // put your main code here, to run repeatedly:

}

我正在输出描述符的数量,结果返回为零。连接到 nRF connect 中的设备会显示预期的服务/特性,但没有描述符。我已经使用 2 个不同的 BLE 扫描仪应用程序和我的 iOS 应用程序验证了这一点。

我真的不确定我做错了什么。希望有人能给我指明方向。

谢谢

我尝试从头开始以几种不同的方式创建此代码,首先我自己使用库文档,然后多次使用我在网上找到的示例。我已经使用 3 个不同的 BLE 扫描应用程序以及我正在创建的 iOS 应用程序验证了描述符的缺失。在所有实例中,服务/特性都存在,但没有描述符。

通过我的代码,我希望在 BLE 扫描仪、arduino 草图的输出以及我的应用程序中看到描述符。

arduino bluetooth-lowenergy arduino-nano
1个回答
0
投票

我遇到了类似的问题。我想添加 2902(客户端特征配置)描述符。但这样做之后,“.descriptorCount()”仍然是0。 使用 nRF Connect 应用程序,我发现我的 2902-Descriptor 无论如何都被添加了。 实际上存在 2x 2902-Descriptor。似乎创建一个特性会自动添加一个默认的 2902-描述符。但我无法访问预定义的描述符。因为“.descriptorCount()”始终为0,而“.hasDescriptor(“2902”)”为假。 有人可以帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.