我一直在寻找一个简单的 C 语言蓝牙 LE 库,它允许我扫描 BLE 设备、连接并接收来自 BLE 设备的给定服务 UUID 的定期通知。直接与蓝牙套接字和 libbluetooth(由 BlueZ 创建)配合使用而不使用 DBUS 的东西。不需要配对和安全功能。
遇到https://github.com/labapart/gattlib 。看起来不错,但使用 dbus API 并依赖于 libdbus、glib 等。要使用该库,需要额外 5MB 的库,因此决定不使用 dbus。我们的设备上没有空间来支持压缩 rootfs 镜像上的 5MB 蓝牙堆栈。我们的 rootfs 镜像的总大小为 9 MB。带有 dbus 的蓝牙堆栈本身似乎超过了 rootfs 大小的 50%。
还有-https://github.com/edrosten/libblepp这是 C++ 语言,不使用 dbus。这需要编写一个在 C 程序中使用的 C 包装器,并且还需要 C++ 结构的开销,例如编译器生成的复制构造函数、赋值运算符等。交叉编译也存在问题。
目标板是运行 Linux 的 Xilinx Zynq,构建系统是 buildroot。
请提出建议。
谢谢
最佳答案
找到了解决方案,可能对某人有帮助......
在 YouTube 上搜索并浏览 Linux session 和 IOT session 视频后,发现 Bluez 具有轻量级可执行文件,并且代码位于 Bluez 的 src/shared 文件夹中。 btgattclient.c 在编译时生成“gatt-client”可执行文件,其功能与“gatttool”相同,并且不依赖于 bluetoothd 或 dbus。它唯一的依赖是 glib-2.0。
如果我们在操作系统没有运行蓝牙或没有安装 dbus 库时需要轻量级工具,这会很有帮助。
谢谢
关于bluetooth-lowenergy - C 语言的轻量级蓝牙 LE 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67178374/