17

次の要件にBluetoothを使用できる必要があるアプリケーションがあります。

  1. Bluetoothデバイスからファイルを受信します(同時に最大2台のデバイス)
  2. 範囲内のすべてのBluetoothデバイスを表示する
  3. Bluetoothデバイスにファイルを送信する
  4. Bluetoothデバイスをスキャンし、同時にファイルを転送します

WindowsXPで実行しています。

私はいくつかの周りを見回しましたが、3つのメインスタックがあるようです:

BlueSoleil

BlueSoleilのWebサイトのSDKセクションで、サポートされている接続は1つだけであると記載されているようですが、これは明らかに良くありません。

ウィンドウズ

Bluetoothドングルを1つしかサポートしていないようです。これは、すべての要件を満たすことができないことを意味します。

Widcomm

高価で潜在的にやり過ぎですか?より複雑なAPI?考え?

SDK for C#に関して、Franson Bluetoolsを見ていましたが、誰かがこのAPIを使用しましたか?

ありがとう

4

3 に答える 3

18

最初に免責事項として、私は 32feet.NET ライブラリのメンテナーです。:-)

確認したところ、XP で Microsoft スタック (1 つのドングルを使用) を使用すると、同時に 2 つの OBEX PUT を受信し、デバイスを検出することもできます。これは、32feet.NET の ObexListener クラスと BluetoothClient.DiscoverDevices メソッドを使用しています。OBEX PUT を送信するには、その ObexWebRequest クラスを使用できます。ObexListener で複数の並列接続を行うために、GetContext() メソッドを呼び出す複数のスレッドを用意しました。

思ったより簡単かもしれません...

また、Brecham.Obex ライブラリを使用して Andy Hume の OBEX サーバーでテストしたところ、同時受信も問題なく動作しました。http://32feet.net/files/folders/objectexchange/entry6511.aspxから入手できます。

Widcomm のサポートについて。クライアント側で「不完全」に見えないことを願っています...照会(デバイスの検出)と接続はすべて機能します。ただし、サーバー側にはまだ少し作業が必要であり、Widcomm API が単にサポートしていないものもあります。(プログラムによる認証処理)。

サンプルの問題は何でしたか? コンパイル時または実行時? MSFT スタックまたは Widcomm で? 必要に応じて、http: //32feet.net/forums/37.aspxでフォローアップしてください。

于 2009-07-03T12:09:13.040 に答える
5

私たちが最終的に何をしたかを正確に説明する時が来ました...

2 ドングル なぜ?

  1. ドングルがスキャンを実行している場合、転送速度が大幅に低下します
  2. ドングルは 7 つの同時転送しかサポートできません。スキャンを実行している場合、これは 6 に減少します。すべてを同時に送信、受信、およびスキャンする場合、すべてがひどく遅くなり、チャネルが非常に制限されます。

したがって、1 つのドングルを継続的にスキャンして (デバイスができるだけ早く表示されるように) 実行し、もう 1 つのドングルを転送用に予約するというアイデアがあります。

使用したライブラリ

多くのテストと検討の結果、BT フレームワークの WirelessCommunicationLibrary を選択することになりました。

Widcomm、Windows、BlueSoleil、Toshiba スタックをサポートしています。私たちが必要とするすべてのサーバー側のものをサポートし、十分にサポートされている商用製品であり、エラーなしで完全に動作します.

どのスタック?

うーん、これは複雑な問題です。同時に 2 つのドングルをサポートするスタックはありません。したがって、唯一のオプションは、1 つのドングルを 1 つのスタックで実行し、別のドングルを別のスタックで実行することです。ここで、WCL ライブラリが役に立ちます。

Microsoft - スキャン中にエラーが発生した場合、スタック全体がクラッシュするのが一般的です。これは理想的ではありません。無線デバイスを閉じて再起動する必要があります。時間がかかり、障害が発生しやすくなります。しかし... Microsoft スタックはファイル転送を非常にうまく処理します。

Widcomm - Widcomm スタックは、ファイル転送には向いていません。Widcomm と一緒にインストールされ、アプリから制御を奪おうとするやっかいな小さなアプリがあります。bttray.exe を強制終了することができますが、これは役に立ちますが、転送中にスタックから奇妙な動作が発生します。これは解決できると確信していますが、Windows はスキャンに適していないため、スキャンに Widcomm を使用するのが理にかなっています。

そのため... Widcomm に設定された 1 つのドングルを何度もスキャンし、もう 1 つのドングルを Microsoft に設定して、ファイル転送 (インとアウト) のみを処理するように設定しました。

2 つのドングルを動作させる

同じドングルを 2 つ使用することにしました。それらをまとめて注文し、すべて同じようにストックすることができるので、混乱を減らすことができます。出荷された各デバイスには 2 つの Bluetooth ドングルが必要で、シンプルです。

唯一の問題は、これらが widcomm ドングルであり、Windows スタックに 1 つのドングルが必要なことです。Windows はこれらを Windows ドングルとして認識しないため、Windows スタックに登録しません。つまり... これは、bt.inf ファイルをハックして、Windows 用のドングルを認識させることができます。次に、ドングルの 1 つを Windows ドライバーで実行するようにドライバーを切り替える必要があります。これで完了です。

概要

つまり... 1 つのドングルが常にスキャンし、1 つのドングルが転送を処理し、それぞれが別々のスタックにあり、すべてうまく機能します。これは、Windows で 2 つのドングルをスムーズに動作させる唯一の方法です。より良い提案があれば、投稿してください。

于 2009-11-26T09:44:09.960 に答える
4

これを試してください: 32feet.NET。バージョン 2.4 から、Windows スタックに加えて Widcomm スタックをサポートします。

ところで: 同時に 2 つのドングルを使用する必要があるのはなぜですか? 通常、1 つのドングルで最大 7 台のデバイスを同時に接続できます。

于 2009-06-29T08:59:16.493 に答える