我在使用OpenNetCF 2.3版的C#,Compact Framework 3.5,Windows Mobile 5项目中获得无线信号强度时遇到了困难。我的目标是在发送请求之前评估网络访问的强度,因为此设备的网络覆盖范围可能不完整。
在google周围后,我找到了两个可能的线索。 Microsoft的一个示例项目,它使用现在的AccessPoint
类,在OpenNETCF 2.3中标记为已弃用,以及一些建议说在SignalStrength
类上使用WirelessNetworkingInterface
属性。这似乎是理论上的一个好主意但是工厂方法似乎应该返回此类OpenNETCF.Net.NetworkInformation.WirelessNetworkInterface.GetAllNetworkInterfaces()
而不是返回INetworkInterface
类,它不会公开SignalStrength
属性。
有没有人设法使用OpenNETCF 2.3评估无线强度? 我不明白这个包的正确用法吗?或者有没有人为此问题制定了解决方案?
任何指导或帮助都非常有用。
答案 0 :(得分:5)
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");
}