4

Windowsで作成した仮想COMポートを介してBluetoothデバイスに接続する必要があります。手動ペアリング手順でポートがすでに作成されている場合は、簡単です。しかし、私のアプリケーションでは、デバイスの手動ペアリングからユーザーを解放したいと思います。範囲内のすべてのデバイスを表示し、ユーザーが1つを選択できるようにしてから、選択したデバイスに接続する仮想COMポートを作成したいと思います。ペアリング手順自体を回避しようとしているのではなく、アプリケーションで呼び出したいと思っています。

MicrosoftBluetoothAPIに慣れ始めました。そして、いくつかの疑問が生じました。一部のユーザーが(Microsoftとは異なる)Bluetoothスタックを使用するとどうなるのでしょうか。MicrosoftのAPIは実際のBluetoothAPIであり、他のBluetoothスタックプロバイダーによって実装される必要がありますか?むしろ、各プロバイダーには独自のAPIがあり、MicrosoftのAPIは他の多くのプロバイダーの1つにすぎませんか?

4

3 に答える 3

2

皆様、貴重なご意見をありがとうございます。これまでにわかったことをまとめたいと思います。Microsoft Bluetooth API は、オペレーティング システムの API ではありません。それに対して書かれたアプリケーションは、他のBluetooth スタックと正しく連携しません。複数のスタックと連携することを目的としたアプリケーションは、何らかのスタック抽象化レイヤーを提供し、それらすべてに固有のコードをスタックする必要があるようです。もう 1 つの解決策は、ユーザーが Bluetooth デバイスを手動でペアリングできるようにすることです。これにより、最終的に何らかの仮想デバイスが作成されます。オペレーティング システム (例: COM ポート)。その後、アプリケーションはそのようなデバイスの標準インターフェースを使用できます。

于 2009-06-04T06:58:55.527 に答える
1

Microsoft Bluetooth APIについて話すことはできませんが、PCプラットフォームで利用できるBluetoothスタックは複数あります(モバイルデバイスではさらに多く)。

基盤となるAPIはBluetoothCoreSpecによって定義されているため、すべてのスタックが相互作用できる必要があります。実際、相互運用する必要があります。そうしないと、Bluetoothの名前とロゴを使用できません。

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

Bluetooth標準が新しいセキュリティモデルであるセキュアシンプルペアリングを導入したため、(近い)将来はもっと簡単になるかもしれません。これは、PINコードを必要としない「正常に機能する」モードを備えています。これは、中間者攻撃を除いて、現在のセキュリティよりも強力です。ただし、PCでこの機能を備えたチップが表示されるまでにはしばらく時間がかかる場合があります。

于 2009-05-26T07:29:33.263 に答える
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 ドキュメントは、現時点ではコード リポジトリにのみあります。

于 2009-05-26T10:25:42.457 に答える