Wii Fit(バランスボード)から出力を取得しようとしています。C++ Bluetooth 列挙子を介してデバイスを見つけることができますが、Windows ソケットを介して接続しようとすると失敗します。
誰かがそのような方向 (C++、windows) で成功したかどうか疑問に思っています。
Wii Fit(バランスボード)から出力を取得しようとしています。C++ Bluetooth 列挙子を介してデバイスを見つけることができますが、Windows ソケットを介して接続しようとすると失敗します。
誰かがそのような方向 (C++、windows) で成功したかどうか疑問に思っています。
Wii バランス ボードは HID デバイスです。バランス ボードとの通信を理解するには、Bluetooth HID について少し知っておく必要があります。WiiリモコンとWiiバランスボードに関するWiiBrewに関する良い情報があります。
Windows ソケットを使用して HID デバイスに接続することはできないと思います。Windows Socket Bluetooth インターフェイスでは、RFCOMM ベースのサービスにのみ接続できます。HID は、Bluetooth プロトコル スタックのさらに下にある L2CAP に基づいています。その制限について、MSDN にいくつかの情報があります。
それをハックするだけの場合は、Bluecove for Java を試すことができます。別のスタック (Widcomm など) を使用して何かを実行できる場合があります。Windows と C++ に縛られている場合は、バランス ボード用のカスタム HID ドライバーの作成を検討する必要があるかもしれません。
pwc が言ったように、MS Bluetooth API には制限があるため、ソケットでは RFCOMM 以外のものを持つことはできませんが、これは L2CAP レイヤーでダウンできないという意味ではありません。クライアント プロファイル ドライバーを実装する必要があり、MSDN の記事を出発点として使用できます:リモート デバイスへの L2CAP クライアント接続の作成とその逆: Bluetooth プロファイル ドライバーでの L2CAP 接続の受け入れ
次に、pwc が言ったように、通信プロトコルについては Bluetooth HID と WiiBrew を勉強する必要があります。
Bluetooth Wireless Technology FAQ - 2010も読むのに適したドキュメントで、Microsoft Bluetooth スタック ドライバーとの L2CAP 接続が可能であることが明確に述べられています。もちろん、ソケットではありません。
Bluetooth デバイスで HID を使用する場合、通常、L2CAP 接続を直接作成する必要はありません。Win32 上のすべての (???) Bluetooth スタックは、Bluetooth HID をサポートしており、ネイティブ Windows HID API を介して HID ストリーム/コントロールへのアクセスを提供します。いいえ (直接) L2CAP は必要ありません! :-)
WinCE には、Bluetooth HID の組み込みサポートもありますが、HID API にアクセスする方法があるかどうかはわかりません。
これが、Brian Peek の wiimore ライブラリの仕組みです。HID API を使用しています。それについての良いことは、その方法ですべての (?) Bluetooth スタックをサポートすることです。それらはそれぞれ、Windows HID API を介して HID デバイスをサポートしますが、L2CAP を直接使用するには、各スタックの API をサポートする必要があります。 .. (それは彼らが持っている場合です!私が見る限り、BlueSoleil には L2CAP API はありません)。
そのため、Win32 では、デバイスとペアリングし、Bluetooth サービス コントロール パネル タブで HID チェックボックスがオンになっていることを確認する必要があります (使用中の Bluetooth スタックに関係なく)。私の 32feet.NET ライブラリでは、デバイスを検出し、HID が有効になっていることを確認できます。
BluetoothDeviceInfo[] list = btCli.DiscoveryDevices();
var deviceInfo = list[n]; // Select the correct device
deviceInfo.SetServiceState(BluetoothService.HumanInterfaceDevice, true);
(これはMSFTとBlueSoleilで動作するはずです。Widcomm AFAIKにはそのためのAPIはありませんが、ペアリングすると自動的に有効になる可能性があります)。
考えられる例外の 1 つのケースは、明らかに一部のデバイスが Bluetooth/HID 仕様に完全に準拠していないことです。PS3 のブルーレイ コントローラーはそのようなものだと言われています。次に、L2CAP 接続を直接試してみたいと思うかもしれませんが、HID に対するスタックのサポートが、同じサービスを提供しようとするサードパーティのアプリケーションを妨害する可能性があります...