到目前为止,我已经开发了几个程序来在我的 Raspberry Rpi2 和 RPi3 中使用 bleno 作为 BLE 外围设备。谁能告诉我是否有替代 Bleno 的方法,在 Python 中,甚至在 C 中更好,为我的 Raspberry 开发 BLE 外设服务代码?
4 回答
我和你有同样的痛苦——试图为 python 获得一个好的 BLE 外设角色库——所以我继续将 Bleno 移植到 python2/3。它仍然是一个 WIP,但 Echo 演示工作得很好。
https://github.com/Adam-Langley/pybleno/
它在 pypi 上作为“pybleno”
当然,为出色的原始节点代码库向 Sandeep Mistry 大声疾呼。
希望人们觉得它有用。
好吧,您总是可以使用 Linux 中的 HCI_CHANNEL_USER 功能直接与蓝牙控制器对话(例如从 C 语言)。事实上,这正是 bleno 所做的。只需遵循蓝牙规范中的 HCI 协议即可。
我无法为您提供 C 的答案,但bluepy似乎是目前与 BLE 外围设备(就像 bleno 一样)对话的最佳品种,如果您想使用核心模式,可以使用 Adafruit 的BlueFruit LE。
警告:我自己只是对 Pi 外围设备有所了解,还没有任何成功的项目。
据我所知,没有用 C 编写的库,但这里有一个有趣的起点: https ://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/ (特别有趣是: doc/mgmt-api.txt, doc/gatt-api.txt 用于 LE 事物)
似乎有两个接口可以做蓝牙的东西:D-Bus 和 HCI 套接字。HCI 套接字是具有特殊 AF_BLUETOOTH 域的实际 C 套接字()(http://man7.org/linux/man-pages/man2/socket.2.html有助于解释这一点)。您可以使用 org.bluez.* 进行使用 D-Bus 的高级接口。
让所有这些工作可能是一场噩梦,而所有其他 Python 库可能都可以正常工作。如果你想要更高的性能,你完全可以在 C 或 Rust 中使用一些东西,而你只需要套接字和 D-Bus,这听起来真的很难。