Получение силы беспроводной сети - PullRequest
2 голосов
/ 22 ноября 2011

У меня проблемы с получением уровня беспроводного сигнала в C #, Compact Framework 3.5, Windows Mobile 5 с использованием OpenNetCF версии 2.3. Я намерен оценить уровень доступа к сети перед отправкой запросов, поскольку покрытие сети для этого устройства, вероятно, будет неоднородным.

После поисков вокруг я нашел два возможных вывода. Пример проекта от Microsoft, который использует теперь класс AccessPoint, который помечен как устаревший в OpenNETCF 2.3, и некоторые предложения, в которых говорится об использовании свойства SignalStrength в классе WirelessNetworkingInterface Это кажется хорошей идеей в теории, однако фабричный метод, который выглядит так, как будто он должен возвращать этот класс OpenNETCF.Net.NetworkInformation.WirelessNetworkInterface.GetAllNetworkInterfaces(), вместо этого возвращает класс INetworkInterface, который не предоставляет свойства SignalStrength.

Кому-нибудь удалось оценить силу беспроводной связи с помощью OpenNETCF 2.3? Я не понимаю правильное использование этого пакета? Или кто-нибудь разработал решение этой проблемы?

Любое руководство или помощь будут очень полезны.

1 Ответ

5 голосов
/ 22 ноября 2011

GetAllNetworkInterfaces() возвращает массив интерфейсов INetworkInterface, потому что вы можете (и очень часто) иметь разные конкретные типы на одном устройстве. Вопрос в том, какой тип экземпляра вы получили для своего беспроводного сетевого адаптера? Это будет NetworkInterface, WirelessNetworkInterface или WirelessZeroConfigNetowrkInterface. Вы можете привести версию интерфейса к конкретному типу, а затем получить уровень сигнала при условии, что этот тип предоставляет эту информацию.

foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())
{
    var wzc = ni as WirelessZeroConfigNetworkInterface;
    if(wzc != null)
    {
        Debug.Writeline("WZC Signal: " + wzc.SignalStrength.Decibels);
        continue;
    }

    var wni = ni as WirelessNetworkInterface 
    if(wni != null)
    {
        Debug.Writeline("Wireless Signal: " + wni.SignalStrength.Decibels);
        continue;
    }

    Debug.Writeline("No signal info available");
}               
...