Partilhar via


Cenário GATT: controlar um dispositivo de termômetro LE Bluetooth (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Um aplicativo da Windows Store age como um controlador para um dispositivo de Termômetro LE Bluetooth fictício. O dispositivo também declara uma característica de Formato que permitiria que um usuário recuperasse a leitura do valor em graus Celsius ou Fahrenheit, além das características padrão do perfil de HealthThermometer.

O aplicativo da Windows Store utiliza transações de gravação confiáveis para garantir que o formato e o intervalo da medição sejam definidos como um único valor.

// 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 !";
                            }
                        });
                });
        });
};