心率测量和特征通知的转换



我正在开发低功耗蓝牙医疗设备,我使用了暗淡库连接到设备并在其上读取或设置数据。

到目前为止,我已经能够连接到它并从具有通知功能/可能性的特征中读取数据,例如心脏测量特征。

由此产生了两个问题。

第一个是我找不到可读/人类值。对于心率,我读取这些类型的字节:

b x11G x00 x03w x03">b x11F x00u x03">b x11H x00 x0b x03 中 x02">例如,我想读69为69 BPM。

现在我已经看了这个线程BLE心率传感器值解释和其他(分析心率监视器返回的数据)以便能够转换。我知道这与蓝牙SIG有关,但我没有看到像我展示的那样的字节,而且我似乎无法正确转换为BPM。是否有人使用类似的接收数据并知道如何正确读取它?

现在对于我的第二个问题(但这更多的是确认看到这个线程蓝牙LE听多个特征通知),我使用这个代码部分从荒凉的github:

await client.start_notify(CHARACTERISTIC_UUID, notification_handler)
await asyncio.sleep(15.0)
await client.stop_notify(CHARACTERISTIC_UUID) 

启用来自一个特性的通知。是否可以同时对两个特性使用这个?或者更确切地说,从我从线程中理解的,你能一个接一个地启用两个特征的通知吗,比如心率测量和温度测量?

我试着把我读过并试图理解的一些线程放在这篇文章中,希望我没有错过一些关于这种类型字节转换的答案的帖子。

对于任何在这里登陆并拥有运行InfiniTime的设备的人(即。,您可以使用struct模块解包数据。

import struct
struct.unpack(">H", data)
使用
  • >是因为PineTime的字节顺序是大端序
  • H表示无符号短,因为InfiniTime将心率读数存储为无符号16位整数

如果您的心率设备不同,请查看其源代码并尝试确定数据类型,然后在struct模块的文档中找到相应的字母:https://docs.python.org/3/library/struct.html#format-characters

最新更新