Чтение данных характеристики или дескриптора на периферийном устройстве 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.