我试图使用bluez的gatttool在BLE定制板上写一些演示特性。具体来说,我希望写一个特征并将值读回来。这就是我正在做的事情(其中0x25是特征的句柄):
bluepy$ gatttool -b EC:24:B8:23:1C:39 -I
[ ][EC:24:B8:23:1C:39][LE]> connect
[CON][EC:24:B8:23:1C:39][LE]> char-read-hnd 0x0025
[CON][EC:24:B8:23:1C:39][LE]> Characteristic value/descriptor: 01
[CON][EC:24:B8:23:1C:39][LE]> char-write-cmd 0x25 0x02
[CON][EC:24:B8:23:1C:39][LE]> char-read-hnd 0x0025
[CON][EC:24:B8:23:1C:39][LE]> Characteristic value/descriptor: 00
有谁知道为什么读取的特征值是00而不是02(char-write-cmd
的第二个参数)?
任何帮助将不胜感激。
答案 0 :(得分:3)
虽然BLE有规则和标准,但底层设备可以简单地忽略它们并做自己的事情。因此,它可能将属性列为读写并且似乎接受新值,但随后只丢弃值。它不应该这样做,但没有理由不能。
但是,您应该确保它实际上发送了正确的数据并且问题出在了设备上...正如评论gatttool
中提到的那样,可能会对解释输入有点混淆(新版本比旧版本好,所以请尝试02
或2
而不是0x02
。您还可以尝试使用btmon
检查gatttool
是否实际上发送了您想要的值。
答案 1 :(得分:1)
检查其他软件是否无法访问蓝牙。
当尝试读取特征时,我遇到了类似的问题,node-red也正在访问同一设备。 gatttool已连接到设备,但无法与读/写通信。一旦我停止了node-red,它便开始工作。