1

以下のこの関数は、システムからWiFi信号を取得します。現在、フォームに「0」が表示されています(私が想定している強い接続を示しています)。会社のネットワーク上にある職場のHPでこれを実行しているマシン。外部WiFiボタンなどがないようです。「0」は真の値を取得していますか、それとも真のワイヤレスデバイスでこれをテストする必要がありますか?

public static int GetSignalStrengthAsInt()
{
    Int32 returnStrength = 0;
    ManagementObjectSearcher searcher = null;
    try
    {
        searcher = new ManagementObjectSearcher( 
            @"root\WMI", 
            @"select Ndis80211ReceivedSignalStrength 
              from MSNdis_80211_ReceivedSignalStrength 
              where active=true");

        // Call the get in order to populate the collection
        ManagementObjectCollection adapterObjects = searcher.Get();

        // Loop though the management object and pull out the signal strength
        foreach ( ManagementObject mo in adapterObjects )
        {
            returnStrength = Convert.ToInt32( 
                mo["Ndis80211ReceivedSignalStrength"].ToString());
            break;
        }
    }
    catch (Exception)
    {
    }
    finally
    {
        if ( searcher != null )
        {
            searcher.Dispose();
        }
    }
    return returnStrength;            
}

現在、returnStrengthはテキストボックスに表示されています。

4

1 に答える 1

0

まず、私はあなたの開発環境を知りません。以下は、経験に基づいた一般的な適応症です。

  • 通常、信号強度は dB 単位または dBm 単位で表されます。

  • dB は信号/ノイズ比に使用されます。適度に良好な信号は、
    少なくとも 18 ~ 20 dB です。

  • dBm は、受信した純粋な電力に使用されます。通常は -20dBm (非常に良い) から -80dBm (非常に悪い) の範囲です。

0 は、デバイスから情報を取得できない場合によく見られます。だから私の推測では、あなたの値は無効です。

于 2014-10-10T16:15:10.487 に答える