2016-06-19 2 views
0

BLE GATTサーバーのデータ・フォーマット

https://doc-snapshots.qt.io/qt5-dev/qtbluetooth-heartrate-server-example.html

より良いGATTサーバを設定する方法を理解します。 この例では、HeartRateプロファイルを作成します。ここから

const QLowEnergyDescriptorData clientConfig(QBluetoothUuid::ClientCharacteristicConfiguration, QByteArray(2, 0)); 

https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml

私は実際に私はからそれらを有効にする必要があります(これはデフォルトでは無効になって両方の通知や兆候を持って理解して具体的には、このクライアントの記述子を持つ特性を作成し、通知されるためのクライアントアプリケーション)。

私が本当に理解していないが、このコードは次のとおりです。

quint8 currentHeartRate = 60; 
const auto heartbeatProvider = [&service, &currentHeartRate, &valueChange]() { 
    QByteArray value; 
    value.append(char(0)); // Flags that specify the format of the value. 
    value.append(char(currentHeartRate)); // Actual value. 
    QLowEnergyCharacteristic characteristic = service->characteristic(QBluetoothUuid::HeartRateMeasurement); 
    service->writeCharacteristic(characteristic, value); // Potentially causes notification. 
    ... 

それは上に定義されたので、まあ、それは特性の値に2つのバイトを追加:

QLowEnergyCharacteristicData charData; 
charData.setUuid(QBluetoothUuid::HeartRateMeasurement); 
charData.setValue(QByteArray(2, 0)); 

が、何を最初に行います1つの意味ですか?

value.append(char(0)); // Flags that specify the format of the value. 

この「フォーマット」に関するドキュメントはありません。

答えて

1

最初のバイトは、ハートレートサービス(HRS)hereで指定されたフラグフィールドです。この例では、フラグフィールドは、心拍測定値がuint8形式であることを示します。

+0

自分のGATTサーバーを作るためにランダムなUUIDを生成しました。しかし、ペイロードの長さを1バイトにするために、値と記述子の両方を 'QByteArray(1、0)'として設定しようとすると、 'qt.bluetooth.bluez:type of attribute '{00002902-0000-1000- 8000-00805f9b34fb}は "1バイトの長さが無効です"。何バイトのバイト数でも同じことが起こりますが、なぜですか?今、心臓のプロファイルについては何もありません! – Mark

+0

00002902-0000-1000-8000-00805f9b34fbは、クライアント特性設定記述子uuidで、値は2バイトです。この記述子の値を設定しているようです。 – Preeti

+0

私は今、私のエラーを理解しています。 – Mark

関連する問題