Чтение данных характеристики или дескриптора на периферийном устройстве Bluetooth Low Energy
считывает значение характеристики из Bluetooth® Низкоэнергетическое периферийное устройство. Считанные данные зависят от characteristicData = read(c)Attributes свойство объекта входной характеристики c. Для получения дополнительной информации обо всех возможных поведениях read, см. characteristicData.
задает characteristicData = read(c,mode)mode как режим чтения.
[ считывает временную метку для любого из предыдущих синтаксисов.characteristicData,timestamp] = read(___)
считывает значение дескриптора с периферийного устройства Bluetooth Low Energy.descriptorData = read(d)
Доступ к характеристике на периферийном устройстве и чтение его данных.
Создайте соединение с ближайшим периферийным устройством Bluetooth Low Energy.
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 Low Energy.
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 Low Energy.
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
c - Характеристика периферийного устройства Bluetooth Low EnergyХарактеристика периферийного устройства Bluetooth Low Energy, заданная как characteristic объект.
The Attributes свойство объекта характеристики должно включать "Read", "Notify", или "Indicate" для чтения данных.
Пример: data = read(c) считывает значение объекта характеристики c.
mode - Режим чтения'latest' (по умолчанию) | 'oldest'Режим чтения, заданный как 'latest' или 'oldest'. Использование 'latest' возвращает самые последние данные и очищает предыдущие данные. Использование 'oldest' возвращает самые старые данные с момента последнего чтения.
Примечание
Использование 'oldest' внутри DataAvailableFcn функция обратного вызова, чтобы избежать ошибок, вызванных очисткой предыдущих данных.
Пример: data = read(c,'oldest') считывает самое старое значение с момента последнего чтения объекта характеристики c.
Типы данных: char | string
d - Дескриптор периферийного устройства Bluetooth Low EnergyДескриптор периферийного устройства Bluetooth Low Energy, заданный как descriptor объект.
The Attributes свойство объекта дескриптора должно включать "Read" для чтения данных.
Пример: read(d) считывает значение объекта дескриптора d.
characteristicData - Характеристические данныеХарактеристические данные от периферийного устройства, возвращенные как число или массив чисел.
Считанные данные зависят от Attributes свойство объекта характеристики и заданный режим чтения.
c.Attributes | read(c) или read(c,'latest') | read(c,'oldest') |
|---|---|---|
| Текущие данные. | Не поддерживается. |
| Последние данные уведомления или индикации.
| Самые старые данные уведомления или индикации с момента последнего чтения.
|
|
|
|
Типы данных: double
timestamp - Временная меткаВременная метка, указывающая на получение характеристических или дескрипторных данных на компьютере, возвращаемая как datetime массив.
Типы данных: datetime
descriptorData - Данные дескриптораДанные дескриптора от периферийного устройства, возвращенные как число.
Типы данных: double
characteristic | descriptor | subscribe | unsubscribe | write
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.