簡體   English   中英

使用Bluez的C / C ++ BLE讀/寫示例

[英]C/C++ BLE read/write example with Bluez

我開始建立一個簡單的BLE網絡,帶有微控制器和覆盆子pi(tardis BLE加密狗)。 作為一個起點,我正在尋找一個簡單的C或C ++示例來讀/寫一個BLE設備,類似於我在命令行上可以做的事情。 到目前為止,我發現的例子非常復雜。 作為一名BLE初學者,我需要一些非常簡單的例子來構建,然后再采用更復雜的設計。 我可以像在下面的gatttool示例中那樣對BLE設備名稱進行硬編碼。

以下是我目前使用Bluez命令行選項的方法。

從命令行我可以使用:

$ sudo hcitool lescan
LE Scan ...
BB:A0:50:02:18:07 MyDevice

接下來,我可以使用gatttool在命令行上連接到設備:

$ sudo gatttol -b BB:A0:50:02:18:07 -I
[BB:A0:50:02:18:07][LE]> connect
Attempting to connect to BB:A0:50:02:18:07
Connection successful

最后,我能夠使用適當的句柄進行讀寫

[BB:A0:50:02:18:07][LE]> char-write-req 000f 0100
Characteristic value was written successfully
[BB:A0:50:02:18:07][LE]> char-write-cmd 0011 4C467A

我用於初步研究並開始使用的一些網站:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c

簡單的東西? 一根繩子有多短? 我個人認為gatttool代碼本身很簡單,可以根據自己的需要進行跟蹤和提取(我最近已經完成了)。 但如果那真的不適合你,那么另一種選擇就是libgatt 它與gatttool使用的代碼基本相同,但已更方便地捆綁到公共庫API中。 看看有連接/讀/寫等的gatt.h。希望如何使用它是不言而喻的。

Bluez(Linux官方藍牙堆棧)已將其API轉移到DBUS 雖然在過去,“接受”'fork'bluez代碼來訪問Linux上的BLE支持,現在的方法是使用DBUS。 Bluez DBUS API在此處記錄: https//git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc

您可以直接與DBUS聯系以獲取藍牙C / C ++應用程序,也可以使用GATT庫作為幫助程序。 第二個可能是初學者的最佳方法(也適用於非初學者,他們更願意保持他們的程序Bluez不可知,例如支持其他操作系統或Bluez pre-DBUS API或使其源更具可讀性)。

其中一個支持現代D-BUS API的GATT庫是gattlib (注意:我是這個庫的作者)。 以下是基於此庫讀取/寫入BLE設備的簡單示例: https//github.com/labapart/gattlib/blob/master/examples/read_write/read_write.c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM