![]() |
Batteriezustand von einem Bluetooth LE Gerät auslesen
Hallo,
wir haben hier ein kleines Gerät welches per Bluetooth LE mit einem Windows 10 Rechner verbunden wird. Mir ist aufgefallen das in den Windows Einstellungen der Zustand der Batterie des Gerätes angezeigt wird. Da habe ich mich gefragt ob ich nicht in einer eigenen Software das auch machen kann. Um evtl. in der Software darauf reagieren zu können. Bisher hatte ich mich noch überhaupt nicht mit dem Thema Bluetooth und Delphi beschäftigt. Ich habe dann nach etwas Recherche und viel probieren es zumindest hinbekommen das Gerät zu identifizieren, jedoch bekomme ich die Info zum Batteriezustand nicht. Unter anderem habe ich diese Webseite ![]() In einer Testanwendung habe ich auf das Formular eine TBluetoothLE Komponente gepackt und 'Enabled' auf 'True' gesetzt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const BATService: TBluetoothUUID = '{0000180F-0000-1000-8000-00805F9B34FB}'; BATLevel: TBluetoothUUID = '{00002A19-0000-1000-8000-00805F9B34FB}'; var Index: Integer; Idx: Integer; i: Integer; begin if BluetoothLE1.DiscoverDevices(4000) then begin Memo2.Lines.Add('Anzahl Geräte: '+BluetoothLE1.CurrentManager.AllDiscoveredDevices.Count.ToString); if BluetoothLE1.CurrentManager.AllDiscoveredDevices.Count > 0 then begin for Index := 0 to BluetoothLE1.CurrentManager.AllDiscoveredDevices.Count-1 do begin with BluetoothLE1.CurrentManager.AllDiscoveredDevices.Items[Index] do begin //Das gewünschte Gerät "auswählen" if Copy(DeviceName,1,4) = 'BLE_' then begin Memo2.Lines.Add('Identifier: '+Identifier); Memo2.Lines.Add('DeviceName: '+DeviceName); Memo2.Lines.Add('Paired: '+BoolToStr(Paired, True)); Memo2.Lines.Add('IsConnected: '+BoolToStr(IsConnected, True)); Memo2.Lines.Add(EmptyStr); //Wenn Gerät verbunden ist, Batteriezustand ermitteln... if IsConnected then begin if DiscoverServices then begin for Idx := 0 to Services.Count-1 do begin //Battery Service if Services.Items[Idx].UUID = BATService then begin Memo2.Lines.Add('UUID: '+Services.Items[Idx].UUIDName+' ('+Services.Items[Idx].UUID.ToString+')'); Memo2.Lines.Add('Characteristics.Count: '+Services.Items[Idx].Characteristics.Count.ToString); for i := 0 to Services.Items[Idx].Characteristics.Count-1 do begin Memo2.Lines.Add('Characteristic UUID:'+Services.Items[Idx].Characteristics.Items[i].UUIDName+' ('+Services.Items[Idx].Characteristics.Items[i].UUID.ToString+')'); //Battery Level if Services.Items[Idx].Characteristics.Items[i].UUID = BATLevel then begin with Services.Items[Idx].Characteristics.Items[i] do begin if TBluetoothProperty.Read in Properties then begin Memo2.Lines.Add('Value.Count: '+Length(Value).ToString); //!!! Value ist leer es enthält keine Bytes !!! end;{if} end;{with} end;{if} end;{for} Memo2.Lines.Add(EmptyStr); end;{if} end;{if} end else ShowMessage('DiscoverServices failed'); end;{if IsConnected} end;{if} end;{with} end;{for} end else ShowMessage('No devices found!'); end else ShowMessage('Discover failed'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz