Freigeben über


GATT-Szenario: Steuern der Darstellung von Bluetooth LE-Gerätedaten (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Eine Windows Store-App für Bluetooth LE-Geräte kann einen Akkudienst verfügbar machen, der dem Benutzer den aktuellen Akkustand anzeigt. Der Akkudienst enthält einen optionalen PresentationFormat-Deskriptor, der eine gewisse Flexibilität bei der Interpretation der Akkustandsdaten ermöglicht. Dieses Szenario beinhaltet ein Beispiel für eine App, die mit einem derartigen Gerät ausgeführt wird und die PresentationFormats-Eigenschaft verwendet, um einen Merkmalswert zu formatieren, bevor er dem Benutzer dargestellt wird.

function initialize() {
    var Gatt = Windows.Devices.Bluetooth.GenericAttributeProfile;
    Windows.Devices.Enumeration.DeviceInformation.findAllAsync(
        Gatt.GattDeviceService.getDeviceSelectorFromUuid(
            Gatt.GattServiceUuids.battery),
        null).done(function (batteryServices) {
          Gatt.GattDeviceService.fromIdAsync(batteryServices[0].id)
            .done(function (firstBatteryService) {
              var batteryLevelCharacteristic = firstBatteryService
                    .getCharacteristics(
                        Gatt.GattCharacteristicUuids.batteryLevel)[0];

                batteryLevelCharacteristic.onvaluechanged =
                    function (args) {
                        var levelData = Windows.Storage.Streams.DataReader
                            .fromBuffer(args.characteristicValue)
                            .readByte();

                        // Retrieve the GattCharacteristic sender
                        var sender = args.target;

                        // if the sender Characteristic has a presentation
                        // format use that information to format the value
                        var levelValue;
                        if (args.target.presentationFormats.length > 0) {
                            levelValue = levelData *
                                Math.pow(
                                    10.0,
                                    args.target
                                        .presentationFormats[0].exponent);
                        } else {
                            levelValue = levelData;
                        }

                        outputDiv.innerText = levelValue.toString();
                    };

                batteryLevelCharacteristic
                    .writeClientCharacteristicConfigurationDescriptorAsync(
                    Gatt
                      .GattClientCharacteristicConfigurationDescriptorValue
                          .notify).done(function (status) {
                            if (Gatt.GattCommunicationStatus.unreachable ==
                                status) {
                              outputDiv.innerText =
                                  "Writing to the device failed !";
                            }
                          });
            });
        });
}