【发布时间】:2016-08-02 16:36:37
【问题描述】:
从官方 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);
然后我自己设置服务器: adsData.setDiscoverability(QLowEnergyAdvertisingData::DiscoverabilityGeneral); adsData.setIncludePowerLevel(false); adsData.setLocalName("test"); adsData.setServices(QList()
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 应该和之前的 size 相加吗?
【问题讨论】:
-
经过一些试验,我似乎可以发送任意长度的数据——我尝试了最多 31 个字节。在一些文档中,我读到 GATT 特性的最大有效负载是 22 个字节。因此,混乱和问题仍然有效!
标签: qt5 bluetooth-lowenergy gatt