最近、Bluetoothアダプタを買ったので、WindowsプログラムからBluetoothを制御できるか調べていたんだけど、面倒というかいろいろ思ったようにいかないのね。
まず、BluetoothスタックがMicrosoft純正のものと、ベンダ製のが存在すること。買ったプリンストンのPTM-UBT3Sという小さなデバイス。これにはドライバとしてToshiba製のBluetoothスタックがついている。
このスタックだと、Microsoftが用意しているBluetooth APIも、Winsockを使ったBluetoothデバイス制御もできない*1。Microsoft純正ドライバで認識させないとプログラムから制御はできないということ。*2
Bluetooth APIが使えたところで、できるのはデバイス認識とリモートデバイスの検索とペアリングまで。実際に各プロファイルを使ってデータ通信したりするのには自力で作らないといけないようだ。OBEXを使ってファイルのやりとりをしたくても、標準のライブラリが無いので自作するか商用のライブラリかフリーのライブラリを探さないとダメ。
おおげさかもしれないけど、なんとなくBluetoothが垢抜け無いというか広まらないのはこういうところにあるんじゃないのかな。単純に製品付属のアプリでファイル転送したりするという普通の使い方をするには問題ないのだけど、独自にアプリケーションから制御できればもっといろいろ使い道が出ると思うんだよね…。USBと違って無線なわけだし。
ベンダのドライバではAPIが使えない、Microsoftのドライバだとプロファイルが少ない、APIが使えても実際のプロトコルは用意されていない…。このままだとWireless USBとかあの辺の新しい規格に持って行かれたりしないのかな。
けっこう開発者泣かせなBluetoothです。