2015-11-17 4 views
2

Я использую BLE Shield на Arduino - LightBlue правильно определяет экран BLE. Теперь я пытаюсь сделать приложение, которое сканирует все устройства BLE и подключится к правильному, чтобы я мог отправить некоторую информацию на свой экран из своего приложения.Устройство найдено LightBlue, но не iOS CoreBluetooth

Но приложение не обнаруживает BLE Shield (оно обнаруживает другое устройство BLE, хотя ...).

Мой код выглядит следующим образом:

- (void)centralManagerDidUpdateState:(CBCentralManager *)central{ 

    switch (central.state) { 
     case CBCentralManagerStatePoweredOn: 
      msg=[NSString stringWithFormat:@"Bluetooth is currently powered on and available to use."]; 
      [cbcManager scanForPeripheralsWithServices:[NSArray arrayWithObject:[CBUUID UUIDWithString:@"180A"]] options:nil]; 
      break; 
    } 
} 

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral: (CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { 
    NSLog(@"%@\n--------------------", advertisementData.description); 
} 

Я проверил с LightBlue, 180 является правильным сервис UUID для моего щита. Я также попытался выполнить сканирование, передав значение nil вместо UUID службы, но он все еще не может быть обнаружен.

Код, кажется, работает как одно из моих устройств BLE ... Любые идеи, почему мой щит может быть обнаружен LightBlue, а не этот кусок кода?

+0

Нет ничего плохого в коде, который вы включили. И если вы можете обнаружить другие устройства при передаче nil для массива служб, то вы знаете, что все правильно подключено к Bluetooth. Таким образом, ваш щит Bluetooth или ваше тестовое устройство станут виновником. –

+1

Вы можете попробовать передать параметр allow duplicates при сканировании (я не могу вспомнить константу у меня на голове, и я не могу сейчас это проверить, проверьте документы), но все, что нужно сделать, это спам журналов с сообщения обнаружения. –

+0

Спасибо Санта-Клаусу, что позволило дубликатам решить мою проблему! – drn

ответ

2

Вы можете попробовать передать параметр дубликатов дубликатов при сканировании, так как это возможно, его открытие подавляется, если оно считает, что это дубликат.

NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];  

[cbcManager scanForPeripheralsWithServices:nil options:options];