マイクロコントローラーとRaspberryPi(tardis BLEドングル)を使用して、単純なBLEネットワークを構築し始めています。出発点として、コマンドラインで実行できるのと同様に、BLEデバイスを読み書きするための簡単なCまたはC++の例を探しています。私がこれまでに見つけた例は非常に複雑です。 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
Bluez(Linuxの公式Bluetoothスタック)は、APIのために [〜#〜] dbus [〜#〜] に移動しました。以前は、LinuxでBLEサポートにアクセスするためにbluezコードを「フォーク」することが「受け入れられ」ていましたが、現在のアプローチはDBUSを使用することです。 Bluez DBUS APIはここに文書化されています: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc
Bluetooth C/C++アプリケーションについてDBUSに直接話すか、GATTライブラリをヘルパーとして使用します。 2つ目は、初心者にとっておそらく最良のアプローチです(また、他のOSやBluez pre-DBUS APIをサポートしたり、ソースを読みやすくしたりするために、プログラムをBluezに依存しないようにしたい初心者にとっても最適です)。
最新のD-BUSAPIをサポートするこれらのGATTライブラリの1つは gattlib です(注:私はこのライブラリの作成者です)。 BLEデバイスの読み取り/書き込み用のこのライブラリに基づく簡単な例を次に示します。 https://github.com/labapart/gattlib/blob/master/examples/read_write/read_write.c