Bluez 编程
Posted
技术标签:
【中文标题】Bluez 编程【英文标题】:Bluez Programming 【发布时间】:2015-06-28 07:26:18 【问题描述】:我正在使用 USB 蓝牙加密狗在我的 Raspberry Pi 上使用 BlueZ 进行编程。
我需要能够以编程方式连接到 Arduino BT,问题是 Arduino 的蓝牙模块仍在使用传统配对,所以每当我尝试打开设备的套接字时,我都会得到一个Permission Denied
。
如何通过 BlueZ 发送 PIN 码以完成配对请求?
【问题讨论】:
你用simple-agent
测试了吗?
我想在没有第三方软件的情况下做到这一点,只需通过 bluez C API。
试试这个:***.com/questions/14820004/…
我建议您使用 bluez DBUS API 而不是内部 hcitools 代码。它得到更好的支持和更高的水平。如果您走这条路,您需要做的就是将您的应用程序注册为代理。然后,无论何时需要 BT 身份验证,您的代理都会收到 PIN/密码请求。有关 API,请参阅 bluez agent doc。或者,您可以使用 Device api 启动配对。详情见设备device doc。
@Alan Au 看起来这些 API 都适用于 Python,没有 C 的文档吗?
【参考方案1】:
您可能需要查看最新 Bluez 源代码的 client 文件夹中的 main.c
文件。它是 bluetoothctl 工具的源代码。也运行它。源代码准确地显示了他们如何使用 GDBus,包括代理、代理、API (/doc folder) 中描述的调用方法等等。它使用 C 语言并使用高级 API。
我建议您单步执行代码,因为我花了 2 周的时间无休止地试图理解 C 语言中的 Bluez 以及没有文档的事实,但是当我阅读那个 main.c 文件时,我在一天之内就准备好了。阅读适当的 Dbus API 文档,更重要的是阅读概念。一些对我有帮助的文件:
gdbus 工具: https://developer.gnome.org/gio/stable/gdbus.html
这些包含所有对 gdbus 和 main.c
文件中的对象的调用,并很好地解释了它们。
https://developer.gnome.org/gio/stable/gdbus-convenience.html
D-Feet,用于检查和了解系统上 Dbus 的宝贵工具。尝试检查 /bluez 总线。 https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet
或
sudo apt-get install d-feet
教程并不多,但值得一读以了解一些概念,因为 bluetoothctl 工具适合他们在这里想要表达的内容。 http://dbus.freedesktop.org/doc/dbus-tutorial.html
虽然 bluetoothctl 创建了一个交互式 shell,因此浪费时间尝试适应您的代码可能是不明智的,但只需从中选择您需要的内容。
【讨论】:
以上是关于Bluez 编程的主要内容,如果未能解决你的问题,请参考以下文章
是啥取代了使用 BlueZ 进行 C 编程的 libbluetooth1-dev?