【问题标题】:Getting Wireless Network Strength获得无线网络强度
【发布时间】:2012-01-03 13:40:31
【问题描述】:

我在使用 OpenNetCF 2.3 版的 C#、Compact Framework 3.5、Windows Mobile 5 项目中获取无线信号强度时遇到了困难。我的目标是在发送请求之前评估网络访问的强度,因为此设备的网络覆盖范围可能不完整。

在谷歌搜索后,我发现了两个可能的线索。 Microsoft 的一个示例项目使用现在的 AccessPoint 类,该类在 OpenNETCF 2.3 中被标记为已弃用,并且一些建议说在 WirelessNetworkingInterface 类上使用 SignalStrength 属性。从理论上讲,这似乎是一个好主意,但是看起来好像应该返回此类 OpenNETCF.Net.NetworkInformation.WirelessNetworkInterface.GetAllNetworkInterfaces() 而不是返回 INetworkInterface 类的工厂方法不公开 SignalStrength 属性。

有没有人设法使用 OpenNETCF 2.3 评估无线强度? 我不理解这个包的正确用法吗?或者有没有人为这个问题开发了解决方法?

任何指导或帮助都会非常有用。

【问题讨论】:

    标签: c# compact-framework wireless windows-mobile-5.0 opennetcf


    【解决方案1】:

    GetAllNetworkInterfaces() 返回一个INetworkInterface 接口数组,因为您可能(并且经常这样做)在同一设备上具有不同的具体类型。问题是您为无线 NIC 返回的实例类型是什么?它将是NetworkInterfaceWirelessNetworkInterfaceWirelessZeroConfigNetowrkInterface。您可以将接口版本转换为具体类型,然后获取信号强度,前提是它是公开该信息的类型。

    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");
    }               
    

    【讨论】:

    • 非常感谢您的帮助和解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多