2015-05-22 9 views
7

Ich fange an, ein einfaches BLE Netzwerk mit einem Mikrocontroller und einem Raspberry Pi (Tardis BLE Dongle) aufzubauen. Als Ausgangspunkt suche ich nach einem einfachen C- oder C++ - Beispiel zum Lesen/Schreiben eines BLE-Geräts, ähnlich dem, was ich über die Befehlszeile ausführen kann. Die Beispiele, die ich bisher gefunden habe, sind ziemlich kompliziert. Als BLE-Anfänger benötige ich einige sehr einfache Beispiele, bevor ich mit einem komplizierteren Design fortfahre. Ich bin in Ordnung mit dem BLE-Gerätenamen wie im unten stehenden gatttool-Beispiel.C/C++ BLE lesen/schreiben Beispiel mit Bluez

Hier ist, wie ich derzeit die Befehlszeilenoptionen von Bluez verwenden.

in der Befehlszeile ich in der Lage bin zu verwenden:

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

Weiter Ich bin in der Lage mit gatttool an das Gerät auf der Kommandozeile verbinden:

$ 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 

Ich bin in der Lage, endlich zu lesen und schreibe mit den entsprechenden Handles

[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 

Einige Websites, die ich für die anfängliche Forschung und um zu beginnen verwendet habe:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c

+0

Sie können sich auch die neuesten DBUS GATT api ansehen, die von den neuesten Versionen von Bluez veröffentlicht wurden (seit 5.29 ... denke ich). Noch experimentell, aber ich habe einige Tests gemacht und es funktioniert ganz gut. Natürlich kann die Leistung etwas niedriger sein als der Zugriff auf die Bibliothek von Bluez direkt, aber ich denke, es lohnt sich einen Versuch ... –

Antwort

4

etwas einfach? Wie kurz ist ein Stück Schnur? Ich persönlich denke, dass der gatttool-Code selbst einfach genug ist, um sie für Ihre eigenen Zwecke zu verfolgen und zu extrahieren (ich habe es kürzlich getan). Aber wenn das für Sie nicht geeignet ist, dann ist eine andere Option libgatt. Es ist im Wesentlichen derselbe Code, den gatttool verwendet, wurde aber einfacher in eine öffentliche Bibliothek API gebündelt. Sehen Sie sich gatt.h an, die connect/read/write usw. hat. Hoffentlich sollte es offensichtlich sein, wie man das benutzt.

+0

Vielen Dank für Ihre Antwort. gatttool.c und gatt.c scheinen zu haben, was ich brauche. Können Sie klären, was ein GAttrib sein sollte? Wenn ich zum Beispiel die Befehlszeilenoperation zum Schreiben verwende, char-write-cmd, habe ich eine bekannte MAC-Adresse, einen Handle und einen zu sendenden Wert. Ich möchte die gatt_write_cmd() -Funktion von gatt.c verwenden und einfach eine Reihe bekannter Werte übergeben, aber ich bleibe auf dem GAttrib-Zeiger hängen und wie es sich auf das bezieht, was ich mit der Befehlszeilenoption verwendet habe. –

+0

wo ist gatttool.c und gatt.c? Wie lade ich etc herunter? – peterk