Auther:nishino

コメントはありません。 Comments/nishino/howto

お名前:

目次

Bluetooth通信の詳細

理解できたところから纏めます。
公式サイト
Bluetooth.org - The Official Bluetooth Membership Site

注意!

大学一年生が拙い英語力で仕様書を読み漁っているため、間違いが多々あると思われます。
決して鵜呑みにしないでください!自分で判断して真偽を確かめて下さい!
そして、間違えがあれば是非ともコメントにお書きして下さい。
日本語の資料が本当に少ないので、是非ともご協力下さい!
以上のことをご理解の上、ご指導ご鞭撻のほどよろしくお願い致します。

そして公式の詳細な仕様書は契約した企業しか見れないという学生泣かせな仕様なので、ぜひ情報提供のほどお願いします。
(学生や一般の方が閲覧できる場所は、詳しい解説というよりも技術の概念的なのものなので、実際に使おうと思っても分かりにくいです。なんて普及させる気のない技術w)

概要

基本はアドホック通信の規格。
通信速度や範囲が微妙すぎて忘れ去られそうになった悲しい子。
けれど、モジュールの小型化やマウスやオーディオ繋ぐ程度なら問題ない通信速度によって無線のニッチ市場を確保。
IrDAほど通信距離と速度が煩わしくなく、無線LANほどの通信速度と距離はいらん!という通信規格。だったが…技術の進歩により、どれも少しずつカバーの範囲が被っている。
廉価で省電力な、速度まぁまぁの無線通信用の規格という認識で取りあえずはおk
しっかりとした日本語で理解したい人はwikiへ!ウィキペディアンよ…実装方法も解説してくれ……。

利点

元々がDevice to Device(アドホック通信)用の通信規格なので、その中では速度が速い方。
コリジョンによる遅延が起こりにくい?
無線通信規格の中では、値段の割に実装モジュールが小さくて済む。(今のところ)
プロファイルを使うので通信の用途が明確。
省電力。エコ(笑)
以上。

問題点。

802.11nと比べると速度が微妙すぎる。日本語の資料が少ない…というか技術解説しかほぼない。
プロファイルを使うので、プロファイルに即した通信しかできない。
つまり、目的に合ったプロファイルが実装されてなければ、自分で乗せなきゃいけない。
プロファイルAとBを使おうと思ったら、いちいち切り替えるか、A+Bという新たなプロファイルを作る必要がある。

そして最大の問題点
他の無線通信規格とBluetoothは場合によって干渉を起こします。
(ソースの一例:802.11bとBluetoothの干渉を“目で見る”)

これは極端な例ですが、他の無線規格でも干渉が起こる場合もあります。
もちろん規格間で対策がなされている場合が多いです。
WiFi/BluetoothとWiMAXの共存技術

この通り、無線同士の干渉が起こるのはBluetoothに限った話ではありません。
しかし、下位のバージョン(ver1.1以下)では無視できないほどひどいです。場合によっては無線LANがつながらなくなったりします。
(Bluetoothが名前の由来通り「乱立する無線通信規格を統合したい」という野望願いを込めて作られたのかどうかは分かりませんがIEEEに喧嘩を売っていたのかも。正直、普及しなかった理由はこっちの気が…。
まぁ…願いを込めて作られたから他の規格のことなんかry)

すべてのデバイスはBluetoothに通じる(p3)を読む限り、数撃ちゃ当たる戦法で安定通信を保とうとするのが原因らしいです。

最近の規格では、コリジョン対策をして他の規格とも共存しているようです。
(wiki読む限り。けれど、何パーセント以内にコリジョンを抑えているのか不明。誰か確認してくれ…。)

仕組み

プログラム側の流れ

デバイス認識

リモートデバイス検索

ペアリング

実装

仕様的にBluetoothアダプタのことをBluetoothラジオと呼んでいるみたいです。

AndroidOSでは、class名がBluetoothAdapterのようにあるので分かりやすいですが、
一般的にはadapterではなくradioの名称を使うほうが多いです。
APIの命名に〜radioと使われているときは、Bluetoothアダプタに対するAPIであると脳内処理してください。

C#

Accelerated C#の本以外まともなサンプルがないw

C++

必要なヘッダ

winsock2.h
bthdef.h
BluetoothAPIs.h

必要なライブラリ

Irprops.lib

使用するであろうAPI

はっきり言ってヘッダーのコメントが神なのでしっかり読んでください。

Visual Studio 2005 に Service Pack 1を統合する

Windows 7 Professional x86 で確認。
E:\はVisual Studio 2005 インストールCDの場所なので各自で変更してください。

ユーザーフォルダの下に作業フォルダを作成してから進めました。
(C:\Users\Hogehoge\tmp)

tmpフォルダ内に必要なService Packを入れておいて下さい。
Visual Studio 2005 Team Suite Service Pack 1
Visual Studio 2005 Service Pack 1 Update for Windows Vista
Visual Studio 2005 Service Pack 1 ATL セキュリティ更新プログラム

Service Pack 1を統合

とても時間がかかるので注意。

コマンドプロンプトで以下のように打ち込む。

cd tmp
msiexec.exe /a E:\vs\vs_setup.msi TARGETDIR=%cd%\vs /L*vx install.log
VS80sp1-KB926602-X86-JPN.exe /extract VS_TMP1
msiexec.exe /a vs\vs_setup.msi /p VS_TMP1\VS80sp1-KB926602-X86-JPN.msp /L*vx patch1.log
VS80sp1-KB932236-X86-JPN.exe /extract VS_TMP2
msiexec.exe /a vs\vs_setup.msi /p VS_TMP2\VS80sp1-KB932236-X86-JPN.msp /L*vx patch2.log
VS80sp1-KB971090-X86-INTL.exe /extract VS_TMP3
msiexec.exe /a vs\vs_setup.msi /p VS_TMP3\VS80sp1-KB971090-X86-INTL.msp /L*vx patch3.log

インストールCDの中身をまるまる新たなフォルダにコピー。

E:\ → C:\Users\Hogehoge\VS2005SP1

VSの中の.cabと.msiのファイルは既にvsに展開済みのため削除。

C:\Users\Hogehoge\VS2005SP1\VS *.cab *msi を削除

VSフォルダにvsフォルダを上書きする。

C:\Users\Hogehoge\VS → C:\Users\Hogehoge\VS2005\VS

SQLServer2005の互換性で文句言われた人は、後に自分でアップデートしてください。

注意
作成するディスクラベル名はオリジナルと同じにする必要があります。(恐らく『DVD1』のはず)
同じにしないとインストール時にCDがあっても、途中でCDの挿入を求められます。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS