AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi BluetoothLE: ein Device wird unter MacOS nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

BluetoothLE: ein Device wird unter MacOS nicht gefunden

Ein Thema von philipp.hofmann · begonnen am 20. Apr 2021 · letzter Beitrag vom 23. Apr 2021
Antwort Antwort
Seite 2 von 2     12   
philipp.hofmann

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

AW: BluetoothLE: ein Device wird unter MacOS nicht gefunden

  Alt 22. Apr 2021, 16:36
Ich benutze FBluetoothManagerLE.StartDiscovery.
Zitat:
(klar ich muss ja auch das 3500ms OnEndDiscoverDevices abwarten
Sind dies nicht 1.500ms? Ich warte immer 2.000ms damit dies passt. Dies scheint auch stabil zu sein.
Wie gesagt, ich mache jetzt auf dem Mac immer ein

BluetoothManagerLE.StartDiscovery(4000,Erste-Filter-UUID);
BluetoothManagerLE.StartDiscovery(4000,Zweite-Filter-UUID);
...
BluetoothManagerLE.StartDiscovery(4000);

und für den Fall ohne Filter prüfe ich in
BluetoothLEDiscoverLEDevice(const Sender: TObject; const ADevice: TBluetoothLEDevice; Rssi: Integer; const ScanResponse: TScanResponse);
ob ADevice.ScannedAdvertiseData.ContainsServiceUUID(E rste-Filter-UUID)
or ADevice.ScannedAdvertiseData.ContainsServiceUUID(Z weite-Filter-UUID)
...
gilt und nur dann wird das Device eingebunden.

Damit werden alle meine Devices stabil gefunden, auch der Wahoo KICKR V5. Unter allen anderen OS geht es bisher ohne die Suche ohne Filter.
Es ist jetzt aber so eingebaut, dass ich dies jederzeit einfach auf andere OS erweitern kann. Dies sind nur 3 {$IF defined(...)-Stellen im Code.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#12

AW: BluetoothLE: ein Device wird unter MacOS nicht gefunden

  Alt 23. Apr 2021, 08:40
Zitat:
(klar ich muss ja auch das 3500ms OnEndDiscoverDevices abwarten
Sind dies nicht 1.500ms? Ich warte immer 2.000ms damit dies passt.
Ja sorry, mein Typo.
Ich habe da generell 3500ms, um dem Phone etwas mehr Zeit zu geben.

Wie gesagt, ich mache jetzt auf dem Mac immer ein

BluetoothManagerLE.StartDiscovery(4000,Erste-Filter-UUID);
BluetoothManagerLE.StartDiscovery(4000,Zweite-Filter-UUID);
...
BluetoothManagerLE.StartDiscovery(4000);
Ich habe gestern mit dem Demo 1:1 getestet, weil ich dachte das ging schon nicht.
Da war bei einem Filter aber Alles OK, er findet auch mehrere gleiche Geräte.
Gerade habe mit 2. Filter getestet, das geht dann nicht mehr, findet weder das eine noch das Andere.

Delphi-Quellcode:
  
  TRAINER_SERVICE_WAHOO: TBluetoothUUID = '{0000FFB0-0000-1000-8000-00805F9B34FB}';
  TRAINER_SERVICE_OTHER: TBluetoothUUID = '{00000020-0000-1000-8000-00805F9B34FB}';
  ...
  bluetoothLEDeviceTypeHelpList.add( TRAINER_SERVICE_WAHOO ); //<== stimmt ,es geht nur mit einem Service in der Liste
  bluetoothLEDeviceTypeHelpList.add( TRAINER_SERVICE_OTHER );
Ich denke genau deshalb hatte ich das schon vor Jahren zu den Akten gelegt.
Nur hatte ich damals auch Probleme auf iOS und Android, soweit ich noch sagen kann,
deshalb wundert es mich das es jetzt bei Dir damit funktioniert.

Analyse im OnDiscoverLEDevice:
Ich mache es im Prinzip auch so, nur es kommen im BluetoothLEDiscoverLEDevice gerne 4-5 mal das gleiche Device, deshalb speichere ich das Ergebnis nur EINMAL in ein Dictionary (oder Map), und werte das erst später im OnEndDiscoverDevices aus.
Die ganzen Uninteressanten, insbesondere z.B. die mit DeviceName = '', lade ich gar nicht erst ins Dictionary, und halte es dabei schön sauber.
Weil das Analysieren und Holen der Service UUID auch wieder mehr Zeit kostet.

Geändert von Rollo62 (23. Apr 2021 um 08:43 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz