Считывание данных характеристик или дескрипторов на периферийном устройстве Bluetooth с низким энергопотреблением
считывает значение характеристики с периферийного устройства Bluetooth ® с низким энергопотреблением. Считывание данных зависит от characteristicData = read(c)Attributes свойство объекта входной характеристики c. Для получения дополнительной информации обо всех возможных вариантах поведения read, см. characteristicData.
определяет characteristicData = read(c,mode)mode в качестве режима чтения.
[ считывает метку времени для любого из предыдущих синтаксисов.characteristicData,timestamp] = read(___)
считывает значение дескриптора с периферийного устройства Bluetooth с низким энергопотреблением.descriptorData = read(d)
Получите доступ к характеристике периферийного устройства и прочитайте ее данные.
Создайте подключение к ближайшему периферийному устройству 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
Интерпретируйте эти данные, ссылаясь на спецификацию для этого дескриптора на веб-сайте Bluetooth SIG.
Это значение изменяется при изменении состояния уведомления или индикации. Например, подписаться на уведомление с помощью subscribe. Затем проверьте изменение значения, прочитав дескриптор еще раз.
subscribe(c,'notification');
data = read(d)data = 1×2
1 0
c - Характеристика Bluetooth Low Energy периферийного устройстваХарактеристика Bluetooth Low Energy периферийного устройства, указанного как characteristic объект.
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 с низким энергопотреблениемДескриптор периферийного устройства Bluetooth с низким энергопотреблением, указанный как descriptor объект.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.