2016-10-28 223 views
2

仍在询问BLE设备和gatttoolGatttool非交互模式--char-write

我能够在交互模式下发送char-write-cmd,但我无法在非交互模式下执行相同操作。

这是我在交互模式发送:

gatttool -I 

[]> connect BTADDR 

[BTADDR]> char-write-cmd 0x0040 01 

[BTADDR]> exit 

就这样,我开始了警报服务,这在我的情况下,使蜂鸣器鸣响。

从理论上说,非交互模式应该是:

gatttool -b BTADDR --char-write -a 0x0040 -n 01 

但这种请求命令事件不发送到电路板上,我使用的是一个开发板检查它。

+0

我有完全相同的问题。交互模式有效,但非交互模式不适用。我可以在非交互模式下发送写入请求,但我无法以非交互模式发送写入命令。我查看了gatttool的源代码,我看不到任何明显的错误。你能够得到它的工作? –

回答

2

手动(非交互)的方式来读取或写入到您的BLE外设:

编写和一次收到回复:(取决于你如何配置你的BLE装置)

sudo gatttool -i hci0 -b xx:xx:xx:xx:xx:xx --char-write-req -a 0x0025 -n ff 

要编写并无限期地收到回复:(除非你从BLE装置断开或停止蓝牙客户端)

sudo gatttool -i hci0 -b xx:xx:xx:xx:xx:xx --char-write-req -a 0x0025 -n ff --listen 

通知我只加在最后的--listen选项。如果您配置您的BLE节点(传感器或执行器)以读取和回复,此机制才有效。 来源:: How to use gatttool non-interactive mode Bluetooth Low Energy: listening for notifications/indications in linux

所有这一切说,我仍然不认为这是最好的控制或从BLE装置得到的值。我的方向是前进,并使用API​​(可能在Python中)为您完成这项工作。

https://github.com/peplin/pygatt 此API已被证明可与Raspberry Pi Jessie destro配合使用。

+0

我仍然不认为最好控制或从BLE设备获取数值 - 为什么? pyGATT在其内部实现中使用gattool CLI方法。如果您不喜欢使用CLI方法,我建议使用BlueZ Libs实现本地库。 –