Ausgehend von offiziellen QT5 Beispielen, die ich ein sehr kurzes Stück Code geschrieben, der ein GATT-Server Merkmal definiert:BLE GATT-Server Eigenschaften Definitionen
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);
Dann gründe ich den Server selbst: advertisingData.setDiscoverability (QLowEnergyAdvertisingData: : AuffindbarkeitGeneral); advertisingData.setIncludePowerLevel (false); advertisingData.setLocalName ("test"); 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);
Wo alle UUIDs Konstanten sind nur meine eigenen zufälligen UUIDs. Es funktioniert und ich kann die 2-Bytes zu meinem Merkmal entdecken, verbinden und schreiben.
lese ich beide durch die QT5 und BLE Dokumentationen, aber ich habe noch ein paar Fragen, die ich nicht von mir selbst beantworten kann:
wie ein Merkmal mit mehr Nutzlast definieren? Sprich ein 16 Byte langes "String" -Array?
Was ist die maximale Länge eines einzelnen Merkmals?
Wie ist die maximale Länge aller Merkmale?
Der localName sollte in der vorherigen Größe summiert werden?
Nach einigen Versuchen scheint es, ich kann Daten beliebiger Länge senden - ich habe versucht, bis zu 31 Bytes. In einigen Dokumenten lese ich die maximale Nutzlast eines GATT-Merkmals ist 22 Bytes. Somit sind die Verwirrung und die Fragen immer noch gültig! – Mark