2

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

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

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

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

4

1 回答 1

5

GetAllNetworkInterfaces()返回一个接口数组,INetworkInterface因为您可能(并且经常这样做)在同一设备上具有不同的具体类型。问题是您为无线 NIC 返回的实例类型是什么?它将是 a NetworkInterface、 aWirelessNetworkInterface或 a 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");
}               
于 2011-11-22T14:04:38.643 回答