web-dev-qa-db-ja.com

BlueZ Cライブラリを介してBluetooth低エネルギースキャンを実行する方法

BlueZを使用してBluetooth低エネルギーをプログラミングするのは初めてです。

Intel EdisonでBluetooth Low EnergyのBlueZ APIを使用して近くのデバイスをスキャンするネイティブコードcを開発したいと思います。私は この質問 を見てきましたが、答えは本当に役に立ちません。何かアドバイス?

9
Longes

GalileoまたはEdisonでBlueZを使用したBLEプログラミングは、他のx86プラットフォームと同様です。

Edison(およびGalileo)には通常、BlueZライブラリがプリインストールされています。それらとCコードでリンクし、他のx86プラットフォームと同様にプログラムするだけです。

完全な BlueZによるBluetoothコードスキャンのCコード例は、このリンクを参照してください

BLEスキャンについてはこの例を参照してください

そしてHCI API here

7
ashoke

他の答えの例は私にとってはうまくいきません、それはスキャンで停止します...

次のリンクはC言語で機能しますが、de rssi信号に関する情報を持つバイトをキャストするとエラーが発生します。 https://github.com/glock45/intel-edison-playground/blob/master/scan.c

この121行目:

printf("%s - RSSI %d\n", addr, (**char**)info->data[info->length]);

でなければなりません:

printf("%s - RSSI %d\n", addr, (**int8_t**)info->data[info->length]);

Btmonプログラムが存在するbluez-version/monitor/*.cの内部を見たところ、これらが見つかりました。データ型と構造体を確認できます。hcidump.cは非常に便利で、packets.cmain.cも使用できますが、hciソケットについては多くの知識があります。

9
Yao Hao