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