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