Прежде чем работать с характеристиками или дескрипторами, просканируйте и создайте соединение с вашим 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 0characteristic | descriptor | read | subscribe | unsubscribe | write