exponenta event banner

читать

Считывание данных характеристик или дескрипторов на периферийном устройстве Bluetooth с низким энергопотреблением

Описание

Считывание значений признаков

пример

characteristicData = read(c) считывает значение характеристики с периферийного устройства Bluetooth ® с низким энергопотреблением. Считывание данных зависит от Attributes свойство объекта входной характеристики c. Для получения дополнительной информации обо всех возможных вариантах поведения read, см. characteristicData.

пример

characteristicData = read(c,mode) определяет mode в качестве режима чтения.

пример

[characteristicData,timestamp] = read(___) считывает метку времени для любого из предыдущих синтаксисов.

Считывание значений дескриптора

пример

descriptorData = read(d) считывает значение дескриптора с периферийного устройства Bluetooth с низким энергопотреблением.

Примеры

свернуть все

Получите доступ к характеристике периферийного устройства и прочитайте ее данные.

Создайте подключение к ближайшему периферийному устройству Bluetooth с низким энергопотреблением.

b = ble("Thingy")
b = 
  ble with properties:

               Name: "Thingy"
            Address: "F2DF635320F6"
          Connected: 1
           Services: [9×2 table]
    Characteristics: [38×5 table]

Show services and characteristics

Создание объекта признака, представляющего "Temperature" характеристика.

c = characteristic(b,"Weather Station Service","Temperature")
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

Потому что этот признак поддерживает "Notify", вы можете использовать read для получения последних данных.

data = read(c)
data = 1×2

    23    75

Также можно вернуть отметку времени последних данных.

[data,timestamp] = read(c)
data = 1×2

    23    73

timestamp = datetime
   16-May-2019 16:20:00

Интерпретируйте данные по Цельсию. Первый байт представляет целую часть температуры, а второй байт представляет десятичную часть с разрешением 0,01.

temperature = data(1) + data(2)*0.01
temperature = 23.7300

Получите доступ к характеристике периферийного устройства и создайте функцию обратного вызова для считывания ее данных.

Создайте подключение к ближайшему периферийному устройству Bluetooth с низким энергопотреблением.

b = ble("Thingy")
b = 
  ble with properties:

               Name: "Thingy"
            Address: "F2DF635320F6"
          Connected: 1
           Services: [9×2 table]
    Characteristics: [38×5 table]

Show services and characteristics

Создание объекта признака, представляющего "Temperature" характеристика.

c = characteristic(b,"Weather Station Service","Temperature")
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

Потому что этот признак поддерживает "Notify", можно создать функцию обратного вызова. Назовите функцию displayCharacteristicData и определить его следующим образом. Укажите режим чтения как 'oldest' вместо 'latest'. Вызов 'latest' данные могут привести к ошибкам в функции обратного вызова, вызванным сбросом предыдущих данных.

function displayCharacteristicData(src,evt)
    [data,timestamp] = read(src,'oldest');
    disp(data);
    disp(timestamp);
end

Используйте @ для назначения дескриптора функции DataAvailableFcn свойство характеристики. Когда новое уведомление доступно, данные появляются в окне команды.

c.DataAvailableFcn = @displayCharacteristicData
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: displayCharacteristicData

Show descriptors

После завершения работы с признаком отключите уведомления с помощью unsubscribe.

unsubscribe(c)

Получите доступ к дескриптору периферийного устройства и прочитайте его данные.

Создайте подключение к ближайшему периферийному устройству Bluetooth с низким энергопотреблением.

b = ble("DemoDev")
b = 
  ble with properties:

               Name: "DemoDev"
            Address: "FF548EA5658F"
          Connected: 1
           Services: [5×2 table]
    Characteristics: [10×5 table]

Show services and characteristics

Создание объекта признака, представляющего "Heart Rate Measurement" характеристика.

c = characteristic(b,"Heart Rate","Heart Rate Measurement")
c = 
  Characteristic with properties:

             Name: "Heart Rate Measurement"
             UUID: "2A37"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

Создание объекта-дескриптора, представляющего "Client Characteristic Configuration" дескриптор.

d = descriptor(c,"Client Characteristic Configuration")
d = 
  Descriptor with properties:

          Name: "Client Characteristic Configuration"
          UUID: "2902"
    Attributes: ["Read"    "Write"]

Этот дескриптор содержит информацию о том, включено или отключено уведомление и индикация. Вы можете использовать read для получения текущих данных.

data = read(d)
data = 1×2

     0     0

Интерпретируйте эти данные, ссылаясь на спецификацию для этого дескриптора на веб-сайте Bluetooth SIG.

Это значение изменяется при изменении состояния уведомления или индикации. Например, подписаться на уведомление с помощью subscribe. Затем проверьте изменение значения, прочитав дескриптор еще раз.

subscribe(c,'notification');
data = read(d)
data = 1×2

     1     0

Входные аргументы

свернуть все

Характеристика Bluetooth Low Energy периферийного устройства, указанного как characteristic объект.

Attributes свойство объекта признака должно включать "Read", "Notify", или "Indicate" для чтения данных.

Пример: data = read(c) считывает значение объекта признака c.

Режим чтения, указанный как 'latest' или 'oldest'. Используя 'latest' возвращает самые последние данные и удаляет предыдущие данные. Используя 'oldest' возвращает самые старые данные с момента последнего чтения.

Примечание

Использовать 'oldest' внутри DataAvailableFcn функция обратного вызова во избежание ошибок, вызванных сбросом предыдущих данных.

Пример: data = read(c,'oldest') считывает самое старое значение с момента последнего чтения объекта признака c.

Типы данных: char | string

Дескриптор периферийного устройства Bluetooth с низким энергопотреблением, указанный как descriptor объект.

Attributes свойство объекта дескриптора должно включать "Read" для чтения данных.

Пример: read(d) считывает значение объекта дескриптора d.

Выходные аргументы

свернуть все

Характеристические данные от периферийного устройства, возвращаемые как число или массив чисел.

Считывание данных зависит от Attributes свойства объекта характеристики и указанного режима чтения.

c.Attributesread(c) или read(c,'latest')read(c,'oldest')
  • "Read"

Текущие данные.Не поддерживается.
  • "Notify", "Indicate", или оба

Последние данные уведомления или индикации.

  • Если уведомление или индикация не активизированы и это первый вызов read, затем автоматически запускается уведомление или индикация.

  • Предыдущие данные очищаются.

Самые старые данные уведомления или индикации с момента последнего чтения.

  • Если уведомление или индикация не активизированы и это первый вызов read, затем автоматически запускается уведомление или индикация.

  • "Read"

    и

  • "Notify", "Indicate", или оба

  • Если уведомление или индикация не включены, то characteristicData - текущие данные.

  • Если уведомление или индикация активизированы, то characteristicData является последним уведомлением или указанием.

  • Если уведомление или индикация не включены, то read(c,'oldest') не поддерживается.

  • Если уведомление или индикация активизированы, то characteristicData - это самые старые данные уведомления или индикации с момента последнего считывания и очистки предыдущих данных.

Типы данных: double

Временная метка, указывающая на получение данных характеристики или дескриптора на компьютере, возвращаемых в виде datetime массив.

Типы данных: datetime

Данные дескриптора от периферийного устройства, возвращаемые в виде числа.

Типы данных: double

Представлен в R2019b