【问题标题】:Android get temperature reading from a BLE deviceAndroid 从 BLE 设备获取温度读数
【发布时间】: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() 更新温度测量值。然而,现在我连第一次阅读都读不出来......

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

【问题讨论】:

    标签: android bluetooth-lowenergy


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2013-11-24
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多