0

信号強度が特定のしきい値を超えたときに、名前が事前にわかっている特定のWifiネットワークに接続するための.Netクラスライブラリを作成しています。

パフォーマンスが少しむらがあることを除いて、それはすべて美しく機能します。WlanGetAvailableNetworks()を繰り返し呼び出すポーリングスレッドがあります。このループはうまく機能します-WLanGetAvailableNetworks()は通常10〜20ミリ秒しかかかりません。ただし、WLAN_AVAILALBLE_NETWORK構造体の信号強度属性は、更新に長い時間がかかるようです。信号強度がわかっているエリアに移動すると、更新された値を登録するのに最大100秒かかることがわかりました。

NETSHスポーナーを実装した人からの更新間隔への不可解な参照を見つけました:http: //www.codeproject.com/KB/gadgets/WifiScanner.aspx? msg = 3031431

しかし、この特定の質問に対処している人は誰も見つかりませんでした。ネイティブWifi APIで信号強度やその他のネットワークパラメーターの更新間隔を微調整することは可能ですか?

または、別の役立つ概念が欠けていますか?(私はWifiに関しては完全な初心者です)。

おそらく関連する環境情報:-。Net 3.5-XPとWlanApiのKB修正-C#/ VS 2008(4.0およびVS2010が利用可能)

thanks --
Carl
4

1 に答える 1

2

おっとっと。WLANAPI ドキュメントでこれを見逃していました: WlanScan()! これを WlanGetAvailableNetworks() の前に呼び出して、WlanGetAvailableNetworks() が多かれ少なかれ最新の情報を返すようにします。ドキュメント ( http://msdn.microsoft.com/en-us/library/ms706783(VS.85).aspx ) によると、WlanScan() はすぐに完了し、非同期スキャンを開始します。

経験的に、スキャンが完了するまで次の WlanGetAvailableNetworks() が停止しているように見えます (私のテストでは 3.085 秒、+/- 0.031 秒)。したがって、ドキュメントが示すように、パフォーマンスを低下させる場所でこれを実行したくありません。また、少なくとも XP では、おそらく 3 秒が Wi-Fi 信号チェックの最適な時間分解能です (Vista および 7 バージョンの WLANAPI は、単一ネットワークの WlanScan() をサポートしており、より迅速に完了する可能性があります)。

多かれ少なかれ、問題は解決しました。

于 2010-09-09T20:41:48.267 に答える