AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung BluetoothLE: Probleme seit dem letzten Windows-Update
Thema durchsuchen
Ansicht
Themen-Optionen

BluetoothLE: Probleme seit dem letzten Windows-Update

Ein Thema von philipp.hofmann · begonnen am 25. Nov 2018 · letzter Beitrag vom 10. Mär 2020
 
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
917 Beiträge
 
Delphi 10.4 Sydney
 
#1

BluetoothLE: Probleme seit dem letzten Windows-Update

  Alt 25. Nov 2018, 19:50
Hallo allerseits,

Windows speichert bei mir (auf drei Rechnern) seit dem letzten Update die gepairten BluetoothLE-Verbindungen nicht mehr.
Die BluetoothLE-Implementierung von Delphi 10.2.3 und 10.3 kann unter Windows aber nur mit gepairten Verbindungen umgehen.
Dies beißt sich leider und führt dazu, dass ich nach jedem Systemstart umständlich die Devices (Herzfrequenz, Watt-Pedal, RPM-Messung und Smart-Trainer-Rolle) unter Windows (bzw. mit Bluetooth LE Explorer) nochmals pairen muss, bevor mein Programm diese nochmals benutzen kann.

Das Thema liegt auch schon beim Delphi-Support, aber hat hier jemand für das Probleme eine pfiffige Lösung?
Selbst kann man das pairen aus Delphi heraus wahrscheinlich nicht anstoßen, oder?
Ich kann zwar durch eine kleine Anpassung in System.Win.BluetoothWinRT das Device verbinden, dann finden sich aber keine Services (bzw. nur bei einem von vier Devices):

Delphi-Quellcode:
procedure TWinRTBluetoothLEDevice.CheckInitialized;
var
  LBLEDeviceAsyncOp: IAsyncOperation_1__IBluetoothLEDevice;
begin
  if (FBluetoothLEDevice = nil) or FClosed then
  begin
    if FId = 0 then
      //Beginn alter Code
      // raise EBluetoothDeviceException.Create(SBluetoothLEDeviceNotPaired);
      //Ende alter Code
    //Beginn neuer Code
    begin
      if TAsyncOperation<IAsyncOperation_1__IBluetoothLEDevice>.Wait(
          TBluetoothLEDevice.Statics.FromBluetoothAddressAsync(FAddress), LBLEDeviceAsyncOp) = AsyncStatus.Completed then
      begin
        FBluetoothLEDevice := LBLEDeviceAsyncOp.GetResults;
        FClosed := False;
        if DeviceName = 'then
          FDeviceName := FBluetoothLEDevice.Name.ToString;
        FConnectionStatusChangeDelegate := TConnectionStatusChangeEventHandler.Create(Self);
        FBluetoothLEDevice.add_ConnectionStatusChanged(FConnectionStatusChangeDelegate);
      end;
    end
    //Ende neuer Code
    else if TAsyncOperation<IAsyncOperation_1__IBluetoothLEDevice>.Wait(
          TBluetoothLEDevice.Statics.FromIdAsync(FId), LBLEDeviceAsyncOp) = AsyncStatus.Completed then
Grüße, Philipp
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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