Повышение надежности беспроводной сети

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

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

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

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


person Klee    schedule 22.11.2011    source источник


Ответы (1)


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");
}               
person ctacke    schedule 22.11.2011
comment
Большое спасибо за помощь и объяснение. - person Klee; 23.11.2011