Einzelnen Beitrag anzeigen

Rollo62

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

[Fmx] BluetoothLEDiscoverDevices für max. 3 Service-UUIDs ?

  Alt 27. Okt 2016, 20:15
Hallo zusammen,

[Fmx, RadStudio 10.1 Berlin, Upd1]

hat schonmal jemand mit einem Array von Service-UUIDs nach Bluetooth LE Devices gefiltert ?

Bisher nur unter OSX-MacBook getestet:
- Alle Geräte lassen sich verbinden wenn ich den Filter rausnehme,
aber mit Filter scheint es nur bis zu 3 Geräte IDs zu funktionieren.
- Bei 4 findert er gar kein Gerät mehr

Delphi-Quellcode:
     
const
  CSvc1 : TBluetoothUUID = '{0000FF12-0000-1000-8000-00805F9B34FB}'; // 1. Ble-Gerät Messgerät A
  CSvc2 : TBluetoothUUID = '{0000FFB0-0000-1000-8000-00805F9B34FB}'; // 2. Ble-Gerät Messgerät B
  CSvc3 : TBluetoothUUID = '{00001000-0000-1000-8000-00805F9B34FB}'; // 3. Ble-Gerät Messgerät C
  CSvc4 : TBluetoothUUID = '{0000FFF0-0000-1000-8000-00805F9B34FB}'; // 4. Ble-Gerät Messgerät D

 FBluetoothLE.DiscoverDevices(FDiscoverTime,
                                   [
                                       CSvc1
                                     , CSvc2
                                     , CSvc3 // Bis hierhin ist es noch OK
// , CSvc4 // Dies geht nicht mehr
                                   ]
                                  );
Immerhin komme ich damit bis zu 3 verschiedenen IDs, und was wenn ich mehr brauche ?
Mit dem BluetoothLEScanFilter funktioniert es übrigens auch, diese Suchfilter habe ich gecheckt.

Hat das schonmal jemand gehabt, kann es sein das OSX/iOS da nur eine maximale Listengröße verarbeiten können ?

Ich werde das mal noch auf iOS und Android testen.

Edit:
OSX:
Ich habe nochmal schnell versucht die Reihenfolge zu verwürfeln, und auszutauschen.
Es bleibt dabei, bis zu 3 gehts, bei 4 lässt sich gar keiner mehr finden.
Alle Geräte lassen sich verbinden wenn ich nur 3 IDs drin habe, und die IDs mal tausche.

Es gibt auch keine weiteren BLE Geräte in der Umgebung, gecheckt mit einer Reihe anderer Scanner.


Edit2:
iOS:
Hab den gleichen Code einfach mal schnell auf iOS laufen lassn, siehe da:
- alle vier Geräte werden gefiltert und können verbunden werden

Fehlt noch ein Check auf Android.

Könnte es sein das dies nur ein OSX-Problem ist (teste das unter MacBook Pro, Generation 2013).
Ich habe noch nicht auf Xcode 8 und iOS 10 upgedated, das könnte auch noch so eine Sache sein ...


Rollo

Geändert von Rollo62 (27. Okt 2016 um 20:43 Uhr)
  Mit Zitat antworten Zitat