我一直在尝试连接MI Band 2手表,并读取心率特征值,但是没有运气。
当我们谈论关贸总协定时,我有点不确定程序是什么。 对于API https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt,我正在考虑使用org.bluez.GattCharacteristic1接口读取值。
我可以连接和配对手表,并获取所有UUID(服务,描述符和特征)。心率测量具有以下信息:
Characteristic
/org/bluez/hci0/dev_CD_1D_69_25_19_5E/service0027/char0028
00002a37-0000-1000-8000-00805f9b34fb
我尝试使用bluetoothctl程序读取该值,但收到“不允许”反馈。
使用GATT API读取特征值的过程是什么。
答案 0 :(得分:1)
您的设备正在使用采用的心率配置文件,因为0x2A37是用于心率测量的特性UUID。我建议您使用BlueZ命令行工具,如下所示:-
1。使用以下命令找到心率特征的句柄:-
gatttool -b 00:11:22:33:44:55 --characteristics
用设备的蓝牙地址替换00:11:22:33:44:55。您基本上想找到包含2a37的uuid,并记下其相应的'char value handle'。
2。使用以下命令找到该句柄的描述符:-
gatttool -b 00:11:22:33:44:55 char-desc --handle=0xXX
其中XX是您之前记下的char值句柄。您应该能够在该句柄上看到几个特征描述符。用uuid 2902记下char句柄。
3-使用以下方法在该句柄上写入“ 0100”来启用通知:-
gatttool -b 00:11:22:33:44:55 --sec-level=high --char-write --handle=0xYYYY --value=0100
在步骤2中记下的CCCD描述符的句柄为0xYYYY。一旦发生这种情况,就应该开始获取指示数据,您可以使用找到的温度数据结构here对其进行解密。
您可以在以下链接中找到有关使用BlueZ命令的更多信息:-
我希望这会有所帮助。
答案 1 :(得分:0)
也许您可以尝试使用shell程序 gatttool 或使用 nRF Connect 之类的应用进行读取。