首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BLE澄清读取和指示操作

BLE澄清读取和指示操作
EN

Stack Overflow用户
提问于 2020-06-12 03:39:23
回答 1查看 286关注 0票数 2

我正在为Pycom的Lopy4板编写代码,并创建了一个用于环境传感的BLE服务,该服务目前只有一个特征,即温度。我将温度作为浮点数,并尝试每两秒更新一次特征值。

当我使用BLE scanner应用程序时,每当我尝试读取时,我都会读取一个值"temperature10862“,这是特征的名称和uuid。然而,当我按下indicate按钮时,该值显示正确的温度字符串,每两秒自动更新一次。

总体而言,我有点困惑。这是Pycom设备上我的代码的问题,还是我只是误解了BLE读取应该是什么?既然设备上的温度值显然正在更新,但是为什么客户端和应用程序只显示这些值,而不是读取?

对于问题中的任何含糊之处,我深表歉意,但任何帮助或指导都将不胜感激。

Read Attempt Indicate Attempt

EN

回答 1

Stack Overflow用户

发布于 2020-06-12 08:03:16

将"temperature10862“作为读取响应返回显然是不正确的。在这种情况下,将温度作为字符串发送也是不正确的,因为您使用的是蓝牙SIG定义的特征https://www.bluetooth.com/xml-viewer/?src=https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org.bluetooth.characteristic.temperature.xml。因此,该值应由以0.01摄氏度为单位的带符号16位整数组成。

如果你查看https://www.bluetooth.com/xml-viewer/?src=https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Services/org.bluetooth.service.environmental_sensing.xml,你会发现支持Read是强制性的,支持通知是可选的。然而,指示是不允许的。因此您应该将indicate属性更改为notify。

无论值是作为通知还是作为读取响应发送,发送的值都应该是相同的。

请务必阅读环境感知规范,并遵循GATT服务结构的其余部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62332241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档