はじめに

かなり前に、0からはじめるBluez(1)と言う記事を書いたのだが、これを実際に今回もやってみると言う記事。

環境

1
Linux Mint 17.03

Bluetoothプログラミングを入門する

Bluetoothとは

Bluetoothプログラミングを始める前に、まずは「Bluetoothとは何か」を知っておく。
以下は、Wikipediaからの引用となる。

数mから数十m程度の距離の情報機器間で、電波を使い簡易な情報のやりとりを行うのに使用される。 当初エリクソン、インテル、IBM、ノキア、東芝の5社(プロモーター企業)によって策定され、その後マイクロソフト、モトローラ、3COM、ルーセント・テクノロジーの4社がプロモーター企業として加わり、現在は3COM、ルーセント・テクノロジーの2社が脱退し、アップル、およびNordic Semiconductorが加わり、9社がプロモーター企業となっている。IEEEでの規格名は、IEEE 802.15.1である。 2.4GHz帯を使用してPC(主にノートパソコン)等のマウス、キーボードをはじめ、携帯電話、PHS、スマートフォン、タブレットでの文字情報や音声情報といった比較的低速度のデジタル情報の無線通信を行う用途に採用されている。 簡単に、短い距離で通信できる方式と考えて次に進みましょう。

準備

例によって、Linux Mint17.3がOSの環境でスタートする。
Windows機の方は、Cygwin(?)やVirtualBox等でLinux環境を整える。
プログラムを組む前に、Bluetoothのプロトコルスタックが必要となる。(ライブラリのようなもの)
Linuxでは、ポピュラーなBlueZを使用する。
インストール方法は下記コマンドを叩く。

Bluezをインストールする

1
sudo apt-get install libbluetooth-dev

これで、C言語からBlueZのプロトコルスタックが使用できるようになる。

コードを書く

準備も済んだので、実際にコードを書いてみる。
これまた、bluez-introのサイトを参考に デバイスを見つけるコードを書く。
エディタを開き、Example 4-1.simplescan.cをそのままコピペして貼り付ける。
保存して、エディタを閉じたら下記コマンドデコンパイルを実行する。

1
$ gcc -o simplescan simplescan.c -lbluetooth

コンパイル実行すると、「simplescan」というバイナリができるはずなので、下記で実行する。

1
$ ./simplescan

さて何が起きたでしょう。 このコードは、近くにあるデバイスを検索し、デバイス名とデバイスアドレスを標準出力にプリントする。 私の環境では以下のように出力された。

1
iphone6s XX:XX:XX:XX:XX:XX

ここまで記事を書いておいてだが、PCにBluetoothのドングルやBluetooth機能が内蔵していないとScanができないので、準備段階で買っておこう。

おわりに

昔の焼き増し記事なので当時を思い出しながら書いた。
昔は電光掲示板を操作するBluetoothのアプリを作るために、このあたりを勉強していたのだが、結局Webアプリにするのが一番だよなあと思ってBluetoothを使わなかった記憶。
Webアプリはそれはそれで制約があるので(同一ネットワークにいないとダメ)、ケースバイケースなのだが・・・。