![]() |
AW: BluetoothLE: ein Device wird unter MacOS nicht gefunden
Ich benutze FBluetoothManagerLE.StartDiscovery.
Zitat:
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. |
AW: BluetoothLE: ein Device wird unter MacOS nicht gefunden
Zitat:
Ich habe da generell 3500ms, um dem Phone etwas mehr Zeit zu geben. Zitat:
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:
Ich denke genau deshalb hatte ich das schon vor Jahren zu den Akten gelegt.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 ); 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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