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 设备获取数据
我可以使用 BLE 将 Iphone 4s 连接到最多 3 个设备(温度传感器)吗