Android 从 BLE 设备获取温度读数

Posted

技术标签:

【中文标题】Android 从 BLE 设备获取温度读数【英文标题】:Android get temperature reading from a BLE device 【发布时间】:2015-07-08 05:10:54 【问题描述】:

我正在尝试从 BLE 设备获取温度读数。

我阅读了BLE设备供应商制作的文档。

特性UDID:2A1C 属性:注明 特性名称:温度测量 数据格式:0xFE000D97(34.79 摄氏度)

首先我想从 BLE 获取数据 0xFE000D97,该数据应该是 INDICATE PROPERTY 的特征。但是,我尝试了一个名为 B-BLE 的免费应用程序以及 Android Developer 的示例 BlueleGatt 代码,它们都无法获取数据。他们只能通过 READ 获取特征, WRITE 或 Notify 属性。

谁能告诉我如何获取数据或提供一些示例代码?

下一步我必须跟踪数据。即我需要通过 setCharacteristicNotification() 更新温度测量值。然而,现在我连第一次阅读都读不出来......

任何帮助将不胜感激。非常感谢。

【问题讨论】:

【参考方案1】:

您不能将特征上的属性设置为“读取”而不是“指示”吗?

如果特性属性设置为“读取”,我的 android 实现可以从 BLE 设备读取特性。 抱歉,我不知道“指示”的作用。

【讨论】:

Indicate 的工作方式与 notify 类似,但在客户端成功接收到属性后,添加了从客户端向服务器返回的 ack。一般来说,通知和指示是向客户端推送数据的方式,而普通读取是轮询【参考方案2】:
FE000D97 is little endian you should convert it to 
big endian 97 0D 00 FE
FE is the exponent = 254 which is 256-254=2, therefore  x 10^-2
97 hex = 71 decimal
0D hex = 13

00 : sometimes has no meaning and sometimes is 0x256x256, which is also the same =0

温度 = 71 + 13x256 + 0 x 256x256 = 3399 现在除以 temp/100 = 33.99

【讨论】:

以上是关于Android 从 BLE 设备获取温度读数的主要内容,如果未能解决你的问题,请参考以下文章

(java, bluetooth-low energy, ble) 如何通过 BLE 从 android 设备获取数据

如何从android中的BLE设备获取实际值?

如何从字节数组中获取正确的温度值

我可以使用 BLE 将 Iphone 4s 连接到最多 3 个设备(温度传感器)吗

在 iOS SDK 中使用 BLE 从外部设备发送和接收数据

动态更新 Flask 应用程序中的文本以获取温度读数