menzil içinde cihazların sabit RSSI güncellemeler yani.Çekirdek Bluetooth - Sadece iOS için çekirdek bluetooth çerçevesi ile başladı ve ben onların RSSI numarayı her dakika alabilir veya böylece sürekli BLE cihazları taramak için gereken bir uygulama geliştiriyorum
Şu anda var:
manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
bu BLE cihazlar için benim app tarama yapmaya başlar ve bir cihaz keşfedilir bu temsilci yöntemini çağırır:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Did discover peripheral. peripheral: %@ rssi: %@, UUID: %@ advertisementData: %@ ", peripheral, RSSI, peripheral.UUID, advertisementData);
//Do something when a peripheral is discovered.
rssiLabel.text = [RSSI stringValue];
[manager retrievePeripherals:[NSArray arrayWithObject:(id)peripheral.UUID]];}
bu yöntem bana çevreselin RSSI numarasını aldığı görüntüleyebilirim.
- (void) centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals {
NSLog(@"Currently known peripherals :");
int i = 0;
for(CBPeripheral *peripheral in peripherals) {
NSLog(@"[%d] - peripheral : %@ with UUID : %@",i,peripheral,peripheral.UUID);
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
}
Bu kod çalışma ve bir tarama kabaca her 1 dakika yapıyor gibi görünüyor, ama çalışma neden tam olarak bilmiyorum
...
belgeleri: Son satır sonra bu temsilci yöntemini çağırır Çekirdek bluetooth üzerinde oldukça seyrek var, bu yüzden herkesin bunu nasıl yapacağına dair bir fikri varsa ya da başarmaya çalıştığım şeyi yapmanın daha iyi bir yolu varsa, bu yardımdan memnun olurum!
ne sıklıkla RSSI güncellenir ... çalışıyor gibi görünüyor? DÜZENLEME: Bir dakika mı?Bağlanmadığınızda bir zaman aşımı olduğunu düşünüyorum, böylece tekrar taramayı başlatır. – chwi
Sadece belgeleri okuyamaya başladım, bu yüzden daha da uzağınızdasınız. Soru, neden delege yönteminde didRetrievePeripherals adlı scanForPeripheralsWithServices çağrılıyorsunuz? CBCentralManager ayrıldıktan sonra zaten diyorsunuz. Bu, bahsettiğiniz tekrarlı taramaya neden olabilir. – mkr707
sadece> = 7.0 için iki sent'im: şu andan itibaren kullanılmaları gereken RetrievePeripheralsWithIdentifiers. –