Прежде, чем работать с характеристиками или дескрипторами, отсканируйте для и создайте связь со своим периферийным устройством Bluetooth® Low Energy. Смотрите Находят Ваш Bluetooth Низкими энергетическими Периферийными устройствами для получения дополнительной информации и инструкциями. После соединения с вашим устройством можно взаимодействовать через интерфейс с ним путем чтения или записи характеристик устройства и дескрипторов.
b = ble("DemoDev");
Просмотрите свои характеристики устройства путем рассмотрения Characteristics
свойство ble
объект.
b.Characteristics
ans=11×5 table ServiceName ServiceUUID CharacteristicName CharacteristicUUID Attributes ___________________ ______________________________________ ____________________________________________ ______________________________________ ______________ "Generic Access" "1800" "Device Name" "2A00" {1×2 string } "Generic Access" "1800" "Appearance" "2A01" {["Read" ]} "Generic Access" "1800" "Peripheral Preferred Connection Parameters" "2A04" {["Read" ]} "Generic Access" "1800" "Central Address Resolution" "2AA6" {["Read" ]} "Generic Attribute" "1801" "Service Changed" "2A05" {["Indicate"]} "Heart Rate" "180D" "Heart Rate Measurement" "2A37" {["Notify" ]} "Heart Rate" "180D" "Body Sensor Location" "2A38" {["Read" ]} "Battery Service" "180F" "Battery Level" "2A19" {["Read" ]} "User Data" "181C" "Gender" "2A8C" {1×2 string } "Custom" "03B80E5A-EDE8-4B33-A751-6CE34EC4C700" "Custom" "7772E5DB-3868-4112-A1A9-F2669D106BF3" {1×6 string } "Custom" "03B80E5A-EDE8-4B33-A751-6CE34EC4C700" "Custom" "7772E5DC-3868-4112-A1A9-F2669D106BF3" {1×3 string }
Эта таблица приводит каждую характеристику и сервис, с которым это сопоставлено. Когда таблица показывает, каждый сервис может содержать несколько характеристик. Если несколько характеристик имеют то же имя, дифференцируются между ними использующий UUID. В этом примере устройство имеет и стандартные и пользовательские характеристики. Стандартные характеристики заданы SIG Bluetooth, в то время как пользовательские характеристики обычно характерны для производителя устройств или производителя устройств.
Attributes
поле в этой таблице говорит вам чтение и полномочия записи для каждой характеристики. Выберите характеристику, которой вы интересуетесь и просматриваете ее свойства с помощью characteristic
. Например, получите доступ к "Gender"
характеристика с помощью сервиса и характеристических имен.
c = characteristic(b,"User Data","Gender")
c = Characteristic with properties: Name: "Gender" UUID: "2A8C" Attributes: "Read" "Write" Descriptors: []
Эта характеристика и читаема и перезаписываема.
Поскольку "Gender"
характеристика читаема и перезаписываема, можно записать данные к ней и проверить изменение в значениях.
Используйте read
получить текущие данные. Полное поведение read
поскольку характеристика зависит от Attributes
свойство, как описано в characteristicData
.
data = read(c)
data = 0
Интерпретируйте данные путем обращения к спецификации для этой характеристики на веб-сайте SIG Bluetooth. 0
представляет штекер и 1
представляет розетку. Запишите 1
к характеристике, чтобы указать на розетку, использующую write
.
write(c,1)
Можно читать из характеристики снова, чтобы наблюдать изменение в данных.
data = read(c)
data = 1
Можно также подписаться на характеристику, чтобы включить уведомление или индикацию относительно характеристики. Можно только подписаться на характеристики, которые содержат "Notify"
, "Indicate"
, или оба в Attributes
свойство. После того, как вы включите уведомление или индикацию для характеристики, используйте read
получить обновленные данные. Смотрите characteristicData
для описания полного поведения read
на основе Attributes
.
В данном примере создайте характеристический объект, который представляет "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
Эта характеристика поддерживает "Notify"
.
Начните получать уведомления при помощи subscribe
. Смотрите type
для описания полного поведения subscribe
на основе Attributes
.
subscribe(c)
Читайте из характеристики, чтобы проверять, что вы получаете данные.
read(c)
ans = 1×19
23 14 1 187 1 186 1 185 1 184 1 183 1 182 1 181 1 180 1
Интерпретируйте данные путем обращения к спецификации для этой характеристики на веб-сайте SIG Bluetooth.
После того, как вы закончили работать с характеристикой, отключаете уведомления с помощью unsubscribe
.
unsubscribe(c)
Можно также создать функцию обратного вызова, чтобы считать характеристические данные, когда они обновляются с новыми данными из устройства.
Поскольку "Heart Rate Measurement"
характеристика поддерживает "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: "Heart Rate Measurement" UUID: "2A37" Attributes: "Notify" Descriptors: [1x3 table] DataAvailableFcn: displayCharacteristicData Show descriptors
После того, как вы закончили работать с характеристикой, отключаете уведомления и сбрасываете коллбэк с помощью unsubscribe
.
unsubscribe(c) c.DataAvailableFcn = [];
Если характеристика имеет дескрипторы, можно получить доступ к дескрипторам, чтобы читать из или записать в них. Просмотрите дескрипторы для характеристики путем рассмотрения Descriptors
свойство characteristic
объект.
В данном примере покажите Descriptors
для "Heart Rate Measurement"
характеристика.
c.Descriptors
ans=1×3 table DescriptorName DescriptorUUID Attributes _____________________________________ ______________ ____________ "Client Characteristic Configuration" "2902" {1×2 string}
Доступ к "Client Characteristic Configuration"
дескриптор.
d = descriptor(c,"Client Characteristic Configuration")
d = Descriptor with properties: Name: "Client Characteristic Configuration" UUID: "2902" Attributes: ["Read" "Write"]
Этот дескриптор и читаем и перезаписываем.
"Client Characteristic Configuration"
дескриптор содержит информацию об или уведомление, или индикация включена или отключена. Можно использовать read
получить текущие данные.
data = read(d)
data = 1×2 0 0
Интерпретируйте эти данные путем обращения к спецификации для этого дескриптора на веб-сайте SIG Bluetooth.
Это значение изменяется когда уведомление или изменения состояния индикации. Например, запишите в это значение, чтобы включить уведомление для "Heart Rate Measurement"
характеристика с помощью write
. Затем наблюдайте изменение в значениях путем чтения дескриптора снова.
write(d,[1 0]) data = read(d)
data = 1×2 1 0
characteristic
| descriptor
| read
| subscribe
| unsubscribe
| write