Specyfikacja Low Energy Bluetooth nie mówi zbyt wiele o tym, czy urządzenia peryferyjne mogą łączyć się z więcej niż jednym centralnym urządzeniem naraz, ale moje testowanie doświadczenia mówi mi, że nie mogą.Ciągłe skanowanie centralnego menedżera iOS CoreBluetooth?
Ponieważ moja aplikacja wymaga niewiążącej relacji z urządzeniami peryferyjnymi (tj. Bez połączeń, które blokowałyby inne) i musi stale aktualizować ich wartości RSSI, szukam sposobu na ciągłe skanowanie urządzeń peryferyjnych i przechwytywanie ich wartości RSSI .
Metoda scanForPeripheralsWithServices wydaje się skanować przez pewien okres, a następnie zatrzymuje się. Uważam, że najlepiej jest skanować przez 3 sekundy naraz, stopScan, odczekać (kilka sekund), a następnie ponownie zainicjować skanowanie. Powtarzać.
Czy ktoś może wskazać lepszy sposób na zrobienie tego? Na przykład, konfigurowanie urządzenia peryferyjnego do połączenia z więcej niż jednym centralnym systemem?
Tak, ale muszę nieustannie uzyskać zaktualizowany RSSI. Moje wnioski są takie, że gdy Centralny Menedżer odkrył i ponownie odkrył urządzenie peryferyjne kilka razy, przestał je wykrywać (wydaje się, że trwało to około 3 sekundy), nawet jeśli skanowanie jest kontynuowane. Pozostaje mi potrzeba ponownego zainicjowania skanowania, aby uzyskać zaktualizowane wartości RSSI. – Jonathan
Tak, możesz ponownie zainicjować skanowanie wewnątrz funkcji didDiscoverPerirectal, przez co otrzymasz RSSI szybko na zawsze. – Aboelseoud
Dzięki. To działa. W celu oszczędzania energii faktycznie zatrzymuję skanowanie po 100 ms, a następnie wykonuję 100ms serii co sekundę. Działa świetnie. – Jonathan