我有一個有幾個定製GATT服務的設備,我想編寫一個Linux程序來與它交互。經過一番搜索後,我發現Linux正在使用BlueZ來處理藍牙LE協議。我在BlueZ 5.35上使用了Ubuntu 15.10,但我無法弄清楚如何在用戶空間程序中使用這個BlueZ。我無法在任何地方找到API文檔,沒有教程,示例,也沒有。除了只使用默認服務連接到藍牙設備之外,是否有可能使用此BlueZ堆棧來做其他任何事情?如果是這樣,文檔在哪裏? (最好是C/C++ API,但在這一點上什麼都行)在Linux上的藍牙低功耗API
回答
在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
問題: -
- Using Bluetooth low energy in linux command line
- Bluetooth Low Energy: listening for notifications/indications in linux
- How can I connect to the FitBit Zip over Bluetooth 4.0 LE on Linux with bluez?
一旦您更熟悉手動使用這些命令,您就可以編寫一個最小的shell腳本,以便爲您自動執行這些腳本。
我已經使用了很多這些命令來測試BlueZ的功能,並且它具有我需要的功能。但我需要創建比shell腳本更復雜的東西。 – UnTraDe
我有一個類似的問題,就是用GATT C/C++ API與BLE設備進行交互。我意識到沒有這樣的API存在。 我解決我的問題的方式是編寫我自己的GATT庫。我在Github上推送了代碼:https://github.com/labapart/gattlib
我在我自己的BLE項目中使用這個庫,它滿足我的需求。我創建了幾個例子https://github.com/labapart/gattlib/tree/master/examples,它們使用庫來鼓勵人們使用它並獲得更好的反饋。
看看藍色光源中的attrib/gatttool.c
[1]。 Gatttool是一個命令行工具,用於使用C「API」連接BTLE設備。儘管如此,GATT界面並未在libbluetooth中公開。一個更新的替代gatttool,因此另一個可以學習的例子是btgatt-client,您可以在tools/btgatt-client.c
中找到它(使用--enable-experimental
啓用編譯配置bluez)。除了C接口bluez集成了一個DBUS接口。 bluetoothctl是使用DBUS接口的示例工具。 bluetoothctl的代碼可以在client/
[2]中找到。另一個使用bluez的C接口的示例程序是Anki Drive SDK [3]。它將bluez GATT C接口封裝在自己的庫libbzle中[4]。使用C接口時,建立BTLE連接時必須連接套接字。 gattool通過GATT界面來完成這個操作,而GATT界面又使用了glib iirc。但是,您也可以使用syscalls(socket,connect,...)來解決這個問題。這裏[5]。此文檔還解釋:
不幸的是,截至目前還沒有官方的API參考文獻可供參考,因此建議更多好奇的讀者下載並檢查BlueZ源代碼。
吉爾伯特Brault還提取到GATT接口[7]與下面的免責聲明的一個基本Doxygen文檔從的bluez [6]和鏈接關貿總協定接口:
這是正在進行的工作與記錄所有重要功能和數據結構的意圖
另外Szymon Janc在2016年嵌入式Linux大會上他的演講「現代Linux上的藍牙」中給出了一個很好的概述[8]。從42:00開始,他談到了未曝光的C界面。但總的來說,他似乎推薦使用DBUS API(請參閱45:30「提示」幻燈片)。一些DBUS文檔可以在doc/gatt-api.txt
[9]中找到,使用DBUS接口的Python示例可以在test/
中找到。
希望這會有所幫助。
[1] http://git.kernel.org/cgit/bluetooth/bluez.git/tree/attrib/gatttool.c
[2] http://git.kernel.org/cgit/bluetooth/bluez.git/tree/client/
[3] https://github.com/anki/drive-sdk/
[4] https://github.com/anki/drive-sdk/tree/master/deps/bzle/
[5] https://people.csail.mit.edu/albert/bluez-intro/c404.html
[6] https://github.com/gbrault/gattclient
[7] http://gbrault.github.io/gattclient/index.html
[8] https://www.youtube.com/watch?v=tclS9arLFzk
[9] http://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt
- 1. 藍牙低功耗
- 2. java中的藍牙低功耗API
- 3. Windows 8藍牙低功耗API示例
- 4. Android藍牙低功耗
- 5. 藍牙低功耗Android Studio
- 6. 藍牙低功耗通知
- 7. 藍牙低功耗Rssi Android
- 8. 藍牙低功耗背景
- 9. Android藍牙低功耗readRemoteRssi
- 10. ios6上的藍牙低功耗; CBPeripheralManagerDelegate
- 11. 連接USB與BLE(藍牙低功耗)的藍牙適配器
- 12. IOS藍牙低功耗連接間隔
- 13. 藍牙低功耗應用程序
- 14. Qt - WINDOWS - 藍牙低功耗工作?
- 15. iOS藍牙低功耗問題
- 16. 藍牙低功耗startLeScan已棄用
- 17. RN4020 PICtail™藍牙低功耗編程
- 18. 藍牙低功耗外設模式
- 19. 支持藍牙低功耗(BTLE)設備
- 20. 藍牙低功耗 - 雙方獲得RSSI?
- 21. 藍牙低功耗唯一標識符
- 22. Android Studio:藍牙低功耗BLE廣告
- 23. Android和低功耗藍牙(BLE)
- 24. 藍牙低功耗通知間隔
- 25. 使用藍牙低功耗寫入
- 26. iOS和藍牙低功耗,可能性?
- 27. Windows上的藍牙低功耗低速率?
- 28. 藍牙低功耗:Android Gatt-Client連接到Linux Gatt服務器
- 29. Chrome藍牙低功耗API - 跨平臺支持
- 30. 藍牙低功耗Java Api或C/C++庫
是的,這是可能的。但是有一條學習曲線。 bluez APIS記錄在[bluez樹](https://github.com/r10r/bluez/blob/master/doc/)中。這些都是DBUS API。所以要使用它們,你首先需要了解一下DBUS。使用DBUS有不同的綁定。它們包括python,Glib和QT。還有其他人。 – kaylum