【问题标题】:Android BLE - write timestamp onto Health ThermometerAndroid BLE - 将时间戳写入健康温度计
【发布时间】:2017-06-17 06:28:20
【问题描述】:

我正在开发一个 Android 应用,以通过低功耗蓝牙从 Health Thermometer 读取温度。能够连接和解析温度测量特征(0x2A1C) 并检索温度值和时间戳。

现在我的要求是如果设备上的时间戳是旧值,则忽略读取和写入当前时间戳。当进行下一次读数时,时间戳必须与附近的值匹配。

我可以在哪个特征上写入这个时间戳值?

发现成功后,GATT 服务器提供 6 个服务(下面只提到重要特征)

1) 通用访问 (UUID:0x1800)
特征:a) 设备名称 (UUID:0x2A00) - 属性:READ, WRITE

2) 通用属性 (UUID: 0x1801)
特征:a) 服务已更改(UUID:0x2A05) - 属性:INDICATE
描述符:客户端特征配置(UUID:0x2902)-属性:INDICATE

3) 健康温度计 (UUID:1809)
特性:a) 温度测量 (UUID: 0x2A1C) - 属性:INDICATE
描述符:客户端特征配置(UUID:0x2902)

4) 电池服务

5) 设备信息

6) 北欧 LED 按钮服务 (UUID: 00001523-1212-efde-1523-785feabcd123)
特征:a)按钮(UUID:00001524-1212-efde-1523-785feabcd123)-属性:INDICATE, NOTIFY, WRITE

谁能帮我写出哪个特征?
如果是这样,怎么做?有没有其他办法?

【问题讨论】:

  • 您使用哪种温度计?

标签: android bluetooth bluetooth-lowenergy


【解决方案1】:

我得到了解决方案。写入最后一个特征 00001524-1212-efde-1523-785feabcd123

在特征 setWriteType WRITE_TYPE_DEFAULT 上,然后在其所有描述符 ENABLE_INDICATION_VALUE 上。

您将在 onCharacteristicChanged 回调中获得结果。

创建大小为 8 的字节数组的命令列表。

在其中包含时间戳以及其他命令。在特征上设置此值并写入 GATT 服务器。

【讨论】:

  • 这是一个聪明的解决方案。但是,我想知道为什么健康温度计没有时间服务(如当前时间服务),因此必须操作按钮服务。
  • @Nebr 如果包含此类服务,则读/写操作可能会更容易。 VERTICON 在这篇文章中的回答可能证明了为什么它没有被包含在stackoverflow.com/a/38745382/7494831
  • 我还不知道CTS,但是好吧,通过CTS写时间确实也是对这项服务的滥用。 (不过,如果温度计使用时间戳,我仍然认为应该包含某种时间服务。)
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多