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