我是Linux和蓝牙开发的新手,我不确定sudo hcitool lecc <bdaddr>
和sudo gatttool -b <dbaddr> -I
之间的区别?我不要求任何关贸总协定的服务;我只想在两台设备之间建立连接。
我正在模糊地关注this widely referred to tutorial,我正在考虑在Bluez /tools/hcitool.c中调整cmd_lecc
方法,但我无法使用{{{}来连接我的BLE设备1}}。
当我使用hcitool lecc
进行连接时,我能够成功连接,但是使用gatttool
会返回错误“无法创建连接:连接超时”,并且未与BLE设备建立连接。但是,运行hcitool lecc
以显示活动连接会显示有一个:'未知句柄0状态2 lm SLAVE'。如果它没有建立连接,为什么它会在sudo hcitool con
中将连接注册为活动状态?
因此,我的问题有三个:
hcitool
是否适合我的目的,或者我应该找出与gatttool
无关的内容(跟this之类的内容有关吗?hcitool
部分连接,即使它超时?非常感谢。
答案 0 :(得分:1)
hcitool lecc <bdaddr>
创建连接并返回句柄,而gatttool -b <bdaddr> -I
仅打开一个交互式终端,其接口绑定到该地址但尚未连接。要使用gatttool
命令进行连接,您必须输入connect
,这很可能也会失败。
我建议查看hcitool
如何连接编写自己的代码,因为gatttool
只是围绕hcitool
使用的同一进程的包装器,但其包装器不可用除非你复制它的代码。
最后,hcitool
报告的句柄0是尝试连接时无效的句柄,因为据我所知,所有有效句柄都大于0。