2015-12-20 35 views
3

我正尝试使用bluez的gattool写入BLE自定义板上的某些演示特征。具体而言,我希望写出一个特点,并将价值读回来。下面是我在做什么(其中0x25为特征的手柄):GATT工具无法读取/写入特征

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

'gatttool'非常挑剔。尝试'char-write-cmd 0x25 02'来代替(也就是说,值中没有'0x')。 – kaylum

+1

我会避免使用'gatttool',因为我从来没有很好的体验过它。试试'bluetoothctl'或者'btgatt-client',看看你是否发现对你更好。另外请注意描述符与值不同。 – Zimano

+0

检查你是否有写权限,并且char-write-cmd没有任何响应,所以char-write-req更好;如果你没有权限,它会提示错误 – Jagdish

回答

3

尽管存在BLE的规则和标准,但底层设备可以简单地忽略这些规则并执行自己的操作。因此,它可能会将该属性列为读写并显示为接受新值,但只是删除值。它不应该这样做,但没有理由不能。

但是,你应该确保它实际上发送正确的数据,并且问题与设备有关......正如评论gatttool中提到的可能会与解释输入有点混乱(新版本比旧版本更好),所以请尝试022而不是0x02。您也可以尝试使用btmon来检查gatttool是否实际发送了您打算的值。

+0

'hcidump'也是一个非常过时的工具,不再维护!尝试'btmon' :) – Zimano

+0

@Zimano编辑。 –

+0

太棒了!看起来不错,可靠的答案! – Zimano