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