Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Windows 11 und Bluetooth LE (https://www.delphipraxis.net/214804-windows-11-und-bluetooth-le.html)

Graw 12. Mär 2024 14:32

Windows 11 und Bluetooth LE
 
Hallo,

ich suche nun schon lange nach einem passendem Beispiel für eine Bluetooth LE Verbindung mit Windows 11.

Ich will die Characteristics abfragen und die dazugehörenden Values.

Kann mir hier jemand weiterhelfen?

himitsu 12. Mär 2024 15:29

AW: Windows 11 und Bluetooth LE
 
Hast du die Delphi-Demos nicht installiert?
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\

Ich würde doch mal schauen, ob sich was findet.
Und dann hat Emba auch so einige Videos auf Youtube
und in der Hilfe sind zu einigen Kompnenten auch Demos verlinkt.

z.B.
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\...



oder Delphi neu installieren

oder Tools -> Platformen verwalten -> Samples anhaken und installieren

oder z.B. https://github.com/Embarcadero/RADStudio12Demos
RADStudio12Demos\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\Beacons\...

Graw 13. Mär 2024 14:27

AW: Windows 11 und Bluetooth LE
 
Hallo himitsu,

mit den Beispielen habe ich schon probiert.
Leider ist kein Beispiel unter Windows funktionstüchtig.

Mein Hauptaugenmerk liegt da auf "ExploreDevicesLE" und "BLEScanner".

Das Suchen der Geräte funktioniert noch.
Aber sobald ich bei ExploreDevicesLE auf Get klicke oder beim BLEScanner ein Device auswähle, frieren beide Anwendungen ein und müssen über den Taskmanager beendet werden.

Die neusten Versionen von github habe ich auch getestet.

philipp.hofmann 13. Mär 2024 21:52

AW: Windows 11 und Bluetooth LE
 
Ich habe ExploreDevicesLE gerade bei mir mal getestet, allerdings Windows 10. Da läuft es problemlos. War die Win32-Debug-Variante. Aber ich weiß, dass bei der Iteration durch Characteristics eines Service wichtig ist, dass dies nicht im Hauptthread passiert. Dies kann zu Hängenbleibern führen. Ich habe jetzt nicht gecheckt, wie das Beispiel es macht.

Graw 15. Mär 2024 11:30

AW: Windows 11 und Bluetooth LE
 
Das ist ja interessant.
Wenn auf Get geklickt wird, hängt es sich nicht auf?

Kann es an meiner Hardware liegen?

philipp.hofmann 15. Mär 2024 12:31

AW: Windows 11 und Bluetooth LE
 
Ja, beim Klick auf "Get services" hängt es sich nicht auf. Aber es kann gut sein, dass du einen Thread um die Funktion ServicesDiscovered bauen musst. Dies scheint mir in dem Beispiel falsch zu sein.

Probiere mal diese Anpassung:
Delphi-Quellcode:
procedure TFrDeviceExplorer.ServicesDiscovered(const Sender: TObject; const AServiceList: TBluetoothGattServiceList);
begin
  TThread.CreateAnonymousThread(
  procedure()
  var
  I: Integer;
  CharList: TBluetoothGattCharacteristicList;
  AChar: TBluetoothGattCharacteristic;
  J: Integer;
  CurrentRow: Integer;
  Options: string;
  ServiceItem, Characteristic, CharProps: TTreeViewItem;
  begin
    TvCharacteristics.Clear;
    for I := 0 to AServiceList.Count - 1 do
    begin
      ServiceItem := TTreeViewItem.Create(nil);
      ServiceItem.Parent := TvCharacteristics;
      ServiceItem.Tag := I;
      ServiceItem.IsExpanded := True;
      if AServiceList[I].UUIDName.IsEmpty then
        ServiceItem.Text := 'Unnamed'
      else
        ServiceItem.Text := AServiceList[I].UUIDName;
      CharList := AServiceList[I].Characteristics;
      for J := 0 to CharList.Count - 1 do
      begin
        AChar := CharList[J];
        TThread.Synchronize(nil, procedure begin
          Options := '';
          if TBluetoothProperty.Broadcast in AChar.Properties then Options := Options + 'Broadcast ';
          if TBluetoothProperty.ExtendedProps in AChar.Properties then Options := Options + 'ExtendedProps ';
          if TBluetoothProperty.Notify in AChar.Properties then Options := Options + 'Notify ';
          if TBluetoothProperty.Indicate in AChar.Properties then Options := Options + 'Indicate ';
          if TBluetoothProperty.Read in AChar.Properties then Options := Options + 'Read ';
          if TBluetoothProperty.Write in AChar.Properties then Options := Options + 'Write ';
          if TBluetoothProperty.WriteNoResponse in AChar.Properties then Options := Options + 'WriteNoResponse ';
          if TBluetoothProperty.SignedWrite in AChar.Properties then Options := Options + 'SignedWrite ';
          Characteristic := TTreeViewItem.Create(nil);
          Characteristic.Parent := ServiceItem;
          Characteristic.IsExpanded := False;
          if AChar.UUIDName.IsEmpty then
            Characteristic.Text := 'Unnamed'
          else
            Characteristic.Text := AChar.UUIDName;
          Characteristic.Tag := J;
          CharProps := TTreeViewItem.Create(nil);
          CharProps.Tag := -1;
          CharProps.Parent := Characteristic;
          CharProps.IsExpanded := True;
          CharProps.Text := GUIDToString(AChar.UUID);
          CharProps := TTreeViewItem.Create(nil);
          CharProps.Tag := -1;
          CharProps.Parent := Characteristic;
          CharProps.IsExpanded := True;
          CharProps.Text := Options;
        end);
        Application.ProcessMessages;
      end;
    end;
    tmAnimateFindServices.Enabled := False;
    PbServices.Value := 100;
  end).Start;
end;
D.h. übertragen auf das Beispiel müsste es

Graw 21. Mär 2024 08:53

AW: Windows 11 und Bluetooth LE
 
Hallo,

vielen Dank für deine Anpassung.
Bin gerade dazu gekommen diese zu testen.
Leider ist das Ergebnis noch das selbe.
Beim anklicken von Get sevices hängt sich die Software auf.

Michael II 21. Mär 2024 14:00

AW: Windows 11 und Bluetooth LE
 
Hab's mit Delphi 11.2 und Dell Notebook mit Windows 11 Pro (Version 10.0.22635.3350) getestet.
Das Erkennen der Devices scheint völlig fuzzy zu sein. Ich klicke und sehe 3 Geräte, ich klicke erneut und sehe 7. Einige Leerzeilen, einige Namen werden nicht angezeigt (nur Bluetooth <Adresse>); meine Hyperboom (welche von meinem Dell Testgerät korrekt angezeigt wird) wird zum Beispiel nie als HYPERBOOM angezeigt.
Wenn ich einen Device "selecte" und Get... klicke, dann passiert bei keinem der 7 ausgewählten Geräte was. Ab und zu hängt sich die App nach Klick auf Get... auf.
Das Beispiel ist für die Tonne. Leider haben wir hier auf dem Land nur alle zwei Wochen Müllabfuhr.

Rollo62 21. Mär 2024 17:05

AW: Windows 11 und Bluetooth LE
 
Das ist aber bei Funk normal, dass man sich nicht 100 % auf den Empfang verlassen kann.
Liegt in der Natur der Sache, dass mal entferntere Geräte gelistet werden und mal nicht und die Reihenfolge sich ändert.
Die Geräte können auch verschiedene Sendezyklen besitzen, die sehr Stromsparenden senden vielleicht nur alle >=10 Sekunden,
währen die aktiveren Geräte auch gerne mal alle 40ms senden können.
Das ist bei Bluetooth normal, Hauptsache man erkennt überhaupt Geräte.

Redeemer 21. Mär 2024 19:58

AW: Windows 11 und Bluetooth LE
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mich mit unzähligen LED-Controllern beschäftigt. Die Wahrscheinlichkeit, dass diverse PC-Hardware die gefunden hat, hing stark vom Controller ab. Zu den sehr unsicher gefundenen gehört aber insbesondere auch unser Samsung-Fernseher, der zudem als einziger oft keinen Namen bekam.

Obwohl für LED-Lichterketten gedacht, kann man das Ding auch für das benutzen, was du vor hast:
1. Scan anklicken
2. Auf das Gerät doppelklicken
Charakteristiken sind dann in den ComboBoxen rechts daneben.

Es funktioniert bei mir mit diversen Intel-WLAN-Karten und Noname-Adaptern mit Realtek-Chip.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Seite 1 von 3  1 23      

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