Что означает пользовательский UUID для BLE в образце IOS?

Я новичок в разработке для iOS и изучаю Bluetooth Low Energy (BLE, Bluetooth 4.0) для IOS.

Я изучил пример кода этой ссылки Центральная периферийная передача BTLE.

По этой ссылке есть еще один похожий пример: iOS 7 SDK: Core Bluetooth — практический урок

Приложения по двум приведенным выше ссылкам говорят о send and receive the text data между двумя базовыми устройствами IOS на BLE. Приложение может выбрать central или Peripheral, и central будет получать текстовые данные, отправленные из Peripheral.

Он определяет UUID как следующий код в header file.

#define TRANSFER_CHARACTERISTIC_UUID    @"08590F7E-DB05-467E-8757-72F6FAEB13D4"

И после того, как Central подключится к Peripheral, он обнаружит характеристику от Peripheral.

Если UUID равно TRANSFER_CHARACTERISTIC_UUID , подпишитесь на него, используя setNotifyValue:YES, как в следующем коде.

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
    // Again, we loop through the array, just in case.
    for (CBCharacteristic *characteristic in service.characteristics) {

        // And check if it's the right one
        if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]]) {

            // If it is, subscribe to it
            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
        }
    }

    // Once this is complete, we just need to wait for the data to come in.
}

The question is like the following:

First Question:

Я не могу найти этот UUID:@"08590F7E-DB05-467E-8757-72F6FAEB13D4" на портале разработки Bluetooth. Это создано uuidgen в terminal?

The second Question:

Если мне Central и я подписался на characteristic, используя setNotifyValue:YES, как в приведенном выше коде.

BLE сообщит Central, что есть новые данные, отправленные из Peripheral, с помощью следующего кода. Верна ли концепция?

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error

Я новичок в разработке IOS и BLE.

Заранее спасибо.


person Wun    schedule 17.04.2014    source источник
comment
По первому вопросу: длинный UUID — это пользовательский UUID (тогда как стандартные используют 4hex). Это означает, что они не соблюдают никаких стандартов, потому что их еще не существует или они являются частными/проприетарными.   -  person Larme    schedule 17.04.2014


Ответы (1)


Первый вопрос:

  • Да, Apple даже предлагает генерировать эти UUID с помощью uuidgen в различных видео WWDC. 128-битные UUID не стандартизированы Bluetooth SIG, и вы можете использовать их для запуска своих собственных профилей.

Второй вопрос:

  • Да, вы сначала открываете услуги, потом характеристики, потом setNotifyValue:YES. Отныне вы будете получать уведомления с периферийного устройства через [-CBPeripheralDelegate didUpdateValueForCharacteristic:error:]. Тот же обратный вызов будет вызываться, когда вы читаете характеристику вручную (нет возможности отличить ответ на чтение от уведомления в Core Bluetooth).
person Etan    schedule 17.04.2014
comment
Кроме того, чтобы не запутаться во всех типах идентификаторов: devforums.apple.com/message/ 957469#957469 - person Etan; 17.04.2014