2012-10-23 15 views

Odpowiedz

5

Tak, istnieje sposób pomiaru siły sygnału dla Bluetooth Low Energy (4.0) jest to numer RSSI. Podczas skanowania dla urządzeń peryferyjnych można ustawić flagę CBCentralManagerScanOptionAllowDuplicatesKey na TAK, jak pokazano poniżej:

NSDictionary * dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil]; 

// Start scanning for peripherals 
[cmanager scanForPeripheralsWithServices:nil options:dictionary]; 

Jeśli chcesz zobaczyć prace numer RSSI bez konieczności pisania kodu powinieneś sprawdzić aplikację LightBlue w iTunes. Po podłączeniu do urządzenia peryferyjnego wyświetli zaktualizowany numer RSSI co sekundę, gdy jest podłączony.

2

Wystarczy popatrzeć na CoreBluetooth documentation:

- (void)centralManager:(CBCentralManager *)central 
didDiscoverPeripheral:(CBPeripheral *)peripheral 
    advertisementData:(NSDictionary *)advertisementData 
        RSSI:(NSNumber *)RSSI 
{ ... } 

RSSI jest to, czego szukasz. Zastrzeżenie: Core Bluetooth jest stworzony tylko dla Bluetooth 4 LE.

Jeśli dokładny zakres nie ma znaczenia, ale jesteś zainteresowany skanowaniem urządzeń, które są ogólnie dostępne, możesz rzucić okiem na projekt github BeeTee, który umożliwia skanowanie wszystkich urządzeń Bluetooth w pobliżu (nie tylko Bluetooth LE). Znowu zrzeczenie się: Jestem autorem BeeTee. ;-)

0

Kiedy kodujesz swój "centralny" kod za pomocą CBCentralManager, w końcu połączysz się z CBPeripheral, którego szukasz. Po nawiązaniu połączenia z urządzeniem peryferyjnym zachowaj odwołanie do niego, ustaw obiekt jako delegata urządzenia peryferyjnego i wywołaj "readRSSI" na urządzeniu peryferyjnym. Otrzymasz wywołanie oddzwaniacza peripheral: didReadRSSI: error: Jeśli napiszesz metodę, która wywołuje "readRSSI", możesz wywołać ją za pomocą performSelector: withObject: afterDelay:.

Inną z sugerowanych odpowiedzi na to pytanie jest dostarczenie klucza "zezwalaj na duplikaty" podczas skanowania. Dokumenty dla klucza słownika CBCentralManagerScanOptionAllowDuplicatesKey po przekazaniu do scanForPeripheralsWithServices:options: wskazują, że "Wyłączenie tego filtrowania może mieć negatywny wpływ na żywotność baterii i powinno być używane tylko w razie potrzeby".

Jeśli zdecydujesz się napisać opóźnione wywołanie, możesz ustawić częstotliwość połączeń, aby pomóc w zarządzaniu wpływem na baterie użytkowników.

Powiązane problemy