BLE澄清读取和指示操作

问题描述 投票:1回答:1

我正在为Pycom的Lopy4开发板编写代码,并为环境感应创建了BLE服务,该服务目前具有一个特性,即温度。我以温度为浮点,并尝试每两秒更新一次特征值。

[当我使用BLE扫描器应用程序时,每当尝试读取时,都会读取值“ temperature10862”,这是特征的名称和uuid。但是,当我按下指示按钮时,该值会显示正确的温度字符串,并每两秒钟自动更新一次。

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

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

Read AttemptIndicate Attempt

bluetooth bluetooth-lowenergy micropython bluetooth-gatt
1个回答
0
投票

返回“ 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。根据该值,该值应包含一个带符号的16位整数,以0.01摄氏度为单位。

[如果您查看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,您将看到支持读取是必选的,而支持通知则是可选的。然而,指示是不允许的。因此,您应该更改您的指示属性以改为进行通知。

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

请确保您阅读了环境传感规范,并遵循了GATT服务结构的其余部分。

© www.soinside.com 2019 - 2024. All rights reserved.