BLE GATT服务器特征定义

时间:2016-08-02 16:36:37

标签: qt5 bluetooth-lowenergy gatt

从官方Qt5示例开始,我编写了一段非常短的代码,用于定义GATT服务器特性:

QLowEnergyCharacteristicData chrCommand;
chrCommand.setUuid(UUID_CHR_COMMAND);
chrCommand.setValue(QByteArray(2, 0));
chrCommand.setProperties(QLowEnergyCharacteristic::Write);
const QLowEnergyDescriptorData clientConfigCommand(QBluetoothUuid::ClientCharacteristicConfiguration, QByteArray(2, 0));
chrCommand.addDescriptor(clientConfigCommand);

然后我自己设置服务器:     advertisingData.setDiscoverability(QLowEnergyAdvertisingData :: DiscoverabilityGeneral);     advertisingData.setIncludePowerLevel(假);     advertisingData.setLocalName("测试&#34);     advertisingData.setServices(QList()<< UUID_ADV_MIRROR);

QLowEnergyServiceData srvService;
srvService.setType(QLowEnergyServiceData::ServiceTypePrimary);
srvService.setUuid(UUID_SRV_SERVICE);
srvService.addCharacteristic(chrCommand);

leController = QLowEnergyController::createPeripheral();
service = leController->addService(srvService);
leController->startAdvertising(QLowEnergyAdvertisingParameters(), advertisingData, advertisingData);

所有UUID常量都只是我自己的随机UUID。 它有效,我可以发现,绑定和写入2字节到我的特征。

我正在阅读Qt5和BLE文件,但我还有一些问题我自己无法回答:

  • 如何定义有效负载较长的特征?说一个16字节长"字符串"阵列?

  • 单个特征的最大长度是多少?

  • 所有特征的最大长度是多少?

  • localName应该用以前的大小求和?

1 个答案:

答案 0 :(得分:1)

我不熟悉Qt BLE库,但通常你有这些规则:

特征的最大长度为512字节。

所有特征都没有总和的最大长度。

但是通过无线方式发送值时存在限制:

广告数据分为两部分,每部分最多31个字节。第一部分称为广告数据,另一部分称为扫描响应数据。默认情况下,只有第一部分以频繁的时间间隔通过无线方式发送,但中央可以通过发送扫描请求来请求扫描响应数据。

Qt似乎有一些库函数来构建adv数据但你必须要注意最大长度。广告数据中没有内部组件的限制。

在连接状态下,您可以在标准写入请求中写入最多20个字节,如果执行读取请求,则响应最多可以获得22个字节。但协议消息也能够读取和写入“长值”,但它们需要多次往返。

相关问题