Bluetooth GATTTool无法读取/写入特征

Bluetooth GATTTool无法读取/写入特征,bluetooth,bluetooth-lowenergy,bluez,gatt,Bluetooth,Bluetooth Lowenergy,Bluez,Gatt,我正在尝试使用bluez的gatttool在一个BLE定制板上编写一些演示特性。具体地说,我希望写入一个特征,并读取其值。下面是我正在做的(其中0x25是特性的句柄): 有人知道为什么读取的特征值是00而不是02(char write cmd的第二个参数 任何帮助都将不胜感激。虽然有关于BLE的规则和标准,但底层设备可以忽略这些规则和标准,自己做自己的事情。因此,它可能以读写方式列出属性,并且似乎接受新值,但随后只是删除这些值。它不应该这样做,但没有理由不能 但是,您应该确保它确实发送了正确的数

我正在尝试使用bluez的gatttool在一个BLE定制板上编写一些演示特性。具体地说,我希望写入一个特征,并读取其值。下面是我正在做的(其中0x25是特性的句柄):

有人知道为什么读取的特征值是00而不是02(char write cmd的第二个参数


任何帮助都将不胜感激。

虽然有关于BLE的规则和标准,但底层设备可以忽略这些规则和标准,自己做自己的事情。因此,它可能以读写方式列出属性,并且似乎接受新值,但随后只是删除这些值。它不应该这样做,但没有理由不能


但是,您应该确保它确实发送了正确的数据,问题出在设备上。。。正如注释中提到的那样,gattool
在解释输入时可能会有点混乱(新版本比旧版本好),因此尝试
02
2
而不是
0x02
。您还可以尝试使用
btmon
检查
gatttool
是否确实发送了您想要的值。

检查是否有其他软件未访问蓝牙


我在尝试读取特征时遇到了类似的问题,node red也在访问同一个设备。gatttool已连接到设备,但无法与读/写进行通信。我一停止node red,它就开始工作了。

gatttool
非常挑剔。尝试使用
char write cmd 0x25 02
(也就是说,在值中没有
0x
),我会避免使用
gatttool
,因为我从来没有使用过它。试试
bluetoothctl
btgatt-client
,看看你是否觉得这样更适合你。还要注意描述符和值不一样。检查您是否有写权限,并且char write cmd没有任何响应,因此最好使用char write req;如果你没有权限,它会提示你error@kaylum你说得对!删除
0x
成功了。这是否意味着第二个参数假定为十六进制?
hcidump
也是一个非常过时的工具,不再维护!试试
btmon
:)明白了<代码>02或
2
成功了。看起来它已经默认地将参数解释为十六进制了。
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