我有一个带有一些自定义GATT服务的设备,我想编写一个Linux程序来与它交互。经过一番搜索,我发现Linux正在使用BlueZ来处理蓝牙LE协议。我正在使用Ubuntu15.10和BlueZ 5.35,但是我不知道如何在用户空间程序中使用这个BlueZ。我在任何地方都找不到API文档,没有教程,没有示例,什么都没有。除了使用默认服务连接到蓝牙设备之外,还可以使用这个BlueZ堆栈做任何其他事情吗?如果是这样,那么文档在哪里?(最好是C/C++ API,但在这一点上什么都行)
发布于 2016-06-27 20:20:51
attrib/gatttool.c 1. Gatttool是一个命令行实用程序,用于使用C "API“连接到BTLE设备。但是,在libbluetooth中没有公开GATT接口。btgatt-
tools/btgatt-client.c中找到它(要启用编译,请使用gatttool配置bluez的代码可以在client/ 2中找到。
不幸的是,到目前为止还没有官方的
参考,因此建议更多好奇的读者下载并检查BlueZ源代码。
Gilbert Brault还从bluez 6中提取了GATT接口,并使用以下免责声明链接到GATT接口7的基本doxygen文档:
这是一项正在进行的工作,目的是记录所有重要的函数和数据结构
此外,Szymon Janc在2016年嵌入式Linux大会上的演讲“现代Linux上的蓝牙”中做了一个很好的概述。从42:00开始,他谈到了未公开的C接口。但总的来说,他似乎推荐DBUS API (请参阅45:30的“提示”幻灯片)。在Python9中可以找到一些DBUS文档,在test/中可以找到使用DBUS接口的doc/gatt-api.txt示例。
希望这能有所帮助。
1
2
7
9
发布于 2018-05-08 04:46:30
我能感受到你的痛苦。我需要将来自定制BLE外围设备的用户输入(一个简单的远程按钮)添加到在Raspberry Pi上的Linux (Stretch)下运行的嵌入式程序中。我被BlueZ应用程序接口的不必要的复杂性和简单的文档(不是恭维)震惊了。所有的BlueZ“示例”都是从蓝牙是宇宙中心的角度编写的,用户希望支持曾经发明的每一个蓝牙设备。在我的例子中,我确切地知道我需要与之交互的设备、服务和GATT特征,并且我想要一个在低优先级线程中完成其任务的最小开销任务。
事实证明,使用BlueZ的BLE中央客户端非常简单,但从5.49版中的BlueZ实用工具bluetoothctl的源代码开始,这是一条艰难的道路。我只使用了来自BlueZ发行版的三个未经修改的源文件和另外三个源文件的摘录,就满足了我的需求。由于Gnome源代码不可避免地依赖于D-Bus和Gnome GLib主循环,因此我很不情愿地将它们包含在内。
在OlivierM的慷慨引导下,我希望我在时间上令人尴尬的大量投资能拯救别人一个月的生命,我在GitHub上发布了我的蓝牙BLE客户端示例:https://github.com/jjjsmit/BluetoothBLEClient
发布于 2016-02-18 01:45:45
可以说,在Linux上编写shell脚本来完成您需要做的事情会更简单、更快。BlueZ命令相对简单明了,有许多关于如何使用它的教程和问题。
教程:-
http://www.jaredwolff.com/blog/get-started-with-bluetooth-low-energy/ https://learn.adafruit.com/reverse-engineering-a-bluetooth-low-energy-light-bulb/control-with-bluez https://lilyhack.wordpress.com/2014/02/03/ble-read-write-arduino-raspberry-pi/ http://joost.damad.be/2013/08/experiments-with-bluetooth-low-energy.html
问题:
一旦您更加熟悉手动使用这些命令,您就可以编写一个最小的shell脚本,以便为您自动执行此操作。
https://stackoverflow.com/questions/35389894
复制相似问题