2014-10-18 3 views
0

Я использую базовую инфраструктуру bluetooth в ios и сканирую и обнаруживаю 2 идентификатора характеристик, но я хочу, чтобы их порядок отличался от того, что я получаю, так что это возможно изменить их порядок или что-либо программно?Как изменить порядок идентификатора charateristics, обнаруженного при сканировании периферийных устройств с использованием core bleutooth ios

код

if (service.UUID.isEqual(CBUUID.UUIDWithString("F4F2-BC76-3206341A"))) 
    { 
     println(service.characteristics.count) 
     for aChar:CBCharacteristic in service.characteristics as [CBCharacteristic] 

     { 
      println(aChar) 
      println(aChar.UUID) 

      /* Write data*/ 
      if aChar.UUID.isEqual(CBUUID.UUIDWithString("D0F0AECD-6405-0B040047")) 
      { 
       var str:NSString = "heyaa..!!" 
       data = str.dataUsingEncoding(NSUTF8StringEncoding)! 
       peripheral.writeValue(data, forCharacteristic: aChar, type: CBCharacteristicWriteType.WithResponse) 
       println("Write performed") 
      } 

      /* read data */ 
      if aChar.UUID.isEqual(CBUUID.UUIDWithString("C8853E-A248-C6F0B1")) 
      { 
       peripheral.readValueForCharacteristic(aChar) 
       println("Read performed") 
      } 
     } 
    } 

В характеристиках ID для чтения данных вызывался первым, но я хочу, чтобы позвонить записи характеристика данных ID первым, так есть ли способ, чтобы решить. Пожалуйста, помогите мне. Заранее спасибо.

ответ

0

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

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

Вы приложение должно пройти через различные фазы

  1. Scan и находить периферию рекламы конкретную услугу (ы)
  2. Подключение к цели периферического
  3. Discover характеристики службы
  4. Чтение/Запишите данные по мере необходимости - повторите этот шаг по мере необходимости
  5. Отсортировать

Например:

var writeCharacteristic : CBCharacteristic? 
    var readCharacteristic : CBCharacteristic? 

    optional func peripheral(_ peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!,error error: NSError!) {  

     if (service.UUID.isEqual(CBUUID.UUIDWithString("F4F2-BC76-3206341A"))) 
     { 

     println(service.characteristics.count) 
     for aChar:CBCharacteristic in service.characteristics as [CBCharacteristic] 

     { 
      println(aChar) 
      println(aChar.UUID) 

      /* Write data*/ 
      if aChar.UUID.isEqual(CBUUID.UUIDWithString("D0F0AECD-6405-0B040047")) 
      { 
       self.writeCharacteristic=aChar 
      } 
      else if aChar.UUID.isEqual(CBUUID.UUIDWithString("C8853E-A248-C6F0B1")) 
      { 
       self.readCharacteristic=aChar 

      } 
     } 
     } 
     if (self.writeCharacteristic != nil && self.readCharacteristic != nil) { 
      var str:NSString = "heyaa..!!" 
      data = str.dataUsingEncoding(NSUTF8StringEncoding)! 
      peripheral.writeValue(data, forCharacteristic: self.writeCharacteristic!, type: CBCharacteristicWriteType.WithResponse) 
      println("Write performed") 
     } 
    } 

    optional func peripheral(_ peripheral: CBPeripheral!,didWriteValueForCharacteristic characteristic: CBCharacteristic!,error error: NSError!) { 
     peripheral.readValueForCharacteristic(self.readCharacteristic!) 
     println("Read performed") 
    } 
+0

Мои сомнения является ли аппаратно реализована характеристики ID сканируются в алфавитном порядке? как первый «C882», а затем «D889». Он не находит в суровом порядке фиксированный порядок. –

+0

Я хочу, чтобы идентификатор «D889» сначала обнаруживался, а затем обнаруживался другой идентификатор «C882», что мне делать? Пожалуйста, помогите мне. –

+0

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

Смежные вопросы