如何在pybluez中访问蓝牙低级功能?
有没有pybluez的封装函数可以用来实现更底层的蓝牙功能?我在文档里找不到相关内容。我需要的功能相当于:
l2ping (single ping)
hcitool cc
hcitool rssi
hcitool lq
hcitool tpl
hcitool dc
有没有办法通过pybluez(或者其他任何封装库和可编程语言)来访问这些功能?
1 个回答
2
想要实现相同的功能,其实很简单,你可以让 Python 脚本通过命令行调用 hcitool。
不过,如果你想要一个更自定义的解决方案,可以使用 pybluez 来发送和那些命令生成的 HCI 命令包一样的内容。比如,hcitool rssi 这个命令会向本地的蓝牙适配器发送一个 HCI 读取 RSSI 的命令,然后解析结果。使用 pybluez,你可以打开一个 HCI 套接字,自己构造命令包,并解析结果。如果你没有蓝牙规范的文档来了解命令包的格式,你可以查看 hcitool 的源代码,看看他们发送了什么,或者使用 hcidump。
使用 hcidump 的话,你可以在一个终端运行 hcidump 来监控本地的 HCI 命令流量,同时在另一个终端通过 hcitool 执行其他命令。通过 hcidump,你可以捕获到原始的数据包交易,这些数据可以作为你用 pybluez 生成命令的参考。
这个例子 http://code.google.com/p/pybluez/source/browse/trunk/examples/advanced/inquiry-with-rssi.py 展示了如何处理 HCI 套接字,手动构造命令包并解析结果。你只需要根据你想使用的命令进行自定义即可。