2015-05-22 33 views
7

Zaczynam budować prostą sieć BLE z mikrokontrolerem i malinowym pi (tardis BLE dongle). Jako punkt wyjścia, szukam prostego przykładu C lub C++ do odczytu/zapisu urządzenia BLE, podobnego do tego, co jestem w stanie zrobić za pomocą linii poleceń. Przykłady, które do tej pory znalazłem, są dość skomplikowane. Jako początkujący BLE potrzebuję kilku prostych przykładów do zbudowania, zanim przejdę do przodu z bardziej skomplikowanym projektem. Nie mam problemu z zakodowaniem na sztywno nazwy urządzenia BLE, jak to mam w poniższym przykładzie gatttool.C/C++ BLE odczyt/zapis przykład z Bluez

Oto jak obecnie używam opcji wiersza poleceń z Bluez.

Z linii poleceń jestem w stanie używać:

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

Dalej jestem w stanie połączyć się z urządzeniem w linii poleceń z 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 

Wreszcie jestem w stanie odczytać i napisz używając odpowiednich uchwytów:

[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 

Niektóre witryny, z których korzystałem podczas wstępnych badań i rozpoczęcia:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c

+0

Możesz również rzucić okiem na najnowsze apiki DBUS GATT opublikowane przez najnowsze wersje Bluez (od 5,29 ... myślę). Nadal eksperymentalne, ale zrobiłem kilka testów i działa całkiem dobrze. Oczywiście wydajność może być nieco niższa niż dostęp do biblioteki bluez bezpośrednio, ale myślę, że warto spróbować ... –

Odpowiedz

4

Coś prostego? Jak krótki jest kawałek sznurka? Osobiście uważam, że sam kod gatttool jest dość prosty do naśladowania i wyodrębnienia dla własnych celów (zrobiłem to ostatnio). Ale jeśli to naprawdę nie jest odpowiednie dla ciebie, to inną opcją jest libgatt. Zasadniczo jest to ten sam kod, którego używa gatttool, ale został wygodnie dołączony do biblioteki publicznej biblioteki. Spójrz na gatt.h, który ma połączenie/odczyt/zapis itp. Mam nadzieję, że powinno to być oczywiste, jak z tego korzystać.

+0

Dziękuję za odpowiedź. gatttool.c i gatt.c wydają się mieć to, czego potrzebuję. Czy możesz wyjaśnić czym powinien być GAttrib? Na przykład, biorąc operację linii poleceń do zapisu, char-write-cmd, mam znany adres MAC, uchwyt i wartość do wysłania. Chciałbym użyć funkcji gatt_write_cmd() z gatt.c i po prostu przekazać zestaw znanych wartości, ale utknąłem na wskaźniku GAttrib i sposób, w jaki jest on powiązany z tym, co użyłem z opcją wiersza poleceń. –

+0

gdzie jest gatttool.c i gatt.c? jak pobrać etc? – peterk