2009-05-25 12 views
4

Windowsで作成した仮想COMポートを使用してBluetoothデバイスに接続する必要があります。手動ペアリング手順中にポートがすでに作成されていると簡単です。しかし、私は自分のアプリケーションでデバイスの手動ペアリングからユーザーを解放することを望んでいます。私は範囲内のすべてのデバイスを提示し、ユーザーが1つを選択できるようにし、次に選択したデバイスに接続された仮想COMポートを作成したいと思います。私はペアリング手順自体を避けようとしているのではなく、むしろ私のアプリケーションでそれを呼びたいと思います。手動ペアリングなしでWindowsのBluetooth仮想COMポートにアクセスする

私はMicrosoft Bluetooth APIに慣れ始めました。そして、いくつかの疑念が生じました。私はいくつかのユーザーが別の(マイクロソフトの)Bluetoothスタックを使用する場合にどうなるのだろうかと思いましたか?マイクロソフトのAPIは他のBluetoothスタックプロバイダによって実装されなければならない実際のBluetooth APIですか?あるいは、各プロバイダには独自のAPIがあり、マイクロソフトは他の多くのプロバイダの1つにすぎませんか?

答えて

2

貴重なご意見ありがとうございます。これまで私が見つけたことを要約したいと思います。 Microsoft Bluetooth APIはオペレーティングシステムAPIではありません。それに対して書かれた申請は、他のBluetooth stackと正しく協力しません。複数のスタックと協調することを意図したアプリケーションは、いくつかのスタック抽象化層を提供し、それらすべてのために特定のコードをスタックする必要があるようです。他の解決策は、ユーザがBluetoothデバイスの手動ペアリングを可能にし、オペレーティングシステム(例えば、COMポート)内にある。次に、アプリケーションは、そのようなデバイスの標準インターフェースを使用することができます。

+0

あなたの調査結果を共有してくれてありがとう。 – TeamWild

1

私はMicrosoft Bluetooth APIについて話すことはできませんが、モバイルデバイス用にはさらにPCプラットフォーム用のmultiple Bluetooth stacksがあります。

基礎となるAPIはBluetooth Core Specで定義されているため、すべてのスタックが相互作用できる必要があります。実際に相互運用するか、Bluetooth名とロゴを使用することはできません。

ペアリングについては、ピンコードが必要なデフォルトのセキュリティがある場合、デバイスをペアにするのは苦労します。

(近い将来に)Bluetooth規格で新しいセキュリティモデル「secure simple pairing」が導入され、ピンコードを必要としない「ちょうどいい仕事」モードが導入されているので、状況はもっと簡単かもしれません。これは、中間の攻撃の人を除いて、現在のセキュリティより強力です。しかし、PCでこの機能を備えたチップを見るまでには、しばらく時間がかかることがあります。

+0

答えをありがとう。 具体的には、ペアリングを避けようとしているわけではありません。実際には、デバイスがまだペアになっていない場合は、アプリケーションからペアリング手順を開始したいと考えています。インストールされたスタック(可能な場合)に関係なくこれを実行したいと思います。これがWindowsで利用可能なBluetooth APIについて尋ねられた理由です。基本的なスタックとは無関係にAPIを使用することができれば、それは素晴らしいことです。すべてのスタックが独自のAPIを提供していれば、私はそれぞれのAPIに対してプログラムを作成する必要があります... –

1

.NETを使用するように変更できる場合は、 - /私のライブラリ32feet.NETをお勧めします。 明示的なペアリングにはBluetoothSecurity.PairDeviceがあります。我々はまた、例えば、あなたのための仮想ポートを作成することができます。

BluetoothClient cli = new BluetoothClient(); 
    BluetoothDeviceInfo[] list = cli.DiscoverDevices(); 
    BluetoothDeviceInfo selected = GetUserToSelectOne(list); 
    BluetoothSecurity.PairDevice(selected, pin); 
    // Ask Win32 to create a virtual serial port 
    selected.SetServiceState(BluetoothService.SerialPort); 

を私は本当に私はいつも人々が私たちのBluetoothClientクラスを使用して、通常のソケット接続を使用することを示唆しているので、それが自動的に処理する仮想シリアルポートを好きではないが必要であればペアリング要求。

Win32では、Microsoft、Widcomm/Broadcom、BlueSoleilのスタックをサポートしています。 Widcommでは、まだSetServiceStateはサポートされていません。そのAPIは、のリクエストのペアリングに応答するサポートがありません。 BlueSoleilは両方をサポートする必要があります。

簡単なユーザーズガイドは32feet.NET — User’s Guideにあり、すべてのクラスのドキュメントはメインサイトhttp://32feet.netにあります.Widcommのドキュメントは現時点ではcode repositoryです。

+0

ヒントをありがとう。残念ながら、あなたのライブラリで管理されている2つ以上のスタックをサポートする必要があります...しかし、とにかく、別のBluetoothスタックによって提供されるBluetooth APIについての間接的な質問には、間接的に答えました。 。 –