Прежде чем работать с характеристиками или дескрипторами, просканируйте и создайте соединение с вашим Bluetooth® Низкоэнергетическое периферийное устройство. Для получения дополнительной информации и инструкций см. раздел «Поиск периферийных устройств с низким энергопотреблением 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. В этом примере устройство имеет как стандартные, так и пользовательские характеристики. Стандартные характеристики определяются Bluetooth SIG, в то время как пользовательские характеристики обычно характерны для производителя устройства или устройства.
The 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
Интерпретируйте данные, сославшись на спецификацию для этой характеристики на сайте Bluetooth SIG. 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
Интерпретируйте данные, сославшись на спецификацию для этой характеристики на сайте Bluetooth SIG.
После завершения работы с характеристикой отключите уведомления с помощью 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"]
Этот дескриптор одновременно является читаемым и доступным для записи.
The "Client Characteristic Configuration"
дескриптор содержит информацию о том, включено или отключено уведомление или индикация. Вы можете использовать read
для получения текущих данных.
data = read(d)
data = 1×2 0 0
Интерпретируйте эти данные, сославшись на спецификацию для этого дескриптора на веб-сайте Bluetooth SIG.
Это значение изменяется при изменении состояния уведомления или индикации. Например, запись в это значение, чтобы включить уведомление для "Heart Rate Measurement"
использование характеристики write
. Затем наблюдайте изменение значений, снова прочитав дескриптор.
write(d,[1 0]) data = read(d)
data = 1×2 1 0
characteristic
| descriptor
| read
| subscribe
| unsubscribe
| write