Freigeben über


GATT-Szenario: Steuern eines Bluetooth LE-Thermometers (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 fungiert als Controller für ein fiktives Bluetooth LE-Thermometer. Das Gerät deklariert außerdem ein Format-Merkmal, anhand dessen der Benutzer den Wert in Celsius oder Fahrenheit abrufen kann, zusätzlich zu den Standardmerkmalen des HealthThermometer-Profils.

Die Windows Store-App verwendet zuverlässige Schreibtransaktionen, um sicherzustellen, dass das Format und das Messintervall als einzelner Wert festgelegt werden.

// Uuid of the "Format" Characteristic Value
var formatCharacteristicUuid = "{00000000-0000-0000-0000-000000000010}";

// Constant representing a Fahrenheit scale temperature measurement
var fahrenheitReading = 1;

function intialize() {
    var Gatt = Windows.Devices.Bluetooth.GenericAttributeProfile;

    Windows.Devices.Enumeration.DeviceInformation.findAllAsync(
        Gatt.GattDeviceService.getDeviceSelectorFromUuid(
        Gatt.GattServiceUuids.healthThermometer),
        null).done(function (thermometerServices) {
            // App implemented UI to allow the user to select
            // the service they want to work with
            getUserSelectionAsync(thermometerServices).
                done(function (thermometerService) {
                    var intervalCharacteristic = thermometerService
                      .getCharacteristics(
                          Gatt.GattCharacteristicUuids
                              .measurementInterval)[0];

                    var formatCharacteristic = thermometerService
                        .getCharacteristics(formatCharacteristicUuid)[0];

                    var gattTransaction =
                        new Gatt.GattReliableWriteTransaction();

                    var writer = new Windows.Storage.Streams.DataWriter();
                    // Get the temperature every 60 seconds
                    writer.writeUInt16(60);

                    gattTransaction.writeValue(
                        intervalCharacteristic,
                        writer.detachBuffer());

                    // Get the temperature on the Fahrenheit scale
                    writer.writeByte(fahrenheitReading);

                    gattTransaction.writeValue(
                        formatCharacteristic,
                        writer.detachBuffer());

                    gattTransaction.commitAsync()
                        .done(function (gattCommunicationStatus) {
                            if (Gatt.GattCommunicationStatus.unreachable ==
                                gattCommunicationStatus) {
                                
                                outputDiv.innerText =
                                    "Writing to the device failed !";
                            }
                        });
                });
        });
};