c - Bluez BLE 连接 Linux

标签 c linux bluetooth-lowenergy bluez hci

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

我在模糊地看着 this widely referred to tutorial ,并且正在考虑调整 cmd_lecc Bluez/tools/hcitool.c 中的方法,但我无法使用 hcitool lecc 连接到我的 BLE 设备.

当我使用 gatttool 连接时,我能够成功连接,但是使用 hcitool lecc返回错误“无法创建连接:连接超时”,并且没有与 BLE 设备建立连接。但是,运行 sudo hcitool con显示事件连接显示有一个:'Unknown handle 0 state 2 lm SLAVE'。如果无法建立连接,为什么它会在 hcitool 中将连接注册为事件连接? ?

因此,我的问题有三个方面:

  1. 这两个命令有什么区别?
  2. gatttool适合我的目的,还是我应该弄清楚哪些不适用于 hcitool (在类似 this 之后?
  3. 为什么 sudo hcitool lecc <bdaddr>部分连接,即使超时?

非常感谢。

最佳答案

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

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

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

关于c - Bluez BLE 连接 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27876252/

相关文章:

Android 蓝牙 LE - BluetoothGatt - onNotify 停止接收数据

c - 如何在一个 C 源文件中正确使用 2 个结构定义

linux - 为 CMake 中的build设置链接器搜索路径

linux - 从 Linux 命令行复制到 Vim

c# - 我们是否必须在应用程序级别处理蓝牙 LE 通信中的 MTU?

bluetooth - 如何使用像 hcitool lescan 这样的 bluetoothctl 来报告重复的邻近信标

c - C 中的 BFS 实现不会终止

C 函数类型定义 : defining function without parameter list

c - XTC文件读取错误

linux - 我可以在内核代码中使用 vpush/vpop 吗?