3

我对 Linux 和蓝牙开发非常陌生,我不确定 和 之间的sudo hcitool lecc <bdaddr>区别sudo gatttool -b <dbaddr> -I?我不需要任何 GATT 服务;我只想要两个设备之间的连接。

我正在模糊地看着这个被广泛引用的教程,并且正在考虑调整cmd_leccBluez /tools/hcitool.c 中的方法,但我无法使用hcitool lecc.

当我使用 连接gatttool时,我能够成功连接,但是使用hcitool lecc返回错误“无法创建连接:连接超时”,并且没有与 BLE 设备建立连接。但是,运行sudo hcitool con显示活动连接显示有一个:“未知句柄 0 状态 2 lm SLAVE”。如果无法建立连接,为什么还要将连接注册为活动状态hcitool

因此,我的问题有三个:

  1. 这两个命令有什么区别?
  2. 是否适合我的目的,或者我应该找出什么gatttool不起作用hcitool(遵循这样的事情
  3. 为什么sudo hcitool lecc <bdaddr>部分连接,即使它超时?

非常感谢。

4

1 回答 1

1

hcitool lecc <bdaddr>创建一个连接并返回一个句柄,同时gatttool -b <bdaddr> -I只打开一个交互终端,其接口绑定到该地址但尚未连接。要使用该gatttool命令进行连接,您必须输入connect,这很可能也会失败。

我建议查看如何hcitool连接以编写您自己的代码,因为所有这些gatttool都是围绕所使用的同一进程的hcitool包装器,但除非您复制其代码,否则它的包装器不可用。

最后,hcitool报告的句柄 0 是尝试连接后留下的无效句柄,因为据我所知,所有有效句柄都大于 0。

于 2015-02-21T03:15:31.807 回答