获得无线网络强度

本文关键字:无线网络 | 更新日期: 2023-09-27 18:15:27

我在使用OpenNetCF版本2.3的c#, Compact Framework 3.5, Windows Mobile 5项目中难以获得无线信号强度。我的目标是在发送请求之前评估网络访问的强度,因为该设备的网络覆盖可能不完整。

在谷歌上搜索后,我发现了两个可能的线索。一个来自微软的例子项目,它使用了现在在OpenNETCF 2.3中被标记为弃用的AccessPoint类,以及一些建议说在WirelessNetworkingInterface类上使用SignalStrength属性。这在理论上似乎是一个好主意,但是工厂方法似乎应该返回这个类OpenNETCF.Net.NetworkInformation.WirelessNetworkInterface.GetAllNetworkInterfaces(),而不是返回不暴露SignalStrength属性的INetworkInterface类。

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

获得无线网络强度

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

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