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