read

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

Описание

Считайте характеристические значения

пример

characteristicData = read(c) читает характеристическое значение из периферийного устройства Bluetooth® Low Energy. Чтение данных зависит от 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

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

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

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

     1     0

Входные параметры

свернуть все

Характеристика Bluetooth Низкое энергетическое периферийное устройство в виде a characteristic объект.

Attributes свойство характеристического объекта должно включать "Read"уведомление, или "Indicate" считывать данные.

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

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

Примечание

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

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

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

Дескриптор Bluetooth Низкое энергетическое периферийное устройство в виде a 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

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

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

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

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

Введенный в R2019b